0
SQL Server INSERT 쿼리에 문제가 있습니다.VBA Excel SQL Server INSERT 쿼리
먼저, 여기에 내가 달성하기 위해 노력하고있는 작업은 다음과 같습니다
나는이 MS SQL Server에 수출하고자하는 엑셀 워크 시트의 제품 목록을 가지고있다.
이Execution error '-2147217900 (80040e14)':
The Scalar variable "@P1Date" must be declare.
이 사람이 나를 도와 드릴까요 : 나는라는 오류가
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
: 여기
내가 노력 코드입니다?PS 내가 VBA 코멘트가 "//"로 수행하지만, " '"여기에 읽기 덜 쉽게 코드를하지 알고 그래서 내가 명명 된 매개 변수가 작동합니다 생각하지 않습니다
나는 약간 엉망이다. 코드에서 P1Date에 대한 참조가 없다는 것이 확실합니까? –
긴 샷이지만 날짜는 종종 예약어입니다. 다른 것을 사용하거나 매개 변수 이름으로 사용할 때마다 []로 묶으십시오. – Rory
@AnthonyHorne 내 생각 엔 그 "?" "? Date"에서 "@ P1"마녀를위한 스위치를 얻는 것은 매개 변수 번호 1이 될 것이고 나머지는 "@ P1Date"결과로 스쿼시를 얻게 될 것입니다. 그러나 이것을 교정하는 방법이나 이유는 모르겠습니다. – Sebastien