select出来的数据有两条,那就是一个数据集了, insert语句只执行一次,插入其中一条数据分两个SQL写的话,是这样 adoquery1.sql.clear; adoquery1.sql.add('Select Pat_ID,Counter from DataSet.db where Pat_ID=:a'); adoquery1.Parameters.ParamByName('a').Value:=trim(temp_bh); adoquery1.open; if adoquery1.recordcount > 0 then begin with adoquery1 do begin first; while NOT EOF do begin adoquery2.sql.clear; adoquery2.sql.add('insert into temp_meas (Pat_ID,Counter) values (:a,:b)'); adoquery1.Parameters.ParamByName('a').Value:=adoquery1.fields[0].value; adoquery1.Parameters.ParamByName('b').Value:=adoquery1.fields[1].value next; end; end; end;
cxreal(夜晚的猪),按你的方法试过,出现错误:Type mismatch in expression. 我反复检查程序,不知道问题在哪,相关代码见下面,query1.Close; query1.sql.clear; query1.sql.add('Select Pat_ID,Counter,StartDate,TotalCount,ErrorCount from DataSet.db where Pat_ID=:a'); query1.ParamByName('a').Value:=trim(temp_bh); query1.open;if query1.recordcount > 0 then begin // with query1 do // begin query1.first; while NOT query1.EOF do begin // query2.Close; query2.sql.clear; query2.sql.add('insert into temp_meas (Pat_ID,Counter,StartDate,TotalCount,ErrorCount) values(:a,:b,:c,:d,:e)'); query2.ParamByName('a').Value:=query1.fields[0].value; query2.ParamByName('b').Value:=query1.fields[1].value; query2.ParamByName('c').Value:=query1.fields[2].value; query2.ParamByName('d').Value:=query1.fields[3].value; query2.ParamByName('e').Value:=query1.fields[4].value; query2.ExecSQL; query1.next; end; //while // end; //with end; //if 万分感谢大家!
http://expert.csdn.net/Expert/topic/1637/1637307.xml?temp=.832287
你用的字符串类型可能有空格
insert语句只执行一次,插入其中一条数据分两个SQL写的话,是这样
adoquery1.sql.clear;
adoquery1.sql.add('Select Pat_ID,Counter from DataSet.db where Pat_ID=:a');
adoquery1.Parameters.ParamByName('a').Value:=trim(temp_bh);
adoquery1.open;
if adoquery1.recordcount > 0 then
begin
with adoquery1 do
begin
first;
while NOT EOF do
begin
adoquery2.sql.clear;
adoquery2.sql.add('insert into temp_meas (Pat_ID,Counter) values
(:a,:b)');
adoquery1.Parameters.ParamByName('a').Value:=adoquery1.fields[0].value;
adoquery1.Parameters.ParamByName('b').Value:=adoquery1.fields[1].value
next;
end;
end;
end;
我反复检查程序,不知道问题在哪,相关代码见下面,query1.Close;
query1.sql.clear;
query1.sql.add('Select Pat_ID,Counter,StartDate,TotalCount,ErrorCount from DataSet.db where Pat_ID=:a');
query1.ParamByName('a').Value:=trim(temp_bh);
query1.open;if query1.recordcount > 0 then
begin
// with query1 do
// begin query1.first;
while NOT query1.EOF do
begin
// query2.Close;
query2.sql.clear;
query2.sql.add('insert into temp_meas (Pat_ID,Counter,StartDate,TotalCount,ErrorCount) values(:a,:b,:c,:d,:e)'); query2.ParamByName('a').Value:=query1.fields[0].value;
query2.ParamByName('b').Value:=query1.fields[1].value;
query2.ParamByName('c').Value:=query1.fields[2].value;
query2.ParamByName('d').Value:=query1.fields[3].value;
query2.ParamByName('e').Value:=query1.fields[4].value;
query2.ExecSQL;
query1.next;
end; //while
// end; //with
end; //if
万分感谢大家!
先改一下试试!
query1.ParamByName('a').Value:=trim(temp_bh);
改为query1.ParamByName('a').asstring:=trim(temp_bh);
.value都换成asstring
谢谢大家!