2016-04-12 7 views
2

営業担当者がフィールド内にある間に更新できるExcelドキュメントにデータベースのコピーを設定しようとしています。私はリスト行のために実行されるinsert文のコードを持っていますが、たった20行でオーバーフローエラーが出ます。ここに私のコードです:Excelから数行しか挿入しないとオーバーフローエラーが発生しました

Sub ConnectTODB() 

    Dim CustomersConn As ADODB.Connection 
    Dim CustomersCmd As ADODB.Command 
    Dim lo As Excel.ListObject 
    Dim ws As Excel.Worksheet 
    Dim lr As Excel.ListRow 

    Set ws = ThisWorkbook.Worksheets(8) 
    Set lo = ws.ListObjects("TCustomers") 

    Set CustomersConn = New ADODB.Connection 
    Set CustomersCmd = New ADODB.Command 

    CustomersConn.ConnectionString = SQLConStr 
    CustomersConn.Open 
    CustomersCmd.ActiveConnection = CustomersConn 

    For Each lr In lo.ListRows 
    CustomersCmd.CommandText = _ 
    GetInsertText(_ 
    Intersect(lr.Range, lo.ListColumns("Type").Range).Value, _ 
    Intersect(lr.Range, lo.ListColumns("Customer").Range).Value, _ 
    Intersect(lr.Range, lo.ListColumns("Name").Range).Value, _ 
    Intersect(lr.Range, lo.ListColumns("Contact").Range).Value, _ 
    Intersect(lr.Range, lo.ListColumns("Email").Range).Value, _ 
    Intersect(lr.Range, lo.ListColumns("Phone").Range).Value, _ 
    Intersect(lr.Range, lo.ListColumns("Corp").Range).Value) 

    CustomersCmd.Execute 
    Next lr 

    CustomersConn.Close 

    Set CustomersConn = Nothing 

End Sub 

Function GetInsertText(CType As String, Customer As Integer, Name As String, Contact As String, Email As String, Phone As String, Corp As String) As String 
    Dim SQLStr As String 

    SQLStr = _ 
    "INSERT INTO Customer (" & _ 
    "Type, Customer,Name,Contact,Email,Phone,Corp)" & _ 
    "VALUES (" & _ 
    "'" & CType & "'," & _ 
    "'" & Customer & "'," & _ 
    "'" & Name & "'," & _ 
    "'" & Contact & "'," & _ 
    "'" & Email & "'," & _ 
    "'" & Phone & "'," & _ 
    "'" & Corp & "')" 

    GetInsertText = SQLStr 

End Function 

テーブルの合計サイズは1600行だけですので、オーバーフローエラーが予想されませんでした。 ご協力いただければ幸いです!

答えて

1

変数の1つが与えられた入力を処理できないため、オーバーフローエラーが発生しています。私は強く犯人がCustomer As IntegerCustomer As Integer

+0

Customer As Longに変更

Function GetInsertText(CType As String, Customer As Integer, Name As String, Contact As String, Email As String, Phone As String, Corp As String) As String

にあるint型は、自動的に静かにバックグラウンドでロングスにtransmogrifiedはないと思われますか? – StormsEdge

+1

@StormsEdge:[興味深い読書](http://stackoverflow.com/questions/26717148/integer-vs-long-confusion);) –

+0

あなたはシッドハースです! 私の同僚にコードを大声で説明していたときに私はそれに遭遇しました。あなたのコメントを見たとき、それは確認されました! ありがとうございました! :) –

関連する問題