本人初学遇到如下问题,请各位高手鼎立帮忙!不胜感激!delphi+sql 我做一个进销存的 进货单。进货单分为主表、明细表。现在在添加明细的时候,现要建一临时表,保证临时表内无重复现象。但不会建临时表,也不知怎么处理,各位有没有更好办法解决。 主表(jh_master(dh单号(主键),ghs供货商,jhdate进货日期))
明细表(jh_detail(dh单号(主键),spno商品编号(主键),qty数量))现在进入页面先添入主表信息后,在添加多条明细,采用adoquery.append添加。但因为我的dbgrid设置的不自动存入数据库,所以必须等到保存时才adoquery.updatebatch保存。为了防止同一单据内商品编号不能重复。我要怎么处理。注意。adoquery.append时数据并没有存入数据库,所以不能查重复。所一想到建临时表,但我不会建。怎么处理呀!
明细表(jh_detail(dh单号(主键),spno商品编号(主键),qty数量))现在进入页面先添入主表信息后,在添加多条明细,采用adoquery.append添加。但因为我的dbgrid设置的不自动存入数据库,所以必须等到保存时才adoquery.updatebatch保存。为了防止同一单据内商品编号不能重复。我要怎么处理。注意。adoquery.append时数据并没有存入数据库,所以不能查重复。所一想到建临时表,但我不会建。怎么处理呀!
解决方案 »
- Delphi LookUp字段的过滤问题
- 关于Print Server 按行打印控制问题?请高手指点!
- 关于在delphi中使用MsWinsock.ocx控件,用getdata接收数据的问题,请专家看看!
- delphi如何快速的启动
- 怎么在程序运行时,动态创建五十个label组件?
- 紧急求助!英文的建筑(土木工程)方面的文章,小女子不胜感激!
- 系统菜单响应 ??? ——高手赐教吧
- 如何运行源代码
- 我用DEPHI写了个小程序,把它缩小为个小图标,放在操作系统的底下状态栏里,和时间、输入法等放在一起,做好后,可是当我点击它后弹
- 大侠,帮小弟一把
- 小妹求救啊!!!!!!動態創建qrlabel問題,在線等...急啊!!!
- 获取外部程序的名称
不到事实表中去判断,而到专门存储当前编号中去判断;
例如:你可以单独在一个表t1中存储表的当前最大编号;然后在给个事件触发存储过程生成新的商品编号;
fx:
表t1中内容;
f1 f2
商品编号 sp000001
客户编号 kh000001
create procedure createNewID
@f1 varchar(20),
@ReturnID varchar(20)
asdeclare
@NewID varchar(20),
@CurrID varchar(20)
--获取当前编号
select @CurrID = f2 from t1 where f1 = @f1
--得到当前编号
set @newID = convert(varchar(20),convert(int,right(@currid,6)))
set @ReturnID = left(@Currid,8-len(@Newid))+@Newid
go
--测试结果
declare
@Newid varchar(20)
exec createNewID '商品编号', @NewID output
print @Newid
完整代码应该是:
create procedure createNewID
@f1 varchar(20),
@ReturnID varchar(20)
asdeclare
@NewID varchar(20),
@CurrID varchar(20)
--获取当前编号
select @CurrID = f2 from t1 where f1 = @f1
--得到当前编号
set @newID = convert(varchar(20),convert(int,right(@currid,6)))
set @ReturnID = left(@Currid,8-len(@Newid))+@Newid
--更新当前最新编号
update t1 set f2 = @ReturnID where f1 = @f1
go
带个"#",就是临时表了。