我在编写仓库管理系统,在插入数据的时候先对表中已有的商品进行判断,假如是空,则直接插入,假如插入商品已经存在,则把要插入商品的数量添加到已有的数量上去,下面是我的代码
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into ruku(入库单号,商品名称,入库数量,入库日期,入库人,操作员)');//插入ruku表操作
sql.Add('values(:x1,:x2,:x3,:x4,:x5,:x6)');
ParamByName('x1').AsString:=edit1.Text;
ParamByName('x2').AsString:=edit2.Text;
ParamByName('x3').AsString:=edit3.Text;
ParamByName('x4').AsString:=edit4.Text;
ParamByName('x5').AsString:=edit5.Text;
ParamByName('x6').AsString:=edit6.Text;
try
execsql;
except
showmessage('数据库错误');
end;
end;
with query1 do
begin
close;
sql.clear;
sql.add('select * from kucun where 商品名称=:x2');//查询kucun表中商品是否存在
parambyname('x2').AsString:=edit2.Text;
open;
end;
k:=query1.Fields[0].AsString;
if trim(k)='' then//判断
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into kucun(商品名称,商品数量)');
sql.Add('values(:x2,:x3)');
parambyname('x2').AsString:=edit2.Text;
parambyname('x3').AsString:=edit3.Text;
try
execsql;
except
showmessage('数据库错误');
end
end
else pro_num:=strtoint(edit3.Text)+strtoint(query1.Fields[0].AsString);//这里我想把插入的商品数量edit3.text的值和查询到kucun表中商品数量相加,再把kucun表更新,单步调试在这里报错' 'is not a valid integer value,我不知道哪里除了问题
with query1 do
begin
close;
sql.Clear;
sql.Add('updata kucun') end;
showmessage('数据已经保存'); query1.Close;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;
query2.Active:=false;
query2.Active:=true;
end;
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into ruku(入库单号,商品名称,入库数量,入库日期,入库人,操作员)');//插入ruku表操作
sql.Add('values(:x1,:x2,:x3,:x4,:x5,:x6)');
ParamByName('x1').AsString:=edit1.Text;
ParamByName('x2').AsString:=edit2.Text;
ParamByName('x3').AsString:=edit3.Text;
ParamByName('x4').AsString:=edit4.Text;
ParamByName('x5').AsString:=edit5.Text;
ParamByName('x6').AsString:=edit6.Text;
try
execsql;
except
showmessage('数据库错误');
end;
end;
with query1 do
begin
close;
sql.clear;
sql.add('select * from kucun where 商品名称=:x2');//查询kucun表中商品是否存在
parambyname('x2').AsString:=edit2.Text;
open;
end;
k:=query1.Fields[0].AsString;
if trim(k)='' then//判断
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into kucun(商品名称,商品数量)');
sql.Add('values(:x2,:x3)');
parambyname('x2').AsString:=edit2.Text;
parambyname('x3').AsString:=edit3.Text;
try
execsql;
except
showmessage('数据库错误');
end
end
else pro_num:=strtoint(edit3.Text)+strtoint(query1.Fields[0].AsString);//这里我想把插入的商品数量edit3.text的值和查询到kucun表中商品数量相加,再把kucun表更新,单步调试在这里报错' 'is not a valid integer value,我不知道哪里除了问题
with query1 do
begin
close;
sql.Clear;
sql.Add('updata kucun') end;
showmessage('数据已经保存'); query1.Close;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;
query2.Active:=false;
query2.Active:=true;
end;
解决方案 »
- 有没有乌鲁木齐的程序员
- 从文本文件把汉字输入acess怎么做?要求一个汉字对应一条记录
- 菜鸟请教,高手请进!
- 请问哪里有"DELPHI 4.0编程技术内幕"下载??
- 我不懂 但 我想知道!!
- 这个问题应该非常简单,知道的请告诉我
- delphi rave 报表预览时只有最后一页显示页尾
- mts环境,将clientdataset的fetchondemand 属性改为true,packetrecords不等于-1,为什么仍不能实现无状态分段取数?
- 请教高手:Delphi中获得光盘容量,光盘所在文件数和目录数,卷标的函数有哪些?
- 急!急!缇(tiwp)与像素如果转换?能给个例子吗?
- 求解!
- 用indy时候怎么浏览客户端文件
if trim(k)='' then//判断
begin//增加一个
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into kucun(商品名称,商品数量)');
sql.Add('values(:x2,:x3)');
parambyname('x2').AsString:=edit2.Text;
parambyname('x3').AsString:=edit3.Text;
try
execsql;
except
showmessage('数据库错误');
end;
end;//增加一个
end
else pro_num:=strtoint(edit3.Text)+strtoint(query1.Fields[0].AsString);//这里我想把插入的商品数量edit3.text的值和查询到kucun表中商品数量相加,再把kucun表更新,单步调试在这里报错' 'is not a valid integer value,我不知道哪里除了问题
with query1 do
begin
close;
sql.Clear;
sql.Add('updata kucun') end;
var pro_num:integer;
k:string;
确定edit3.text和query1.field[0].asstring中全部是数字?
var
sSql:String;sSql := 'insert into ruku(入库单号,商品名称,入库数量,入库日期,入库人,操作员)'
with query1 do
begin
Sql.txt:= sSql;在此可设置断点来看SQL语句 包括中间的值是否正确。不要用 ParamByName( 这样不容易找出错在什么地方。
具体代码没有看,根据你提供的内容,给你一个思路,
1.进行商品判断,如果商品存在则把数量添加进去。
2.如果商品不存在则把商品添加到表里面。
手写一点代码供参考}
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from 表名 where 商品名称='''+edit1.text+'''');
open;
end;
if adoquery1.recordcount>0 then{找到商品名称存在}
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('update 表名 set 数量 where 商品名='''+edit1.text+'''');
......
end;
end
else{商品不存在}
begin
close;
sql.clear;
sql.add('insert into 表名(字段名)values(字段对应的变量)');
......
end;
把*改成你的字段名
k:=query1.Fields[0].AsString;
然后你在后面直接有K就可以了,当k或edit3.text为空时,你要给个默认值0。