워크 시트 "입력"에서 ID 배열을 취하는 간단한 스프레드 시트를 만들고 배열의 ID와 일치하는 레코드 만 요청하는 Oracle 데이터베이스를 쿼리하고 결과를 워크 시트 "출력"에 표시합니다.Excel VBA - 워크 시트 셀 범위를 사용하여 SQL 쿼리 실행
내 배열에 단일 ID 만 포함되어 있으면 (단일 셀 범위 지정) VBA가 작동하고 워크 시트 "출력"에 나타나는 Oracle 데이터베이스의 원하는 출력으로 모든 것이 완료됩니다. 좋은 시간.
문제점은 지금 내가 가지고있는 문제는, 워크 시트 "입력"에 ID 범위 (최대 약 5000)를 지정하여 내 배열에 포함시키고 각 배열을 오라클 데이터베이스에 전달하여 각각에 대해 데이터를 반환한다는 것입니다. ID가 발견되었습니다 (모든 ID가 존재할 것으로 기대하지는 않습니다). 이걸 시도 할 때마다 "오류 13 유형 불일치"오류가 나타나는 것 같습니다. 나쁜 시간.
내 VBA 코드는 다음과 같습니다
Dim OracleConnection As ADODB.Connection
Dim MosaicRecordSet As ADODB.RecordSet
Dim SQLQuery As String
Dim DBConnect As String
Dim count As String
Dim strbody As String
Dim Exclude As String
Dim i As Integer
Dim Rec As RecordSet
Dim InputIDs As Variant
Set OracleConnection = New ADODB.Connection
DBConnect = "Provider=msdaora;Data Source=MOSREP;User ID=***;Password=***;"
OracleConnection.Open DBConnect
' Clear Output Sheet Down
Sheets("Output").Select
Range("A2:F10000").Clear
' Set Input Range
Sheets("Input").Columns("A:A").NumberFormat = "0"
InputIDs = Sheets("Input").Range("A2:A10").Value
' SQL Query
SQLQuery = "select DMP.PERSON_ID, DMP.FULL_NAME, DMP.DATE_OF_BIRTH, DMA.ADDRESS, DMA.ADDRESS_TYPE, DMA.IS_DISPLAY_ADDRESS " & _
"from DM_PERSONS DMP " & _
"join DM_ADDRESSES DMA " & _
"on DMA.PERSON_ID=DMP.PERSON_ID " & _
"where DMP.PERSON_ID in (" & InputIDs & ")"
Set MosaicRecordSet = OracleConnection.Execute(SQLQuery)
Sheets("Output").Range("A2").CopyFromRecordset MosaicRecordSet
' Change DOB Format
Sheets("Output").Columns("C:C").NumberFormat = "dd/mm/yyyy"
' Set Left Alignment
Sheets("Output").Columns("A:Z").HorizontalAlignment = xlHAlignLeft
Range("A1").Select
OracleConnection.Close
Set MosaicRecordSet = Nothing
Set OracleConnection = Nothing
ActiveWorkbook.Save
아무도 내가 놓친 거지 무엇을 밝혀 수 있습니까? 나는 워크 시트 "input"의 "numberformat"을 "0"으로 설정하여 형식 불일치 문제를 해결하려고 시도했지만 도움이되지 않았습니다. 또한 각 레코드를 반복 할 루프가 있어야한다고 생각했지만이 유형 불일치 때문에 아직 그 단계에 도달하지 못했습니다.
모두에게 감사드립니다.
감사 매트
변형 배열을 쿼리의 인수로 전달할 수 없습니다. ID가 쉼표로 구분 된 문자열이어야합니다. – Kyle
감사합니다. 카일, 아래 토마스의 답변을 통해 제 문제를 해결할 수있었습니다. 설명하기 전까지는 변형 배열에 쉼표 구분 기호가 포함되지 않는다는 것을 알지 못했습니다. – mhammonde