Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2882|回复: 2

[已解决]号码递增,覆盖不递增,新的单号显示是之前递增那个单号

[复制链接]
发表于 2014-5-17 15:04 | 显示全部楼层 |阅读模式
Sub Addxiaoshoubaocun()
Dim i As Integer, j As Integer, k As Integer, iRows As Integer, n As Integer
Dim mydata As String, SQL As String, myTable As String, myFieldList() As Variant
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim r%, l%, sq1, fin
mydata = ThisWorkbook.Path & "\新兴特种纸数据库.mdb"
myTable = "销售资料"
' On Error GoTo ErrorHandler
If Range("C2") = "" Then MsgBox "请填写销售类型": Exit Sub
If Range("b3") = "" Then MsgBox "请填写客户": Exit Sub
If Range("f16") = "" Then MsgBox "请填应付款金额": Exit Sub
Application.ScreenUpdating = True
For r = 5 To 14
Sheets("销售单").Range("g" & r) = Range("e" & r) * Range("f" & r)
If Sheets("销售单").Range("b" & r) <> "" Then iRows = iRows + 1
Next
If iRows = 0 Then MsgBox "请填写数据后再保存": Exit Sub
Call xsgongshi
With cnn
  .Provider = "microsoft.jet.oledb.4.0"
  .Open mydata
End With
sq1 = "Select * from 销售资料  where 单据编号='" & Sheets("销售单").Range("h3").Value & "'"
    rs.Open sq1, cnn, adOpenKeyset, adLockOptimistic
'rs.Open mytable, cnn, adOpenKeyset, adLockOptimistic
    If rs.RecordCount > 0 Then
             If MsgBox("你确定要覆盖 " & Sheets("销售单").Range("h3").Value & " 的资料吗 ?", vbYesNo, "Update the existing data") = vbNo Then
                Exit Sub
                Sheets("销售单").Range("h3") = "XSD" & Format(Date, "yymm") & Format(Range("z1"), "00000")
                Else
                     cnn.Execute ("delete from 销售资料 where 单据编号='" & Sheets("销售单").Range("h3").Value & "'")
            For i = 5 To iRows + 4
              rs.AddNew
              rs.Fields("销售类型") = Sheets("销售单").Range("c2")
              rs.Fields("客户") = Sheets("销售单").Range("b3")
              rs.Fields("录入日期") = Sheets("销售单").Range("d3")
              rs.Fields("单据编号") = Sheets("销售单").Range("h3")
              For j = 1 To 9
                rs.Fields(j + 4) = Sheets("销售单").Cells(i, j).Value
   
              Next j
                rs.Fields("货款状态") = Sheets("销售单").Range("b16")
                 rs.Fields("应付金额") = Sheets("销售单").Range("f16")
                  rs.Update
            Next i
            End If
       Else
        
            For i = 5 To iRows + 4
              rs.AddNew
              rs.Fields("销售类型") = Sheets("销售单").Range("c2")
              rs.Fields("客户") = Sheets("销售单").Range("b3")
              rs.Fields("录入日期") = Sheets("销售单").Range("d3")
              rs.Fields("单据编号") = Sheets("销售单").Range("h3")
              For j = 1 To 9
                rs.Fields(j + 4) = Sheets("销售单").Cells(i, j).Value
   
              Next j
                rs.Fields("货款状态") = Sheets("销售单").Range("b16")
                 rs.Fields("应付金额") = Sheets("销售单").Range("f16")
                  rs.Update
            Next i
            End If
   
rs.UpdateBatch
rs.Close
cnn.Close
Set cnn = Nothing: Set rs = Nothing
Sheet1.CommandButton1.Visible = True
'ErrorHandler:
'    MsgBox Err.Number & vbCrLf & _
'           Err.Description
    If Range("c2") = "销售单" Then
     Range("z1") = Range("z1") + 1
    Else
     Range("aa1") = Range("aa1") + 1
    End If
    'Sheet1.Range("b5:j14,b3:c3,j3,c16,g16:j16,e3:g3").ClearContents
    Sheets("销售单").Range("h3") = "XSD" & Format(Date, "yymm") & Format(Range("z1"), "00000")
    Sheets("销售单").Range("c2") = "销售单"
    Application.ScreenUpdating = True
    MsgBox "数据写入数据库完毕!", vbOKOnly + vbInformation
End Sub

这个代码单号就会自动递增,内容有的话覆盖下去还是递增,  我需要单号覆盖了不用递增,显示开单的最后一个单号,保存后才要递增






