2017-11-23 13 views
0

내 VBA 코드에서 만든 배열을 사용하여 myfile.sqlite에서 "OrigMask"라는 테이블 열을 업데이트하려고합니다. 구문과 관련하여 고민 중입니다. VBA 배열의 이름은 "NewMask"이며 "OrigMask"테이블과 마찬가지로 864 개의 요소가 있습니다. VBA에서 SQL 문을 작성하고 실행하려면 어떻게해야합니까? 도움말은 매우 감사합니다!VBA 생성 된 배열에서 Sqlite 테이블 값 업데이트

나는 & 연결과 같이 성명을 수립하고 있습니다 :

Set conn = CreateObject("ADODB.Connection") 

Set rst = CreateObject("ADODB.Recordset") 

conn.Open "DRIVER=SQLite3 ODBC Driver;Database=C:\myfile.sqlite;" 

strSQL1 = "UPDATE MyTable SET OrigMask= NewMask;" 

rst.Open strSQL1, conn 
Set rst = Nothing: Set conn = Nothing 
+0

정말 어떻게 SQL 작품 아니에요. 업데이트로 달성하고자하는 목표는 무엇입니까? –

답변

0

몇 가지 문제를 여기에 :

  1. 당신은 NewMask를 사용하면 배열을 반복하고 으로 SQL에 전체 개체를 통합 할 필요가은 데이터베이스에서 인식 할 수없는 식별자입니다.

  2. 업데이트 쿼리는 동작 쿼리이며 레코드 집합에서 검색 할 결과 집합이 아닙니다.

  3. UPDATEWHERE 절이 필요하거나 모든 레코드가 행별로 업데이트되지 않습니다.

따라서, 매개 변수가 ADO 명령 개체를 통해 For Each 루프를 고려해

strSQL1 = "UPDATE MyTable SET OrigMask = ? WHERE id = ?;" 
i = 1 

For Each var In NewMask 
    Set cmd = CreateObject("ADODB.Command") 
    With cmd 
     .ActiveConnection = conn 
     .CommandText = strSQL1 
     .CommandType = adCmdText 
     .CommandTimeout = 15 
     .Parameters.Append .CreateParameter("maskparam", adVarChar, adParamInput, 255, var) 
     .Parameters.Append .CreateParameter("idparam", adInt, adParamInput, , i) 
     .Execute 
    End With 

    i = i + 1 
Next var