2
Excel에서 데이터를 가져와 데이터베이스로 가져와야하지만 데이터를 업데이트하거나 삽입 할 수 있도록 각 업로드마다 테이블에 데이터가 있는지 먼저 확인해야합니다.'존재하는 경우'ADODB 데이터베이스 연결을 사용하는 VBA의 SQL 쿼리
업데이트 또는 삽입을 구분하려면 SQL에서 정상적으로 작동하는 SQL IF EXIST 명령을 사용해야합니다. Excel VBA에서이 작업을 시도하면 "명령 개체에 명령 텍스트가 설정되지 않았습니다."라는 오류 메시지가 나타납니다.
Dim strSQL As String
Dim Value As String
Dim Reference As String
Set RCconn = New ADODB.Connection
Set TuneCMD = New ADODB.Command
' Establish Recordset
Set Results = New ADODB.Recordset
'Establish a Connection
With RCconn
.Provider = "SQLOLEDB"
.ConnectionString = ConStr
End With
'Open the connection
RCconn.Open
'i Columns
For i = 5 To 10 '16
'j rows
For j = 6 To 60 '145
Value= Sheets("Value").Cells(j, i)
Reference= "W_F/P_" & Sheets("Reference").Cells(j, i)
stringTest = "IF EXISTS (SELECT * FROM UploadTable WHERE Ref = '" & Reference & "') "
stringTest = stringTest & "UPDATE Val "
stringTest = stringTest & "SET Val = '" & Value & "' "
stringTest = stringTest & "where Ref = '" & Reference & "' "
stringTest = stringTest & "Else "
stringTest = stringTest & "INSERT INTO UploadTable (Val , Ref) "
stringTest = stringTest & "values ('" & Value & "', '" & Reference & "')"
RCconn.Execute strSQL
Next
Next
Set Results = Nothing
RCconn.Close
Set RCconn = Nothing
아래
참조 코드는 '존재하는 경우는'VBA에서 사용 할 수없는 경우인가? 해결 방법이 있습니까?
감사
감사합니다. Pradeep. 'Sheets ("Test_Page")를 추가하려고 시도했습니다. 셀 (j, i) = stringTest'before 'RCconn.Execute strSQL'. 결과를 SQL Server Maagement Studio에 복사하면 오류없이 쿼리를 실행할 수 있습니다. – Selrac
'User ID = sa'와'Password ='를 임시로 설정하면 연결 문자열에서 작동합니까? –
감사합니다. 내 문제는 'RCconn.Execute strSQL'이었습니다. 나는 'RCconn.Execute stringTest'로 바뀌었고 모든 것이 훌륭했습니다. 'esxist'를 사용할 수 있는지 확인해 주셔서 감사 드리며이 문제를 해결하기 위해 올바른 방법으로 저를 설정해 주셔서 감사합니다. 많이 감사합니다 – Selrac