应用TupdateSQL,查了一天贴子了,也没出来结果:((50分)

  • 主题发起人 主题发起人 ssh78
  • 开始时间 开始时间
S

ssh78

Unregistered / Unconfirmed
GUEST, unregistred user!
我用一个 TQuery 来select数据,然后显示到表格中。然后想用TEdit、TCombobox来编辑、
添加、删除数据(当然我的TEdit、Tcombobox早已和TQuery 联系好了),因此,我用了一个
TupdateSql组件,用"添加"“删除”“编辑”等按钮来控制数据更新的提交。首先达到共
识:我已将Tquery的cachedupdate、updateobject设置好了。但是不知道该怎样在TButton
里写代码.
 
是因为分太少了么?我还可以加的,虽然我的分不太多了:(
我是这样写的代码:
procedure TForm1.Button3Click(Sender: TObject);
begin
with query1 do
begin
append;
edit;
parambyname('Ygbh').AsString:=edit1.Text;
....
applyupdates;
query1.Close;
query1.Open;
end;
运行时提示:parameter'Ygbh' not found;
为什么呢?
 
提示是没找到该字段,查看一下吧
 
已经察看了,数据库里确实有这个字段
 
TupdateSql中要生成更新、删除、新增的SQL语句,TQuery不用赋值,仔细看Delphi的
/Demos/Db/CacheDup例子!
 
如果你已经建立了联系(字段与编辑框)
去掉这一行 parambyname('Ygbh').AsString:=edit1.Text;
 
TupdateSql里已经有了sql语句,是双击它产生的。
insert into "ygxx.db"
(Ygbh, Xm, Xmpi, Xb, Bmbh, Gzbh, Gzfgg, Mygg, Cygg, Bwxgg, Bjxgg, Jxgg,
Jyxgg, Whsgg)
values
(:Ygbh, :Xm, :Xmpi, :Xb, :Bmbh, :Gzbh, :Gzfgg, :Mygg, :Cygg, :Bwxgg,
:Bjxgg, :Jxgg, :Jyxgg, :Whsgg)
而我的这些字段的值因为是从TEdit、Tcombobox中得来的,所以才会赋值呀。
我看了demos中的例子,但是因为出现了错误,根本连数据控件都看不到
 
你应该Query1.FieldByName('Ygbh').AsString:=edit1.Text;
 
改成了fieldbyname,不报那个错了,但是:The transaction isolation level must be
dirty read for local databases
 
没有大富翁就Tupdatesql这个东西详细介绍一下么?
 
自己贡献了。希望对后来人有帮助。只是很简单的,深入的希望别人继续。
procedure TForm1.Button3Click(Sender: TObject); //“确定”按钮,用来提交数据。
var
bmbh,gzbh,insertstr,modifystr:string;
i:integer;
begin
bmbh:=combobox2.Text;
i:=pos(' ',bmbh);
bmbh:=copy(bmbh,1,i-1);
gzbh:=combobox3.Text;
i:=pos(' ',gzbh);
gzbh:=copy(gzbh,1,i-1);
case state of //case 中用了一个全局变量state来标识用户已经按了哪个按钮。可以在按哪个按钮后,给state赋相应的值。
1: //用户按了“添加”按钮。
begin
with updatesql1 do
begin
DatabaseName:='protector'; //ygxx只是其中一个表。
insertstr:='insert into ygxx.db (ygbh,xm,xmpi,xb,bmbh,gzbh) values("'+edit1.Text+'","'+edit2.Text+'","'+edit3.Text+'","'+combobox1.Text+'","'+bmbh+'","'+gzbh+'")';
insertSQL.Add(insertstr);
ExecSQL(ukinsert);
end;
with query1 do //刷新TQuery以便DBGrid中的数据可以刷新。
begin
close;
open;
end;
button1.Enabled:=true; //控制其他几个按钮。
button2.Enabled:=true;
button3.Enabled:=false;
end;
2: //用户之前按的是“修改”按钮。这一段我还没有调试好。先贴出来吧
begin
with updatesql1 do
begin
databasename:='protector';
modifystr:='update ygxx set ygbh="'+edit1.Text+'"';
showmessage(modifystr);
ModifySQL.Add(modifystr);
ExecSQL(ukmodify);
end;
end;
end;
end;
 
在updateSql的INSERTSQL,MODIFYSQL,和DELTESQL里编写相应的代码,在编辑按钮中写如
下代码:
query1.edit;
在删除按钮中写如下代码:
query1.Delete;
;
在增加按钮中写如下代码:

query1.Insert;
在确定按钮中编写如下
query1.ApplyUpdates;
query1.CommitUpdates;
 
奥,原来如此简单阿
 
接受答案了.
 
后退
顶部