如何从一个表向另一个表"成批拷贝记录",用的是ACCESS!
而不用循环语句,是否可以弄个存储过程?我现在用的是这样的:
Sum:=0;
with ADOTable1 do
begin
First;
while not eof do
begin
Sum:=Sum+{ADOTable1.FieldByName('GoodsSum').AsFloat+} FieldByName('UnitPrice').AsFloat*FieldByName('Quantity').AsInteger;
//将明细表的金额累加到主表的金额字段
Str:='Insert into BillsDetail (BillNo,CreateDate,'+
'EmployeeID,ClientID,GoodsID,GoodsName,GoodsUnit,Quantity,UnitPrice,GoodsSum,delFlag) Values(';
Str:=Str+'"'+ ls_tkdh+'",' ; //单号
Str:=Str+'"'+ datee+'",' ; //日期
Str:=Str+'"'+ '01'+'",' ; //操作员
Str:=Str+'"'+ 'Client'+'",' ; //所属客户编号
Str:=Str+'"'+ ADOTable1.FieldByName('GoodsID').AsString+'",' ; //货物编号
Str:=Str+'"'+ VartoStr(ADOTable1.FieldByName('GoodsName1').AsString)+'",' ; //商品名
Str:=Str+'"'+ VartoStr(ADOTable1.FieldByName('GoodsUnit').AsString)+'",' ; //单位
Str:=Str+ VartoStr(ADOTable1.FieldByName('Quantity').AsInteger)+',' ; //数量
Str:=Str+ VarToStr(ADOTable1.FieldByName('UnitPrice').AsFloat)+',' ; //单价
Str:=Str+ VarToStr(FieldByName('GoodsSum').AsFloat)+','; //本行的金额
Str:=Str+'"'+ ADOTable1.FieldByName('delFlag').AsString+'")' ; //标志
ShowMessage(str);
try
with ADOCommand1 do
begin
Connection :=ADOConnection1;
CommandText := Str;
CommandType := cmdText;
//ADODataSet1.Recordset :=
Execute;
end;
//ls_tkdh:=ADODataSet1.Recordset.Fields[0].Value; //取RecordSet中记录的方法
except
on E: Exception do
begin
ShowMessage(E.Message);
end;
end; Next;
end;
end;
而不用循环语句,是否可以弄个存储过程?我现在用的是这样的:
Sum:=0;
with ADOTable1 do
begin
First;
while not eof do
begin
Sum:=Sum+{ADOTable1.FieldByName('GoodsSum').AsFloat+} FieldByName('UnitPrice').AsFloat*FieldByName('Quantity').AsInteger;
//将明细表的金额累加到主表的金额字段
Str:='Insert into BillsDetail (BillNo,CreateDate,'+
'EmployeeID,ClientID,GoodsID,GoodsName,GoodsUnit,Quantity,UnitPrice,GoodsSum,delFlag) Values(';
Str:=Str+'"'+ ls_tkdh+'",' ; //单号
Str:=Str+'"'+ datee+'",' ; //日期
Str:=Str+'"'+ '01'+'",' ; //操作员
Str:=Str+'"'+ 'Client'+'",' ; //所属客户编号
Str:=Str+'"'+ ADOTable1.FieldByName('GoodsID').AsString+'",' ; //货物编号
Str:=Str+'"'+ VartoStr(ADOTable1.FieldByName('GoodsName1').AsString)+'",' ; //商品名
Str:=Str+'"'+ VartoStr(ADOTable1.FieldByName('GoodsUnit').AsString)+'",' ; //单位
Str:=Str+ VartoStr(ADOTable1.FieldByName('Quantity').AsInteger)+',' ; //数量
Str:=Str+ VarToStr(ADOTable1.FieldByName('UnitPrice').AsFloat)+',' ; //单价
Str:=Str+ VarToStr(FieldByName('GoodsSum').AsFloat)+','; //本行的金额
Str:=Str+'"'+ ADOTable1.FieldByName('delFlag').AsString+'")' ; //标志
ShowMessage(str);
try
with ADOCommand1 do
begin
Connection :=ADOConnection1;
CommandText := Str;
CommandType := cmdText;
//ADODataSet1.Recordset :=
Execute;
end;
//ls_tkdh:=ADODataSet1.Recordset.Fields[0].Value; //取RecordSet中记录的方法
except
on E: Exception do
begin
ShowMessage(E.Message);
end;
end; Next;
end;
end;
解决方案 »
- 水晶报表的问题?
- 如何将一个treeview中某个结点中的文字内容拖到一个memo中?
- 如何在c/s结构中在client中连接一个远端的数据库,service又是怎么样呢?
- 查询问题------------------再线等
- 可以让我看一看如此之类的代码吗?谢谢:)
- 请问有谁知道在Delphi中怎样作不可视的ActiveX控件呀
- 一个关于stringgrid的菜鸟问题!!!!!!
- BDE连接选项 enable BCD 是什么意思?
- 关于程序安装过程中的一些问题,有经验的请进>>>>>>>>>>>>>>>>>>
- 怎样控制不保存空记录
- 求助:控件就是一个文件(delphi source file),这样的控件怎么安装?谢谢!
- 杂牌军提问:不想搞成控制台程序,但同时又不想用MainForm,可以吗?
同一個Access用SQL就好了.
var
ssql1,insertsql:string;
begin
ssql1 := 'Select * from ssinf';
with Adoquery1 do
begin
Close;
SQL.Text := ssql1;
Open;
first;
while not Eof do
begin
ADOQuery2.Append;
ADOQuery2.FieldByName('Name').AsString := FieldByName('Name').AsString;
ADOQuery2.Post;
end;
end;
end;
SELECT [source.]field1[, field2[, ...]
FROM tableexpression看看ACCESS中的幫助信息