我想向数据库中插入一个值,不过有个字段,有多个值,所以要插入N次在行,我将插入的SQL语句放到循环体中,总是报COMMANDTEXT RESULT 无反回值,这是什么问题.
帮忙改一下,哈哈
procedure Tlendbookf.BitBtn1Click(Sender: TObject);
var
query : TADOQuery;
i : integer;
str : array of string;
begin
try
query := TADOQuery.Create(self);
query.Connection := dm.ADOConnection1;
for i := 0 to listbox1.items.count - 1 do
begin query.SQL.Add('select id from book_info where name ='''+listbox1.Items.Strings[i]+'''');
query.Open;
SetLength(str,listbox1.items.count);
if query.RecordCount=1 then
str[i]:= query.FieldValues['id'];
query.Close;
end; for i:=low(str) to HIGH(str) do begin
showmessage(str[0]);
query.SQL.Clear;
query.SQL.Add('insert into lend_book(cardid,id,lenddate,state) values(:cardid,:id,:lenddate,:state)');
query.Parameters.ParamByName('cardid').Value := Edit1.Text;
query.Parameters.ParamByName('id').Value := str[0];
query.Parameters.ParamByName('lenddate').Value := LeftStr(datetimetostr(now),pos(' ',datetimetostr(now)));
query.Parameters.ParamByName('state').Value := 1;
query.Open;
query.Close;
end;
ListBox3.Items.Clear ;
ListBox1.Items.Clear;
showmessage('成功完成借书工作!'); except
showmessage('借书失败!');
end;
end;
帮忙改一下,哈哈
procedure Tlendbookf.BitBtn1Click(Sender: TObject);
var
query : TADOQuery;
i : integer;
str : array of string;
begin
try
query := TADOQuery.Create(self);
query.Connection := dm.ADOConnection1;
for i := 0 to listbox1.items.count - 1 do
begin query.SQL.Add('select id from book_info where name ='''+listbox1.Items.Strings[i]+'''');
query.Open;
SetLength(str,listbox1.items.count);
if query.RecordCount=1 then
str[i]:= query.FieldValues['id'];
query.Close;
end; for i:=low(str) to HIGH(str) do begin
showmessage(str[0]);
query.SQL.Clear;
query.SQL.Add('insert into lend_book(cardid,id,lenddate,state) values(:cardid,:id,:lenddate,:state)');
query.Parameters.ParamByName('cardid').Value := Edit1.Text;
query.Parameters.ParamByName('id').Value := str[0];
query.Parameters.ParamByName('lenddate').Value := LeftStr(datetimetostr(now),pos(' ',datetimetostr(now)));
query.Parameters.ParamByName('state').Value := 1;
query.Open;
query.Close;
end;
ListBox3.Items.Clear ;
ListBox1.Items.Clear;
showmessage('成功完成借书工作!'); except
showmessage('借书失败!');
end;
end;
query.Parameters.ParamByName('cardid').Value := Edit1.Text;
query.Parameters.ParamByName('id').Value := str[0];
query.Parameters.ParamByName('lenddate').Value := LeftStr(datetimetostr(now),pos(' ',datetimetostr(now)));
query.Parameters.ParamByName('state').Value := 1;
query.Open;
query.Close;
end;{
query.Open; 這句錯了換成這個就行了。。 query.ExecSQL }
for i := 0 to listbox1.items.count - 1 do
begin
Query.SQL.Clear; //加上这句
query.SQL.Add('select id from book_info where name ='''+listbox1.Items.Strings[i]+'''');
var
sSql:string;
i: integer;
begin
sSql:='begin';
for i to XXX do
begin
sSql:= sSql+ 'insert into TableName Value .....'
end;
sSql:= sSql+ 'commit;end;';
end;
清晰又不易出错。
var
sSql:string;
i: integer;
begin
sSql:='';
for i to XXX do
begin
sSql:= sSql+ 'insert into TableName Value .....'
end;
sSql:= 'begin'+Sql+ 'commit;end;';
end;