| 发表于:2007-09-08 16:39:58 楼主 |
现在有一数据库,是软件公司提供的商业化程序,但是程序不够完善,所以我在他的数据库基础上直接挂了一个开单的小程序,我在挂接后其他都好,但是保存时会和他的id重复,我想了都n天了,都不知道该如何是好! 他的表中所有单据类型都是保存在同一张表中,如销售出库单用1表示,入库单用2表示,等等,一共有6种表单.在商业程序的销售出库单我是废弃不用的,因此销售出库单会和其他单据类型重复,造成单据中会有其他类型的数据,搞得我很难看,请各位大侠帮帮我,解决一下这个问题! 他的id不是自动编号的,是采用在另外一张上保存,保存时自动加1这种方式.因为是在局域网内用的人比较多,难免会在相同的时间内保存,所以就出现了上述的问题. 我的代码如下: sub mylink()连接数据库 set cnn = createobject( "adodb.connection ") set rst = createobject( "adodb.recordset ") cnn.open "provider=sqloledb;server= " & sserver & ";database=jr2007080814;uid=sa;pwd=; " cnn.cursorlocation = aduseclient end sub sub pzsale() '主表 call mylink sql1 = "select fmaxnum as billnomax from tblmaxnum where ftablename= 'icstockbill ' " rst.open sql1, cnn, adopenkeyset, adlockoptimistic ff = rst.fields( "billnomax ") sql = "insert into icstockbill(finterid,fstatus,fcancellation,fstockid1,fcustomerid,fstyleid,fdeptid,femperid,ffmanager,fsmanager,fdate,foperator,ftrantype,fyear,fperiod,frob,fbillno) " sql = sql & " values( ' " & ff & " ', ' " & 0 & " ', ' " & 0 & " ', ' " & 11 & " ', " sql = sql & " ' " & range( "e7 ").value & " ', " sql = sql & " ' " & 3 & " ', " sql = sql & " ' " & trim(left(range( "k18 ").value, 4)) & " ', " sql = sql & " ' " & range( "k7 ").value & " ', " sql = sql & " ' " & 0 & " ', " sql = sql & " ' " & 0 & " ', " sql = sql & " ' " & format(range( "i7 ").value, "yyyy-mm-dd ") & " ', " sql = sql & " ' " & userid & " ', " sql = sql & " ' " & 4 & " ', " sql = sql & " ' " & 2007 & " ', " sql = sql & " ' " & ffperiod & " ', " sql = sql & " ' " & 0 & " ', " sql = sql & " ' " & range( "k6 ").value & " ') " cnn.EXECute sql set rst = nothing: cnn.close end sub sub pzsaleqq() '附表 call mylink dim p as integer, pp as integer for p = 9 to 14 pp = p - 8 if range( "e " & p).value <> " " then with rst sql = "insert into icstockbillentry(finterid,forderid,fentryid,fitemid,funitid,fbatchno,fqty,fprice,famount,ftax,fpricetax,famounttax,fmemory,fdorderid,fnoticeid) " sql = sql & " values( ' " & ff & " ', ' " & pp & " ', ' " & pp & " ', " sql = sql & " ' " & iif(range( "e " & p).value = " ", null, range( "e " & p).value) & " ', " sql = sql & " ' " & iif(range( "h " & p).value = " ", null, range( "h " & p).value) & " ', " sql = sql & " ' " & " " & " ', " '批次 sql = sql & " ' " & iif(range( "j " & p).value = " ", null, range( "j " & p).value) & " ', " '数量 sql = sql & " ' " & iif(range( "k " & p).value = " ", null, range( "k " & p).value) & " ', " '单价 sql = sql & " ' " & iif(range( "l " & p).value = " ", null, range( "l " & p).value) & " ', " '金额 sql = sql & " ' " & 0 & " ', " '税率 sql = sql & " ' " & iif(range( "k " & p).value = " ", null, range( "k " & p).value) & " ', " '单价 sql = sql & " ' " & iif(range( "l " & p).value = " ", null, range( "l " & p).value) & " ', " '金额 sql = sql & " ' " & " " & " ', " '备注 sql = sql & " ' " & 0 & " ', " '销售订单 sql = sql & " ' " & 0 & " ') " '发货通知单 cnn.EXECute sql end with end if next p msgbox "销售出库单保存成功! ", , "dovro " set rst = nothing: cnn.close end sub sub dovromax() call mylink sql = "update tblmaxnum set fmaxnum=fmaxnum+1 where ftablename= 'icnoticebill ' " cnn.EXECute sql set rst = nothing: cnn.close end sub sub commbarsave() if range( "e7 ").value = " " or range( "j9 ").value = " " or range( "k7 ").value = " " then msgbox "请将发货通知单内容录入完整! ", 1 + 64, "dovro " exit sub end if call mylink sql = "select fbillno from icnoticebill " rst.open sql, cnn, adopenkeyset, adlockpessimistic rst.find "fbillno = ' " & range( "k6 ").value & " ' " if not rst.eof() then msgbox "该单据已保存,请勿再次点击保存! ", vbokonly, "dovro " exit sub end if call pzsale '销售出库单主表 call pzsaleqq '销售出库单附表 call dovronomax '更新销售出库单最大单号 end sub 大概情况也就是这样了,请大家帮我想想办法!谢谢! |
|
|
|
|