일반 설명을 읽기 :MS 액세스 OpenRedcordset 잘못 문자열을
문제점 :OpenRecordset
은 올바른 쿼리를 읽지 않습니다. 내 쿼리를 내 Excel 파일로 내 보내야합니다. 그러나 나의 VBA는 잘못된 것을 지적하고있다.
제 생각에 라인 qry.SQL = "SELECT * FROM [dbo_SO_SalesHistory]"
은 충분한 정보를 제공하지 않습니다.
SQL
SELECT Sum(dbo_SO_SalesHistory.DollarsSold) AS SumOfDollarsSold
FROM dbo_SO_SalesHistory
WHERE (((dbo_SO_SalesHistory.InvoiceDate)
BETWEEN [Forms]![RUN]![textBeginOrderDate] AND [Forms]![RUN]![textendorderdate]));
VBA
Option Compare Database
Option Explicit
Public Function TRANS2()
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim xlWS As Excel.Worksheet
Dim acRng As Variant
Dim xlRow As Integer
Dim db As DAO.Database
Dim qry As QueryDef
Dim rst As Recordset
Dim prm As DAO.Parameter
Dim strSQL As String
Set db = CurrentDb
Set xlApp = New Excel.Application
Set xlWB = xlApp.Workbooks.Open("C:\Users\J\Desktop\August 2017.xlsx")
Set xlWS = xlWB.Worksheets("Totals")
xlRow = (xlWS.Columns("K").End(xlDown).Row)
Set qry = db.QueryDefs("2_Total")
strSQL = strSQL & " [dbo_SO_SalesHistory].[InvoiceDate] Between #" _
& [Forms]![Run]![textBeginOrderDate] & "# And #" _
& [Forms]![Run]![textendorderdate] & "#"
qry.SQL = "SELECT * FROM [dbo_SO_SalesHistory]"
Set rst = db.OpenRecordset("2_Total", dbOpenDynaset)
Dim c As Integer
c = 11 'C is the one that stores column number, in which c=1 means column A, 11 is for column K, 12 for Column L
xlRow = xlRow + 11
Do Until rst.EOF
For Each acRng In rst.Fields
xlWS.Cells(xlRow, c).Formula = acRng
c = c + 1
Next acRng
xlRow = xlRow + 1
c = 1
rst.MoveNext
If xlRow > 25 Then GoTo rq_Exit
Loop
rq_Exit:
rst.Close
Set rst = Nothing
Set xlWS = Nothing
xlWB.Close acSaveYes
Set xlWB = Nothing
xlApp.Quit
Set xlApp = Nothing
Exit Function
End Function
코드는 매우 혼란 스럽습니다. 1. 어디에서나 사용되지 않는 문자열'strSQL'에서 쿼리를 준비하십시오. 2. 아무데도 사용되지 않는 QueryDef'qry'를 정의합니다. 3. Excel 파일에 출력 할 수있는 것은 첫 번째 행과 열만 반환하는 결과를 가져 오는 '첫 번째'레코드 세트의 포함입니다. 따라서 표시된 Excel 파일과 아무 관계가 없습니다. . 이 모든 것이 나에게 신비 다. –
@ThomasG No.3은 내가 지금 가지고있는 문제/문제입니다. 내 2_Total 쿼리는 내 Excel 파일로 내보낼 수있는 단일 값을 반환합니다. 그러나 Excel 파일에는 관련없는 문자열이 인쇄됩니다. –
@ThomasG이 문제에 대한 조언은 높이 평가 될 것입니다. 나는 VBA의 초보자입니다. 감사합니다. 내 코드에서 몇 가지 문제점을 지적했음을 감사합니다. –