当在数据库里增加或者删除记录时,怎么老是出现这样的错误呀?
错误提示为: 'Query2: Cannot modify a read-only dataset'
'Query1:Cannot perform this operation on a close dataset'请问这是为什么呀?
我明明是已经打开数据库了,并且把数据库设为编辑状态!!
可是就是出现这样的错误!!!大家帮帮忙呀?谢谢了!!!
错误提示为: 'Query2: Cannot modify a read-only dataset'
'Query1:Cannot perform this operation on a close dataset'请问这是为什么呀?
我明明是已经打开数据库了,并且把数据库设为编辑状态!!
可是就是出现这样的错误!!!大家帮帮忙呀?谢谢了!!!
解决方案 »
- 在一个事件下,修改二个注册表[rootkey不同]如何写啊?
- 软件定价问题,大家都来议议!
- 如何实现将光标置在edit1中的文本后?
- 我要更新一个表的所有记录,为什么进入了死循环(在线等待中)
- 各位高手看过来,是不是Delphi的 bug?
- MyBase问题
- 无法找到动态链接库rtl60.bpl于指定的目录(以下是几个目录)
- 我在win2000 server下编的数据库程序,只能在win2000下运行.....
- 为什么我用socketconnection连接的三层结构,连接速度那么慢。
- 求教:如何往IE和NC中嵌入我自己的工具条?
- 申请 网络模块斑竹一职 (4)
- excel 两列相乘 然后删除这两列,如何保证相乘结果不变
if RadioButton3.Checked = true then //按年级删除!
begin
if edit3.Text = '' then
begin
showmessage('请输入年级名称!') ;
abort ;
end
else
begin
query1.SQL.Add(' where s_grade = :para_s_grade') ;
query1.ParamByName('para_s_grade').AsString := edit3.Text ;
query1.Open ;
if query1.RecordCount < 1 then
begin
showmessage('没有存在该年级!') ;
abort ;
end
else
begin
while Not query1.Eof do
begin
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 ;
query2.Edit ;
if query2.RecordCount >= 1 then
begin
query2.Edit ;
query2.FieldByName('s_no').AsString := '' ;
query2.Post ;
end ;
query1.Next ;
end ;
query1.SQL.Clear ;
query1.Edit ;
query1.SQL.Add('Delete from student where s_grade = :para_s_grade') ;
query1.ParamByName('para_s_grade').AsString := edit3.Text ;
query1.ExecSQL ;
end ;
end ;
end ;
procedure TAdmin_Operation_Form_Add.Button1Click(Sender: TObject);
begin
if edit1.Text = '' then
begin
showmessage('用户帐号不能为空!') ;
abort ;
end ;
if edit2.Text = '' then
begin
showmessage('用户密码不能为空!') ;
abort ;
end ;
query2.SQL.Add(' where user_no = :para_user_no') ;
query2.ParamByName('para_user_no').AsString := edit1.Text ;
query2.Open ;
if query2.RecordCount >= 1 then
begin
showmessage('该用户已经存在!') ;
abort ;
end
else
begin
query2.Edit ;
query2.AppendRecord([edit1.Text , edit2.Text]);
// query2.SQL.Add('insert into user values //用insert语句怎么用呀???
//( :para_user_no , :para_user_password)') ; //象我这样用对吗?
// query2.ParamByName('para_user_no').AsString := edit1.Text ;
// query2.ParamByName('para_user_password').AsString := edit2.Text ;
end ;
end ;
query1还没有关闭就清空SQL?
清空了SQL又query1.Edit?
紧接着又query1.SQL.Add('Delete ……);
query1不是这样用的,执行SQL语句和编辑数据集不能搅在一起。
query1.SQL.Clear ;
query1.Edit ;
query1.SQL.Add('Delete from student where s_grade = :para_s_grade') ;
query1.ParamByName('para_s_grade').AsString := edit3.Text ;
query1.ExecSQL ;
end ;
end ;
end ;
就这样用!
再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 ;你看你一直open啊open,连个close都没