DELPHI当前提供程序不支持从单一执行返回多个记录集
ADOQuery4.Close;ADOQuery4.SQL.Clear;ADOQuery4.SQL.Add('insertinto开设的房台(编号,房间名称,餐饮部门,服...
ADOQuery4.Close;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('insert into 开设的房台 (编号,房间名称,餐饮部门,服务费,服务员,开房时间)');
ADOQuery4.SQL.Add(' values (:BH,:FJMC,:CYBM,:FWF,:FWY,:KFSJ)');
ADOQuery4.Parameters.ParamByName('BH').Value:=DBText1.Caption;
ADOQuery4.Parameters.ParamByName('FJMC').Value:=DBText2.Caption;
ADOQuery4.Parameters.ParamByName('CYBM').Value:=DBText4.Caption;
ADOQuery4.Parameters.ParamByName('FWF').Value:=DBText5.Caption;
ADOQuery4.Parameters.ParamByName('FWY').Value:=LJ;
//LJ是lJ:=LJ+ListBox1.Items.Strings[ListBox1.ItemIndex]
//listbox里面的值是用另一个adoquwey5查询字段循环出来的;
ADOQuery4.Parameters.ParamByName('KFSJ').Value:=Datetimetostr(now());
ADOQuery4.ExecSQL;
执行后 表的确有插入记录 但我的DBGrid却显示空白了 连原来的都没了 我去问别人跟我说后面加:
adoquery4.Active:=true; 加了就出错了 展开
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('insert into 开设的房台 (编号,房间名称,餐饮部门,服务费,服务员,开房时间)');
ADOQuery4.SQL.Add(' values (:BH,:FJMC,:CYBM,:FWF,:FWY,:KFSJ)');
ADOQuery4.Parameters.ParamByName('BH').Value:=DBText1.Caption;
ADOQuery4.Parameters.ParamByName('FJMC').Value:=DBText2.Caption;
ADOQuery4.Parameters.ParamByName('CYBM').Value:=DBText4.Caption;
ADOQuery4.Parameters.ParamByName('FWF').Value:=DBText5.Caption;
ADOQuery4.Parameters.ParamByName('FWY').Value:=LJ;
//LJ是lJ:=LJ+ListBox1.Items.Strings[ListBox1.ItemIndex]
//listbox里面的值是用另一个adoquwey5查询字段循环出来的;
ADOQuery4.Parameters.ParamByName('KFSJ').Value:=Datetimetostr(now());
ADOQuery4.ExecSQL;
执行后 表的确有插入记录 但我的DBGrid却显示空白了 连原来的都没了 我去问别人跟我说后面加:
adoquery4.Active:=true; 加了就出错了 展开
3个回答
展开全部
这是因为你的SQL语句返回了多个数据集。检查一下你的SQL。
例如SQL为: select * from a select * from b
返回了两个数据集,就会报上面的错误
那你可以动态生成一个ADOQuery 来替换ADOQuery4.因为dbgrid只是ADOQuery4的表现控件,你用ADOQuery4来插入数据了,就没有数据集了。
ADOQuery:= TADOQuery.Create(nil);
try
//执行你的代码
finally
ADOQuery.Free;
ADOQuery4.refresh; //最后别忘了刷新ADOQuery4
end;
例如SQL为: select * from a select * from b
返回了两个数据集,就会报上面的错误
那你可以动态生成一个ADOQuery 来替换ADOQuery4.因为dbgrid只是ADOQuery4的表现控件,你用ADOQuery4来插入数据了,就没有数据集了。
ADOQuery:= TADOQuery.Create(nil);
try
//执行你的代码
finally
ADOQuery.Free;
ADOQuery4.refresh; //最后别忘了刷新ADOQuery4
end;
展开全部
一般,用于写数据记录的Query,跟用于显示数据到DBGrid中的Query,两个Query是独立的。
当用写记录的Query执行完Insert操作后,用于显示数据的Query就执行一下Refresh过程,这样就能刷新出新的数据。
当用写记录的Query执行完Insert操作后,用于显示数据的Query就执行一下Refresh过程,这样就能刷新出新的数据。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是ADO的缺陷,当使用oracle的with语句时就会发生此错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询