如何修改TQuery查询的结果?(200分)

  • 主题发起人 主题发起人 Jacky Lee
  • 开始时间 开始时间
J

Jacky Lee

Unregistered / Unconfirmed
GUEST, unregistred user!

数据库是Oracle数据库服务器,用TDatabase连接.

TQuery查询的结果用TDBEdit来显示,后修改查询得出的结果.

TQuery的RequestLive设置为True, 但此时查询系统给出信息:
Table or View does not exist.

不知为什么.

另外,我用TEdit来输入要插入的记录,系统给出信息:
Project Project1.exe raised exception
class EDBEngineError with message 'Capability not supported.'.

请大家多多帮助,这是我的毕业论文,非常着急,非常感谢.

越详细越好. 祝大家一切都好.


 
已答问题中有,如果看了以后还不明白,找分坛主王寒松.
He is an expert in this question.
 
答案不够明确
 
如果返回的不是数据集,而只是一条记录(用DBEdit显示),再放一个Query,
用Update语句就可以.简单一点.
插入一条记录,用Insert语句,
>越详细越好
这两个语句知道吗?
最好把你Query里的SQL贴出来.


 
我想是不是你的Query的SQL语句有误,可能参考了一个并不存在的表(笔误?)
 
我想你还是把一些代码贴出来看看好些。
 

{ B_Modify表示查询的结果是否可被修改. }
if B_Modify.Enabled=True
then Query1.RequestLive:=True
else Query1.RequestLive:=False;

{ E_Province_code.Text是用户输入的查询条件. }
{ DBEdit1,DBEdit2对应相应的Province_code和Province_name字段. }
if (E_Province_code.Text<>'')
then
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Select Province_code, Province_name');
SQL.Add('From province_t');
SQL.Add('Where (Province_code=:Var0)');
ParamByName('Var0').asstring:=E_Province_code.Text;
Prepare;
Open;


{ 如果查询的结果可被修改的话,执行Query1.Edit进行修改. }
if (B_Modify.Enabled=True)
then Query1.Edit;

end;


希望朋友们能该处详细的代码!!! 万分感谢!!!
 
if (E_Province_code.Text<>'') then
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Select Province_code, Province_name');
SQL.Add('From province_t');
SQL.Add('Where (Province_code=:Var0)');
ParamByName('Var0').asstring:=E_Province_code.Text;
Prepare;
Open;
end;
DBEdit1.SetFocus;
此时DBEdit1,DBEdit2应该可以修改,简单一点的办法:再放一个按钮,确认修改
另外用一个Query,写Update语句更新.
 
带有WHRER条件的SQL语句返回的记录集不能修改.
除非REQUESTLIVE:=TRUE, 并且CACHEUPDATE:=TRUE
修改完后还要Qurey1.applyupdate;
Qurey1.commitupdate;
这样应该没问题了.
 
按liwei说的,还要用一个UpdateSQL
如果这样做,建议看一下已答问题,对如何使用UpdateSQL有不少完整的回答.
在分坛主王寒松这个名字上按一下,他所答的问题全部显示,仔细看看.
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部