从Excel导入SQL Server时发生日期数据类型转换错误

从Excel导入SQL Server时发生日期数据类型转换错误,sql,sql-server,vba,types,Sql,Sql Server,Vba,Types,我需要帮助处理这个案子。我需要将表格从Excel导入SQL Server,我有两列类型为DATE 问题是在运行宏时,显示以下消息 从字符串转换日期和/或时间时转换失败 Excel中的表格包含此格式的日期dd/mm/YYYY,SQL Server列为date数据类型。请告诉我需要帮助来解决这个问题。谢谢你的支持 在VBA中附加代码 'Create Conection for MySQL Database in AR_TELCEL Dim conn As New ADODB.Connection

我需要帮助处理这个案子。我需要将表格从Excel导入SQL Server,我有两列类型为DATE

问题是在运行宏时,显示以下消息

从字符串转换日期和/或时间时转换失败

Excel中的表格包含此格式的日期
dd/mm/YYYY
,SQL Server列为
date
数据类型。请告诉我需要帮助来解决这个问题。谢谢你的支持

在VBA中附加代码

  'Create Conection for MySQL Database in AR_TELCEL
Dim conn As New ADODB.Connection
conn.CommandTimeout = 0
'Define Data Types to Cells for Upload a SQL Database
Dim iRowNo As Long
Dim CUST_ID As Long, DOC_TYPE As String, BILL_DOC As Long, REFERENCE As String, STATUS_PAYMENT As String, INV_CON As String, OSALES_FOUR As String, INV_REF As String, DOC_NUM As Long, GL As Long, DOC_DATE As Date, DUE_DATE As Date, DOC_CURRENCY As String, DOC_AMNT As Currency, LOC_AMNT As Currency, PAY_TERM As String, POST_K As String, LINE_N As Long



    With Sheets("I. One Report Sap")

        '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
        'Connect with MSSQL PCC AR_TELCEL Database
        '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

        conn.Open "Provider=SQLOLEDB;Data Source=146.250.36.68,1433;Initial Catalog=AR_TELCEL;User Id=user;Password=Password;"

        'Omitimos la linea de encabezados
        iRowNo = 10

        'Loop until empty cell in CustomerId
        Do Until .Cells(iRowNo, 1) = ""
            ACCOUNT = .Cells(iRowNo, 1)
            DOC_TYPE = .Cells(iRowNo, 2)
            BILL_DOC = .Cells(iRowNo, 3)
            REFERENCE = .Cells(iRowNo, 4)
            STATUS_PAYMENT = .Cells(iRowNo, 5)
            INV_CON = .Cells(iRowNo, 6)
            ORDER_SALES = .Cells(iRowNo, 7)
            INV_REF = .Cells(iRowNo, 8)
            DOC_NUM = .Cells(iRowNo, 9)
            GL = .Cells(iRowNo, 10)
            DOC_DATE = .Cells(iRowNo, 11)
            DUE_DATE = .Cells(iRowNo, 12)
            DOC_CURRENCY = .Cells(iRowNo, 13)
            DOC_AMNT = .Cells(iRowNo, 14)
            LOC_AMNT = .Cells(iRowNo, 15)
            PAY_TERM = .Cells(iRowNo, 16)
            POST_K = .Cells(iRowNo, 17)
            LINE_N = .Cells(iRowNo, 18)
我可以把它修好

原始代码:

conn.Execute "insert into one_rep_sap_temp  (ACCOUNT, DOC_TYPE, BILL_DOC, REFERENCE, STATUS_PAYMENT, INV_CON, OSALES_FOUR, INV_REF, DOC_NUM, GL, DOC_DATE, DUE_DATE, DOC_CURRENCY, DOC_AMNT, LOC_AMNT, PAY_TERM, POST_K, LINE_N) values ('" & ACCOUNT & "', '" & DOC_TYPE & "', '" & BILL_DOC & "', '" & REFERENCE & "', '" & STATUS_PAYMENT & "', '" & INV_CON & "', '" & OSALES_FOUR & "', '" & INV_REF & "', '" & DOC_NUM & "', '" & GL & "', '" & DOC_DATE & "', '" & DUE_DATE & "', '" & DOC_CURRENCY & "', '" & DOC_AMNT & "', '" & LOC_AMNT & "', '" & PAY_TERM & "', '" & POST_K & "', '" & LINE_N & "')"
新代码:

