实现一个程序,把文本中的数据读入listbox中,如果该项lotissue(主键)在数据库中没有,则读入,如果有,则跳过,数据库中两列:lotissue,lotcode.我的代码数据读不进去,求指点!
代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
i, j: integer;
str, temp, lotissues, lotcodes: string;
begin
for i:= 0 to listbox1.Count-1 do
begin
str := listbox1.Items.Strings[i];
temp := trim(str);
lotissues := copy(temp,1,7);
lotcodes := stuffstring(temp,1,7,'');
if length(lotissues)=0 then
exit;
if adoquery1.Locate('lotissue',lotissues,[loCaseInsensitive]) then
begin
// if i=0 then
// showmessage('期号是'+lotissue+#13+'开奖结果是'+lotcode);
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into lot3D(lotissue,lotcode)');
adoquery1.SQL.Add('values(' + quotedstr(lotissues) + ',' + quotedstr(lotcodes) + ')');
adoquery1.ExecSQL;
end
else
begin
showmessage(lotissues+' '+lotcodes);
exit;
end;
end;
end;
代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
i, j: integer;
str, temp, lotissues, lotcodes: string;
begin
for i:= 0 to listbox1.Count-1 do
begin
str := listbox1.Items.Strings[i];
temp := trim(str);
lotissues := copy(temp,1,7);
lotcodes := stuffstring(temp,1,7,'');
if length(lotissues)=0 then
exit;
if adoquery1.Locate('lotissue',lotissues,[loCaseInsensitive]) then
begin
// if i=0 then
// showmessage('期号是'+lotissue+#13+'开奖结果是'+lotcode);
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into lot3D(lotissue,lotcode)');
adoquery1.SQL.Add('values(' + quotedstr(lotissues) + ',' + quotedstr(lotcodes) + ')');
adoquery1.ExecSQL;
end
else
begin
showmessage(lotissues+' '+lotcodes);
exit;
end;
end;
end;
begin
// if i=0 then
// showmessage('期号是'+lotissue+#13+'开奖结果是'+lotcode);
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into lot3D(lotissue,lotcode)');
adoquery1.SQL.Add('values(' + quotedstr(lotissues) + ',' + quotedstr(lotcodes) + ')');
adoquery1.ExecSQL;
end
循环中你已经改变了adoquery1的sql了,adoquery1中已经没有原始数据了,你在查找,还能查得到吗
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into lot3D(lotissue,lotcode)');
adoquery1.SQL.Add('values(' + quotedstr(lotissues) + ',' + quotedstr(lotcodes) + ')');
adoquery1.ExecSQL;
同意,把adoquery1换个数据集来操作
adoquery1.Open;
if adoquery1.Locate('lotissue',lotissues,[loCaseInsensitive]) then
begin
showmessage('期号是'+lotissues+#13+'开奖结果是'+lotcodes);
end
else
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into lot3D(lotissue,lotcode)');
adoquery1.SQL.Add('values(' + quotedstr(lotissues) + ',' + quotedstr(lotcodes) + ')');
//adoquery1.open;
adoquery1.ExecSQL;
end;
如果数据量比较大,你每次关闭,打开数据集都要用掉不少时间。if adoquery1.Locate('lotissue',lotissues,[loCaseInsensitive]) then
begin
showmessage('期号是'+lotissues+#13+'开奖结果是'+lotcodes);
end
else
begin
adoquery2.Close; //换个数据集来操作,不行么?
adoquery2.SQL.Clear;
adoquery2.SQL.Add('insert into lot3D(lotissue,lotcode)');
adoquery2.SQL.Add('values(' + quotedstr(lotissues) + ',' + quotedstr(lotcodes) + ')');
//adoquery1.open;
adoquery2.ExecSQL;
end;