最佳答案
2014-5-17 22:42
  1. Sub Addxiaoshoubaocun()
  2.     Dim i As Integer, j As Integer, k As Integer, iRows As Integer, n As Integer
  3.     Dim mydata As String, SQL As String, myTable As String, myFieldList() As Variant
  4.     Dim blOver As Boolean
  5.     Dim cnn As New ADODB.Connection
  6.     Dim rs As New ADODB.Recordset
  7.     Dim r%, l%, sq1, fin
  8.     mydata = ThisWorkbook.Path & "\新兴特种纸数据库.mdb"
  9.     myTable = "销售资料"
  10.     ' On Error GoTo ErrorHandler
  11.     If Range("C2") = "" Then MsgBox "请填写销售类型": Exit Sub
  12.     If Range("b3") = "" Then MsgBox "请填写客户": Exit Sub
  13.     If Range("f16") = "" Then MsgBox "请填应付款金额": Exit Sub
  14.     Application.ScreenUpdating = True
  15.     For r = 5 To 14
  16.         Sheets("销售单").Range("g" & r) = Range("e" & r) * Range("f" & r)
  17.         If Sheets("销售单").Range("b" & r) <> "" Then iRows = iRows + 1
  18.     Next
  19.     If iRows = 0 Then MsgBox "请填写数据后再保存": Exit Sub
  20.     Call xsgongshi

  21.     With cnn
  22.         .Provider = "microsoft.jet.oledb.4.0"
  23.         .Open mydata
  24.     End With
  25.     sq1 = "Select * from 销售资料  where 单据编号='" & Sheets("销售单").Range("h3").Value & "'"
  26.     rs.Open sq1, cnn, adOpenKeyset, adLockOptimistic
  27.     'rs.Open mytable, cnn, adOpenKeyset, adLockOptimistic
  28.     If rs.RecordCount > 0 Then
  29.         If MsgBox("你确定要覆盖 " & Sheets("销售单").Range("h3").Value & " 的资料吗 ?", vbYesNo, "Update the existing data") = vbNo Then
  30.             Exit Sub
  31.             Sheets("销售单").Range("h3") = "XSD" & Format(Date, "yymm") & Format(Range("z1"), "00000")
  32.         Else
  33.             cnn.Execute ("delete from 销售资料 where 单据编号='" & Sheets("销售单").Range("h3").Value & "'")
  34.             For i = 5 To iRows + 4
  35.                 rs.AddNew
  36.                 rs.Fields("销售类型") = Sheets("销售单").Range("c2")
  37.                 rs.Fields("客户") = Sheets("销售单").Range("b3")
  38.                 rs.Fields("录入日期") = Sheets("销售单").Range("d3")
  39.                 rs.Fields("单据编号") = Sheets("销售单").Range("h3")
  40.                 For j = 1 To 9
  41.                     rs.Fields(j + 4) = Sheets("销售单").Cells(i, j).Value
  42.                 Next j
  43.                 rs.Fields("货款状态") = Sheets("销售单").Range("b16")
  44.                 rs.Fields("应付金额") = Sheets("销售单").Range("f16")
  45.                 rs.Update
  46.             Next i
  47.             blOver = True
  48.         End If
  49.     Else

  50.         For i = 5 To iRows + 4
  51.             rs.AddNew
  52.             rs.Fields("销售类型") = Sheets("销售单").Range("c2")
  53.             rs.Fields("客户") = Sheets("销售单").Range("b3")
  54.             rs.Fields("录入日期") = Sheets("销售单").Range("d3")
  55.             rs.Fields("单据编号") = Sheets("销售单").Range("h3")
  56.             For j = 1 To 9
  57.                 rs.Fields(j + 4) = Sheets("销售单").Cells(i, j).Value

  58.             Next j
  59.             rs.Fields("货款状态") = Sheets("销售单").Range("b16")
  60.             rs.Fields("应付金额") = Sheets("销售单").Range("f16")
  61.             rs.Update
  62.         Next i
  63.     End If

  64.     rs.UpdateBatch
  65.     rs.Close
  66.     cnn.Close
  67.     Set cnn = Nothing: Set rs = Nothing
  68.     Sheet1.CommandButton1.Visible = True
  69.     'ErrorHandler:
  70.     '    MsgBox Err.Number & vbCrLf & _
  71.          '           Err.Description
  72.     If Range("c2") = "销售单" Then
  73.         If Not blOver Then Range("z1") = Range("z1") + 1
  74.     Else
  75.         If Not blOver Then Range("aa1") = Range("aa1") + 1
  76.     End If
  77.     'Sheet1.Range("b5:j14,b3:c3,j3,c16,g16:j16,e3:g3").ClearContents
  78.     Sheets("销售单").Range("h3") = "XSD" & Format(Date, "yymm") & Format(Range("z1"), "00000")
  79.     Sheets("销售单").Range("c2") = "销售单"
  80.     Application.ScreenUpdating = True
  81.     MsgBox "数据写入数据库完毕!", vbOKOnly + vbInformation
  82. End Sub
