100分,大哥们都近来帮忙解决我的难题。。。。
小弟我自学Delphi,刚上手,下面的问题我琢磨不出来了。
有两个Table: T_Table1(ADOQuery1)和T_Table2(ADOQuery2),DBGridEh1,btnShow,btnSave
T_Table1的字段:name depart age salary
T_Table2的字段:name depart age salary fee(支出费用,货币格式)
我的目的:点击show按钮,把T_Table1的信息只显示在DBGridEh1中,不保存进T_Table2,
----------------------------------------
|name | depart | age | salary | fee |
|————————————————————-
| | | | | |
然后在fee字段里敲入数据,再点保存按钮,此时再把DBGridEh1中的数据保存进T_Table2中。
我的代码是这样的:
procedure TFrom.btnShowClick(Sender: TObject);
begin
//打开ADOQuery1(省略);
//打开ADOQuery2
with ADOQuery2 do
begin
Append;
FieldByName('name').asstring:=ADOQuery1.FieldByName('name').asstring;
FieldByName('depart').asstring:=ADOQuery1.FieldByName('depart').asstring;
FieldByName('age').asstring:=ADOQuery1.FieldByName('age').asstring;
FieldByName('salary').asstring:=ADOQuery1.FieldByName('salary').asstring;
Post;
end;
end;
procedure TFrom.btnSaveClick(Sender: TObject);
begin
//打开ADOQuery1(省略);
//打开ADOQuery2
with ADOQuery2 do
begin
Append;
FieldByName('name').asstring:=ADOQuery1.FieldByName('name').asstring;
FieldByName('depart').asstring:=ADOQuery1.FieldByName('depart').asstring;
FieldByName('age').asstring:=ADOQuery1.FieldByName('age').asstring;
FieldByName('salary').asstring:=ADOQuery1.FieldByName('salary').asstring;
FieldByName('fee').asstring:=DBGridEh1.Columns[4];//把输入的fee存进T_Table2
Post;
end;
end;
1.结果FieldByName('fee').asstring:=DBGridEh1.Columns[4];报错,
2.屏蔽掉FieldByName('fee').asstring:=DBGridEh1.Columns[4];这句后,程序通过,但保存的时候
fee字段保存不了,而且在DBGridEh1中出现两行同样的数据。
请问各位师兄,如何解决???是不是我的方法错了??有更优化的代码更好。谢谢