各位大佬:
小弟是个新手,做一个前台销售程序,用二台机器连网,一台安装数据库,另一个与之相连,用ODBC连接数据库是相通的,现发
现如下问题:
单独用一台进行(安装数据库的一台同时可作为前台)操作,如每销售一件货品,库存中扣除数量,数据正确,但当二台同时销售
相同的货品(同时按确认键),库存数据出错(多减数据),这是为何?因为小弟是新手第一次接触网络数据库的操作,请各位大佬
赐教,万分感谢!!!
小弟是个新手,做一个前台销售程序,用二台机器连网,一台安装数据库,另一个与之相连,用ODBC连接数据库是相通的,现发
现如下问题:
单独用一台进行(安装数据库的一台同时可作为前台)操作,如每销售一件货品,库存中扣除数量,数据正确,但当二台同时销售
相同的货品(同时按确认键),库存数据出错(多减数据),这是为何?因为小弟是新手第一次接触网络数据库的操作,请各位大佬
赐教,万分感谢!!!
解决方案 »
- 单声道转化成双通道?
- Quick Report调用print方法以后打印机没有任何输出,怎么办?
- delphi中如何在程序中判断一个窗口是否已经Show了?(这个窗口是程序自己的)
- 高手请进?????????
- ####关于打包的简单问题
- 今天我做了一件人生第一次的事情,高兴中,散分!!
- 請問如何判斷TList對象中每一個對象的數据類型?
- 在DELPHI中如何使一个按钮当鼠标移上去使它凸起来移走时使它凹下去
- 怎样写一个没有窗口的程序(不是console)?
- 我在用datebase desktop做数据库的时候,第一次输入的中文总显示乱码!请问怎么解决?我用的是delphi5。
- 数据表中保存了主表是不是细表也会自动保存呢?
- 我的scktsrvr启动了,但是还是出现错误
Update Table1 Set fieldname= 'abc ' with RowLock
小弟又做如下测试:
1.二台机器同时对同样的商品(二个)销售时
A。同时按确认键,库存数量不对(多减),B不同时按确认键,库存数量正确。
2.1.二台机器同时对不同种的商品(二个)销售时
A。同时按确认键,库存数量不对(多减),B不同时按确认键,库存数量正确。
总之,同时按确认键,库存数量就不对。小弟在想,是否在一台机器操作库存表时需要独占,运行完毕后解除,再给另一台机器运行,这样就可以?
可小弟只是听说过这些概念,从来没有运用过,这是在DELPHI中实现还是在SQL数据库中实现,如何实现,请各位大佬详解,万分感谢
begin
query7.Close;
query7.SQL.Clear;
query7.sql.Add('select * from price where spmc=:sp3 and daile=:da1');//price为库存表
query7.ParamByName('sp3').AsString:=b11_spmc;商品名
query7.ParamByName('da1').AsString:=b11_dalei;商品大类名
query7.Open;
//Query5.FetchAll;
query7.Edit;
query7.FieldByName('kc_sl').AsFloat:= query7.FieldByName('kc_sl').AsFloat-b11_sl;
query7.Post;
end;
(1)没有使用事务
(2)不要用数据结修改库存,应该用SQL语句
sql='update price kc_sl=kc_sl-'+floattostr(b11_sl)+' where spmc='''
+b11_spmc+''' and daile='''+b11_dalei+'''';
用一个query执行SQL
如果只用SQL语句是否还需要使用事务,我对事务不太了解,是SQL范畴还是DELPHI
query7.ExecSQL;
query7.ExecSQL;
ADOConnection1.CommitTrans;也是一样加锁;