溢出错误(VBA,在sql数据库中插入数据的excel)

时间:2013-04-11 11:23:23

标签: sql vba excel-vba excel

这是我在excel表中的代码

Private Sub btnUpdate_Click()

On Error GoTo errH

    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strPath As String
    Dim intImportRow As Integer
    Dim strFirstName, strLastName As String

    Dim server, username, password, table, database As String


    With Sheets("Settings")

            server = .txtServer.Text
           table = .txtTable.Text
           database = .txtDatabase.Text
         ' server = "LB-HO-NAYEF\MYMSSQLSERVER"
        '  table = "tblLSItems"
        '  database = "LMStock"





            If con.State <> 1 Then

                con.Open "Provider=SQLOLEDB;Data Source=" & server & ";Initial Catalog=" & database & ";Integrated Security=SSPI;"
                'con.Open

            End If
            'this is the TRUSTED connection string

            Set rs.ActiveConnection = con

            'delete all records first if checkbox checked
            If .cbDelete Then
                con.Execute "delete " & table & ""
            End If

            'set first row with records to import
            'you could also just loop thru a range if you want.
            intImportRow = 2

            Do Until Sheet1.Cells(intImportRow, 1) = ""
               Dim strItemCode As String
            Dim strScanCode As String

                 Dim strStyle As String
                  Dim strDescription As String
                   Dim strPrice As String
                    Dim strSalePrice As String


                strItemCode = Sheet1.Cells(intImportRow, 2)
                strScanCode = Sheet1.Cells(intImportRow, 3)
                strStyle = Sheet1.Cells(intImportRow, 4)
                strDescription = Sheet1.Cells(intImportRow, 5)
                strPrice = Sheet1.Cells(intImportRow, 6)
                strSalePrice = Sheet1.Cells(intImportRow, 7)
                   'insert row into database
              COMMANDSTRING = "insert into tblLSItems (ItemCode, ScanCode,Style,Description,Price,SalePrice) values ('" & strItemCode & "','" & strScanCode & "','" & strStyle & "', '" & strDescription & "','" & strPrice & "','" & strSalePrice & "')"


            '    con.Execute "insert into tblLSItems (ItemCode, ScanCode,Style,Description,Price,SalePrice) values ('" & strItemCode & "','" & strScanCode & "','" & strStyle & "', '" & strDescription & "'," & strPrice & "," & strSalePrice & ")"
        con.Execute COMMANDSTRING

                intImportRow = intImportRow + 1
            Loop
             MsgBox ("Done importing")
            con.Close
            Set con = Nothing

    End With

Exit Sub

errH:
    MsgBox Err.Description
    MsgBox (COMMANDSTRING)
End Sub

excel表有129848条记录

总是在记录32766中给出错误

无论记录是什么

以下是下载Excel工作表的链接

第2页设置需要连接到数据库

1 个答案:

答案 0 :(得分:1)

From the Working with Numbers section of the VBA documentation

  

整数,长整数和字节数据类型

     

...

     

Integer和Long数据类型都可以保存正值或负值。它们之间的区别在于它们的大小:整数变量可以保持-32,768和32,767之间的值,而Long变量的范围可以从-2,147,483,648到2,147,483,647。

Dim intImportRow As Integer替换为Dim intImportRow As Long