复制代码
我这没法测试,楼主自己试试吧。
发表于 2014-5-17 22:42 | 显示全部楼层    本楼为最佳答案   
  1. Sub Addxiaoshoubaocun()
  2.     Dim i As Integer, j As Integer, k As Integer, iRows As Integer, n As Integer
  3.     Dim mydata As String, SQL As String, myTable As String, myFieldList() As Variant
  4.     Dim blOver As Boolean
  5.     Dim cnn As New ADODB.Connection
  6.     Dim rs As New ADODB.Recordset
  7.     Dim r%, l%, sq1, fin
  8.     mydata = ThisWorkbook.Path & "\新兴特种纸数据库.mdb"
  9.     myTable = "销售资料"
  10.     ' On Error GoTo ErrorHandler
  11.     If Range("C2") = "" Then MsgBox "请填写销售类型": Exit Sub
  12.     If Range("b3") = "" Then MsgBox "请填写客户": Exit Sub
  13.     If Range("f16") = "" Then MsgBox "请填应付款金额": Exit Sub
  14.     Application.ScreenUpdating = True
  15.     For r = 5 To 14
  16.         Sheets("销售单").Range("g" & r) = Range("e" & r) * Range("f" & r)
  17.         If Sheets("销售单").Range("b" & r) <> "" Then iRows = iRows + 1
  18.     Next
  19.     If iRows = 0 Then MsgBox "请填写数据后再保存": Exit Sub
  20.     Call xsgongshi

  21.     With cnn
  22.         .Provider = "microsoft.jet.oledb.4.0"
  23.         .Open mydata
  24.     End With
  25.     sq1 = "Select * from 销售资料  where 单据编号='" & Sheets("销售单").Range("h3").Value & "'"
  26.     rs.Open sq1, cnn, adOpenKeyset, adLockOptimistic
  27.     'rs.Open mytable, cnn, adOpenKeyset, adLockOptimistic
  28.     If rs.RecordCount > 0 Then
  29.         If MsgBox("你确定要覆盖 " & Sheets("销售单").Range("h3").Value & " 的资料吗 ?", vbYesNo, "Update the existing data") = vbNo Then
  30.             Exit Sub
  31.             Sheets("销售单").Range("h3") = "XSD" & Format(Date, "yymm") & Format(Range("z1"), "00000")
  32.         Else
  33.             cnn.Execute ("delete from 销售资料 where 单据编号='" & Sheets("销售单").Range("h3").Value & "'")
  34.             For i = 5 To iRows + 4
  35.                 rs.AddNew
  36.                 rs.Fields("销售类型") = Sheets("销售单").Range("c2")
  37.                 rs.Fields("客户") = Sheets("销售单").Range("b3")
  38.                 rs.Fields("录入日期") = Sheets("销售单").Range("d3")
  39.                 rs.Fields("单据编号") = Sheets("销售单").Range("h3")
  40.                 For j = 1 To 9
  41.                     rs.Fields(j + 4) = Sheets("销售单").Cells(i, j).Value
  42.                 Next j
  43.                 rs.Fields("货款状态") = Sheets("销售单").Range("b16")
  44.                 rs.Fields("应付金额") = Sheets("销售单").Range("f16")
  45.                 rs.Update
  46.             Next i
  47.             blOver = True
  48.         End If
  49.     Else

  50.         For i = 5 To iRows + 4
  51.             rs.AddNew
  52.             rs.Fields("销售类型") = Sheets("销售单").Range("c2")
  53.             rs.Fields("客户") = Sheets("销售单").Range("b3")
  54.             rs.Fields("录入日期") = Sheets("销售单").Range("d3")
  55.             rs.Fields("单据编号") = Sheets("销售单").Range("h3")
  56.             For j = 1 To 9
  57.                 rs.Fields(j + 4) = Sheets("销售单").Cells(i, j).Value

  58.             Next j
  59.             rs.Fields("货款状态") = Sheets("销售单").Range("b16")
  60.             rs.Fields("应付金额") = Sheets("销售单").Range("f16")
  61.             rs.Update
  62.         Next i
  63.     End If

  64.     rs.UpdateBatch
  65.     rs.Close
  66.     cnn.Close
  67.     Set cnn = Nothing: Set rs = Nothing
  68.     Sheet1.CommandButton1.Visible = True
  69.     'ErrorHandler:
  70.     '    MsgBox Err.Number & vbCrLf & _
  71.          '           Err.Description
  72.     If Range("c2") = "销售单" Then
  73.         If Not blOver Then Range("z1") = Range("z1") + 1
  74.     Else
  75.         If Not blOver Then Range("aa1") = Range("aa1") + 1
  76.     End If
  77.     'Sheet1.Range("b5:j14,b3:c3,j3,c16,g16:j16,e3:g3").ClearContents
  78.     Sheets("销售单").Range("h3") = "XSD" & Format(Date, "yymm") & Format(Range("z1"), "00000")
  79.     Sheets("销售单").Range("c2") = "销售单"
  80.     Application.ScreenUpdating = True
  81.     MsgBox "数据写入数据库完毕!", vbOKOnly + vbInformation
  82. End Sub
复制代码
我这没法测试,楼主自己试试吧。

评分

参与人数 1 +1 收起 理由
hrq145 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-5-18 00:06 | 显示全部楼层
这么长的代码,看着头疼…………
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-18 20:41 , Processed in 0.391100 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表