conn.Execute "insert into one_rep_sap_temp  (ACCOUNT, DOC_TYPE, BILL_DOC, REFERENCE, STATUS_PAYMENT, INV_CON, OSALES_FOUR, INV_REF, DOC_NUM, GL, DOC_DATE, DUE_DATE, DOC_CURRENCY, DOC_AMNT, LOC_AMNT, PAY_TERM, POST_K, LINE_N) values ('" & ACCOUNT & "', '" & DOC_TYPE & "', '" & BILL_DOC & "', '" & REFERENCE & "', '" & STATUS_PAYMENT & "', '" & INV_CON & "', '" & OSALES_FOUR & "', '" & INV_REF & "', '" & DOC_NUM & "', '" & GL & "', '" & Format(DOC_DATE, "YYYY-MM-DD") & "', '" & Format(DUE_DATE, "YYYY-MM-DD") & "', '" & DOC_CURRENCY & "', '" & DOC_AMNT & "', '" & LOC_AMNT & "', '" & PAY_TERM & "', '" & POST_K & "', '" & LINE_N & "')"
解决办法是这样

格式(文件日期,“YYYY-MM-DD”)

感谢您在这个问题上的帮助。 :D

我可以解决这个问题

原始代码:

conn.Execute "insert into one_rep_sap_temp  (ACCOUNT, DOC_TYPE, BILL_DOC, REFERENCE, STATUS_PAYMENT, INV_CON, OSALES_FOUR, INV_REF, DOC_NUM, GL, DOC_DATE, DUE_DATE, DOC_CURRENCY, DOC_AMNT, LOC_AMNT, PAY_TERM, POST_K, LINE_N) values ('" & ACCOUNT & "', '" & DOC_TYPE & "', '" & BILL_DOC & "', '" & REFERENCE & "', '" & STATUS_PAYMENT & "', '" & INV_CON & "', '" & OSALES_FOUR & "', '" & INV_REF & "', '" & DOC_NUM & "', '" & GL & "', '" & DOC_DATE & "', '" & DUE_DATE & "', '" & DOC_CURRENCY & "', '" & DOC_AMNT & "', '" & LOC_AMNT & "', '" & PAY_TERM & "', '" & POST_K & "', '" & LINE_N & "')"
新代码:

conn.Execute "insert into one_rep_sap_temp  (ACCOUNT, DOC_TYPE, BILL_DOC, REFERENCE, STATUS_PAYMENT, INV_CON, OSALES_FOUR, INV_REF, DOC_NUM, GL, DOC_DATE, DUE_DATE, DOC_CURRENCY, DOC_AMNT, LOC_AMNT, PAY_TERM, POST_K, LINE_N) values ('" & ACCOUNT & "', '" & DOC_TYPE & "', '" & BILL_DOC & "', '" & REFERENCE & "', '" & STATUS_PAYMENT & "', '" & INV_CON & "', '" & OSALES_FOUR & "', '" & INV_REF & "', '" & DOC_NUM & "', '" & GL & "', '" & Format(DOC_DATE, "YYYY-MM-DD") & "', '" & Format(DUE_DATE, "YYYY-MM-DD") & "', '" & DOC_CURRENCY & "', '" & DOC_AMNT & "', '" & LOC_AMNT & "', '" & PAY_TERM & "', '" & POST_K & "', '" & LINE_N & "')"
解决办法是这样

格式(文件日期,“YYYY-MM-DD”)

感谢您在这个问题上的帮助。
:D

这是您真正的
sa
密码吗?不要使用“sa”用户。句点。尝试使用日期格式DMY;将日期列格式化为YYYY-MM-DD,并将其作为字符串传递。我尝试在自定义和文本字段中进行此操作。谢谢。这是你真正的
sa
密码吗?不要使用“sa”用户。句点。尝试使用日期格式DMY;将日期列格式化为YYYY-MM-DD,并将其作为字符串传递。我尝试在自定义和文本字段中进行此操作。谢谢