这到底是怎么回事呀?
2008-12-11 10:07
344 查看
这到底是怎么回事呀? Delphi / Windows SDK/API
http://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 !
http://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 !
相关文章推荐
- 小程序支持打开移动应用到底是怎么回事?
- 音乐中的「强、弱、次强、弱」到底是怎么回事?(转)
- 二进制可执行文件到底是怎么回事?--PE 、ELF、objcopy
- 比特币挖矿,到底是怎么一回事回事?
- IIS到底是怎么回事?
- 从大数据的风水图,来看到底大数据是怎么回事
- 浏览器请求阻塞到底是怎么回事?我们为什么要把静态资源分服务器放置?
- 引用类型到底是怎么回事?
- 鬼压床到底是怎么回事?
- 月活4亿市值仅次于腾讯的美图到底是怎么回事?
- java中字符串池,String池,共享池到底是怎么回事?
- 内存对齐到底是怎么回事?
- c++中的引用到底是怎么回事。
- c++中的引用到底是怎么回事。
- 机器学习中的End-to-End到底是怎么回事?
- Spring 事务 readOnly 到底是怎么回事?
- 内存中的堆与栈到底是怎么回事?
- 小程序支持打开移动应用到底是怎么回事?
- 【iOS】微信小程序打开APP到底是怎么回事?
- 错误:数据提供程序或其他服务返回E_FAIL状态 到底怎么回事呢?