VBA Excel SQL Server插入查询
我在SQL Server插入查询中遇到问题 首先,以下是我努力实现的目标: 我想将excel工作表中的产品列表导出到MS SQL Server中 以下是我尝试的代码:VBA Excel SQL Server插入查询,sql,sql-server,vba,excel,Sql,Sql Server,Vba,Excel,我在SQL Server插入查询中遇到问题 首先,以下是我努力实现的目标: 我想将excel工作表中的产品列表导出到MS SQL Server中 以下是我尝试的代码: Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim cmd As ADODB.Command Dim Client As String Set cn = New ADODB.Connection Set cmd = New ADODB.Command //Works
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim Client As String
Set cn = New ADODB.Connection
Set cmd = New ADODB.Command
//Worksheets("Config").cells(1, "B").Value contains the connection string
cn.Open Worksheets("Config").Cells(1, "B").Value
cmd.ActiveConnection = cn
cmd.CommandType = adCmdText
If Worksheets("Configuration").Cells(2, "B").Value = 1 Then
cmd.CommandText = "SELECT * FROM Cardex WHERE NbCardex = ?"
ElseIf Worksheets("Configuration").Cells(2, "B").Value = 0 Then
cmd.CommandText = "SELECT * FROM Cardex WHERE Name = ?"
End If
cmd.Prepared = True
cmd.Parameters.Append cmd.CreateParameter("Client", adVarChar, adParamInput, 250,
UCase(Worksheets("Exporter").Cells(2, "B").Value))
Set rs = cmd.Execute
If Not rs.EOF Then
Client = rs.Fields("NoCardex").Value
End If
rs.Close
//The code work until it reach this point, The next lines I am not sure what is wrong
//Hell I'm not even sure what i am doing.
//Problem is, nothing is added into the table
Dim cell As Range
For Each cell In Worksheets("Exporter").Range("Liste")
If cell.Row > 4 And Not cell.Value = vbNullString Then
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandType = adCmdText
cmd.CommandText = "INSERT INTO NewTable(Dte, NbTr, NbClient, NbTr2, NbLine, NbProd,
Desc, Qty, Cost, Prc, FlImp, FLDone)
VALUES(?Date, ?Trans, ?Client, ?Projet, ?Ligne, ?Prod, ?Desc,
?Qte, ?Cout, ?Vend, ?Imp, 0)"
cmd.Prepared = True
cmd.Parameters.Append cmd.CreateParameter("Date", adVarChar, adParamInput, 8, Worksheets("Exporter").Cells(1, "E").Value)
cmd.Parameters.Append cmd.CreateParameter("Trans", adVarChar, adParamInput, 15, Worksheets("Exporter").Cells(1, "B").Value)
cmd.Parameters.Append cmd.CreateParameter("Client", adVarChar, adParamInput, 15, Client)
cmd.Parameters.Append cmd.CreateParameter("Projet", adVarChar, adParamInput, 20, Worksheets("Exporter").Cells(2, "E").Value)
cmd.Parameters.Append cmd.CreateParameter("Ligne", adInteger, adParamInput, , (cell.Row - 4))
cmd.Parameters.Append cmd.CreateParameter("Prod", adVarChar, adParamInput, 30, cell.Value)
cmd.Parameters.Append cmd.CreateParameter("Desc", adVarChar, adParamInput, 8000, Worksheets("Exporter").Cells(cell.Row, "B").Value)
cmd.Parameters.Append cmd.CreateParameter("Qte", adCurrency, adParamInput, , Worksheets("Exporter").Cells(cell.Row, "C").Value)
cmd.Parameters.Append cmd.CreateParameter("Cout", adCurrency, adParamInput, , Worksheets("Exporter").Cells(cell.Row, "D").Value)
cmd.Parameters.Append cmd.CreateParameter("Vend", adCurrency, adParamInput, , Worksheets("Exporter").Cells(cell.Row, "E").Value)
cmd.Parameters.Append cmd.CreateParameter("Imp", adSmallInt, adParamInput, , Worksheets("Exporter").Cells(cell.Row, "F").Value)
cmd.Execute()
End If
Next
cn.Close
我得到一个错误,上面写着:
Execution error '-2147217900 (80040e14)':
The Scalar variable "@P1Date" must be declare.
有人能帮我吗
PS我知道VBA注释没有用“/”完成,但是“'”使代码在这里不那么容易阅读,所以我把它们换掉了我认为命名参数不起作用。尝试使用:
cmd.CommandText = "INSERT INTO NewTable(Dte, NbTr, NbClient, NbTr2, NbLine, NbProd,
Desc, Qty, Cost, Prc, FlImp, FLDone)
VALUES(?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, 0)"
并确保以后附加的参数顺序正确。;) 我有点不知所措。您确定代码中的任何地方都没有引用P1Date吗?很可能,但Date通常是一个保留字-尝试使用其他词,或将其作为参数名括在[]中。@AnthonyHorne是的,我猜是“@P1”的“?in”?Date”get开关witch将是参数1,它将与reste一起挤压,因此结果为“@P1Date”,但我不知道如何纠正这一点,也不知道它为什么要这样做this@Rory我不认为这是问题所在“?Date”是我查询中的参数名,它应该通过这行
cmd.Parameters.Append cmd.CreateParameter(“日期”)输出,adVarChar,adParamInput,8,工作表(“导出器”).Cells(1,“E”).Value)