我想向数据库中插入一个值,不过有个字段,有多个值,所以要插入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;
解决方案 »
- 恭喜 ft 大哥换新工作
- TStringGrid的OnCellSelect事件对FixedCol列不响应?
- 有将十六进制转换成十进制的好方法吗?
- 诚心求教:用QReport打印单据后,纸张如何复位??
- 菜鸟,请教各位高手,帮忙看看这段程序,不够再加~~~~~~~感激!!
- 困扰很久的问题解决+80分,请问TClientDataSet出现“记录己被另一用户改变"而无法保存是
- 如何创建一个不规则窗口
- 请高手帮忙,一定给分。。。
- 一个给软件加注册功能的软件
- print Cancel的问题
- 怎么声明和实现“类函数”?
- 刚刚开始学习Delphi,谁介绍几本好书,最好有下载地址?将来想做工控方面的,这方面的也提供一些,先谢谢了
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;