今天要给各位朋友带来的是利用delphi+SQL语句实现sql里数据减少实例一览,做了一仓库系统想用delphi实现sql里数量减少的界面?跪求各位高手帮帮忙,就是比如数据里有个数量的字段,我用delphi做个界面在EDIT1输入商品名 再在一个EDIT2里输入数量 按确定后数据库里的数量就变成原来的数量减去了,EDIT2所输的数量所得的数字了,下面咱们一块来了解一下吧。
Sql语句:
var
sSQL:String;
...
sSQL:='Update 表名 Set [买入数量]=[买入数量]-'+Edit2.text+' Where 商品名='''+Edit1.text+'''';
然后只要在数据连接(AdoConnection)或者是(AdoQuery)之类的做下执行这个SQL语句就行啦。
{Edt_Code 商品编号编辑框
Edt_Name 商品名称编辑框
Edit1 卖出数量编辑框
Button1 确定按钮
ADODataSet1 数据集对象}
{----------------------------------
商品编号框移出焦点事件
-----------------------------------}
procedure TForm1.Edt_CodeExit(Sender: TObject);
begin
If Trim(Edt_Code.Text)='' then exit;
ADODataSet1.GetBookmark
If ADODataSet1.Locate('商品编号',Edt_Code.Text[]) then //根据编号查品名
begin
Edt_Name.Text:=ADODataSet1.fieldbyname('商品名称').AsString;
end;
end;
{----------------------------------
确定按钮点击事件
-----------------------------------}
procedure TForm1.Button1Click(Sender: TObject);
{第二种情况的代码
var
sSQL:String;
}
begin
If StrToFloatDef(Edit1.Text,0)=0 then
begin
Showmessage('请输入不为零的数量');
Exit;
end;
{1、按你的窗体写法,不考虑并发操作时可以用这种方式}
With ADODataSet1 do
Try
If Locate('商品编号',Edt_Code.Text[]) then //根据编号定位
begin
If Not (State in [dsEdit]) then Edit;
Fieldbyname('商品销售量').Value:=Fieldbyname('商品销售量').AsCurrency+StrToFloatDef(Edit1.Text,0);
Fieldbyname('商品库存').Value:=Fieldbyname('商品库存').AsCurrency-StrToFloatDef(Edit1.Text,0);
Post;
end;
Except On E:Exception do
begin
Cancel;
End;
End;
{2、因为不知道你的编程习惯(数据连接访问方面的),因此不知道该怎么给你写代码
假设你有一个叫AdoConnection1的数据连接对象,而且AdoConnection1连接已建立,那么:
下面就是第二种方法的代码:
sSQL:='Update 表 Set [商品销售量]=[商品销售量]+'+Edit1.Text+' Where 商品编号='''+Edt_Code.text+'''';
AdoConnection1.Execute(sSQL);
ADODataSet1.Requery();
//若存在并发情况的话,这种方式可以再加上事务处理
}
end;