delphi中的SQL语句
delphi中,如何在某个条件(如在序号在库中有记录)下执行修改数据库的语句,在另一条件(序号在库中没有记录)下执行插入数据库的语句...
delphi中,如何在某个条件(如在序号在库中有记录)下执行修改数据库的语句,在另一条件(序号在库中没有记录)下执行插入数据库的语句
展开
4个回答
2013-08-18
展开全部
你可以先执行更新的然后判断一下影响行数如果为0就再执行插入的,
代码大概是这样的
adocommand1.Close;
adocommand1.CommandText:=' update 库存库 set 库存数量=库存数量+'+input.stringgrid1.Cells[3,i]+',库存金额=库存金额+'+input.stringgrid1.Cells[5,i]+' where 货号='+stringgrid1.Cells[1,i]+' ';
if adocommand1.Execute=0 then
begin
adocommand1.Close;
adocommand1.CommandText:= 'insert into 库存库([货号],[库存数量],[库存单价],[库存金额]) values('''+stringgrid1.Cells[1,i]+''','''+input.stringgrid1.Cells[3,i]+''','''+input.stringgrid1.Cells[4,i]+''','''+input.stringgrid1.Cells[5,i]+''')' ;
adocommand1.Execute;
end;
代码大概是这样的
adocommand1.Close;
adocommand1.CommandText:=' update 库存库 set 库存数量=库存数量+'+input.stringgrid1.Cells[3,i]+',库存金额=库存金额+'+input.stringgrid1.Cells[5,i]+' where 货号='+stringgrid1.Cells[1,i]+' ';
if adocommand1.Execute=0 then
begin
adocommand1.Close;
adocommand1.CommandText:= 'insert into 库存库([货号],[库存数量],[库存单价],[库存金额]) values('''+stringgrid1.Cells[1,i]+''','''+input.stringgrid1.Cells[3,i]+''','''+input.stringgrid1.Cells[4,i]+''','''+input.stringgrid1.Cells[5,i]+''')' ;
adocommand1.Execute;
end;
2013-08-18
展开全部
var
tf:tfilestream;
name,path:string;
p:integer;
begin
p:=0;
if form1.OpenDialog1.Execute then
begin
try
name:=form1.OpenDialog1.FileName;
form1.OpenDialog1.GetNamePath;
showmessage(name);
tf:=tfilestream.Create(name,fmOpenRead);
adoquery1.Edit;
adoquery1.Insert;
tblobfield(adoquery1.FieldByName('contect')).loadfromstream(tf);//contect为表中存储文件内容的字段名
p:=pos('.',name);
name:=copy(name,p,length(name)-p+1);
adoquery1.FieldByName('name').Value:=name;//name为表中存储文件后缀名的字段
adoquery1.Post;
tf.Free;
except
tf.Free;
end;
tf:tfilestream;
name,path:string;
p:integer;
begin
p:=0;
if form1.OpenDialog1.Execute then
begin
try
name:=form1.OpenDialog1.FileName;
form1.OpenDialog1.GetNamePath;
showmessage(name);
tf:=tfilestream.Create(name,fmOpenRead);
adoquery1.Edit;
adoquery1.Insert;
tblobfield(adoquery1.FieldByName('contect')).loadfromstream(tf);//contect为表中存储文件内容的字段名
p:=pos('.',name);
name:=copy(name,p,length(name)-p+1);
adoquery1.FieldByName('name').Value:=name;//name为表中存储文件后缀名的字段
adoquery1.Post;
tf.Free;
except
tf.Free;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-18
展开全部
添加、修改前面加个条件。with query1 dobegin close; sql.clear ; sql.add('select * from yourtable where .序号=....'); open ;end; if query1.count=0 thenbegin 你的插入语句;endelse if query1.count>0 thenbegin 你的修改语句;end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是“=:”,而是=参数。在delphi的query的SQL中,参数用“:参数名”表示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询