这到底是怎么回事呀? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061221085732195.html
怎么我写了一段程序,删除满足条件的记录!
怎么运行起来老是提示: Table is read only !
我已经把RequestLive属性设计有True ;怎么回事!!!
哪位大虾帮下忙!!非常感谢!!!
下面是程序的一小段代码:
//按栋删除学生!
if RadioButton6.Checked = true then
begin
if edit6.Text = '' then
begin
showmessage('请输入栋号!') ;
abort ;
end ;
i := 0 ;
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('select * from building , house , bed') ;
query1.SQL.Add(' where building.building_no = house.building_no AND house.house_no = bed.house_no ') ;
query1.SQL.Add(' AND building.building_no = :para_building_no') ;
query1.ParamByName('para_building_no').AsString := trim(edit6.Text) ;
query1.Open ;
if query1.RecordCount >= 1 then
begin
while Not query1.Eof do
begin
if query1.FieldByName('s_no').AsString <> '' then
begin
s_no[i] := query1.fieldByName('s_no').AsString ;
i := i + 1 ;
query2.Close ;
query2.SQL.Clear ;
query2.SQL.Add('select * from bed where s_no = :para_s_no') ;
query2.ParamByName('para_s_no').AsString := query1.fieldByName('s_no').AsString ;
query2.Open ;
if query2.RecordCount >= 1 then
begin
query2.Edit ;
query2.FieldByName('s_no').AsString := '' ;
query2.FieldByName('bed_state').AsString := '不到' ;
query2.Post ;
end ;
end ;
query1.Next ;
end ;
i := i - 1 ;
while i >= 0 do
begin
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('select * from student where s_no = :para_s_no') ;
query1.ParamByName('para_s_no').AsString := s_no[i] ;
query1.Open ;
if query2.RecordCount >= 1 then
begin
query1.Edit ;
query1.Delete ;
query1.Post ;
end ;
i := i - 1 ;
end ;
showmessage('删除操作成功!共删除' + inttostr(i+1) + '条记录!') ;
end
else
showmessage(edit6.text + '栋不存在!') ;
end ;
query1.Edit ;
query1.Delete ;
query1.Post ;
Delete 后不用POST
谢谢!
但是还是出现同样的错误!!!
奇怪,到底是哪里出现的问题?
真是找不出??? 哪位大峡帮下???急呀!!!
query的readonly 的属性设为false看看
query有readonly属性吗?
还是不行!
但是还是出现同样的错误!!!
奇怪,到底是哪里出现的问题?
真是找不出??? 哪位大峡帮下???急呀!!!
你的数据库是只读的吧?
或者连接数据的用户名没有权限删除这个表.
应该不是这的原因!
我按照别的(比如说按照学号)就可以删除,所以不是你所说的那个原因!!!
真的不知道是什么缘故???
??
怀疑是query1中的语句得到的视图,在你删除它中记录时,无法判断该删除的记录,所以会提示说只读的,你换一下方法,将你要删除的表放到query1中,其他的字段另想办法吧
怎么还是不行呀?
这是怎么回事呀?真搞不懂!!!
建议你的删除语句也用SQL语句写,这样就可以不必理会数据集的状态了。
我用了SQL语句写了,还是不行!!
哎!这是咋的?
如果用SQL语句写了都不行,应该是数据库自身的原因。
还是没有解决????
query1.RequestLive 设置为true !