2017-10-27 4 views
0

この単純な問題は、数日間私のトラックで止まってしまった。OpenRecordsetでクエリ内のフォーム参照を解決する

私のプログラムの一般的な説明:

  1. 私は日付範囲でクエリをフィルタリングするためにインタラクティブなアクセス形態をもつ 2017年8月1日と終了日(日EXを起動する))EX 2017年8月31日)
  2. 次に、私のクエリは単一の 値を返します。例)12345.23
  3. VBA機能を実行します。

問題:パラメータを明示的に指定することはできません。次の行が赤で強調表示されます。

strSQL = strSQL & "AND [dbo_SO_SalesHistory].[InvoiceDate] Between #"_ 
&[Forms]![RUN]![textBeginOrderDate] & "#And#"_ 
&[Forms]![RUN]![textendorderdate]&"#" 

私のSQLコード:

SELECT Sum(dbo_SO_SalesHistory.DollarsSold) AS SumOfDollarsSold 
FROM dbo_SO_SalesHistory 
While (((dbo_SO_SalesHistory.InvoiceDate) Between [Forms]![RUN]![textBeginOrderDate] And [Forms]![RUN]![textendorderdate])); 

フルコード:

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 qry As QueryDef 
    Dim rst As Recordset 
    Dim prm As DAO.Parameter 
    Dim strSQL As String 

    Set xlApp = New Excel.Application 
    Set xlWB = xlApp.Workbooks.Open("C:\Users\April.CAROBAPLASTICS\Desktop\August 2017.xlsx") 
    Set xlWS = xlWB.Worksheets("Totals") 

    xlRow = (xlWS.Columns("K").End(xlDown).Row) 
    Set qry = CurrentDb.QueryDefs("2_Total") 

    strSQL = strSQL & "AND [dbo_SO_SalesHistory].[InvoiceDate] Between #"_ 
    & [Forms]![RUN]![textBeginOrderDate] & "# And #"_ 
    & [Forms]![RUN]![textendorderdate] & "#" 
    qry.SQL = strSQL 

    Set rst = CurrentDb.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 
+0

'ます。strSQL =ます。strSQL&「AND [dbo_SO_SalesHistory] 。[InvoiceDate]# "_"の間に問題があるようですが、この時点までは 'strSQL'は割り当てられません。 kingクエリSQLは 'Where'節の一部にすぎません。これは永久に "2_Total"のSQLコードを変更するのでしょうか?よく分かりません。また、あなたのSQLコードが正しく表示されない、 'While'は' Where'でなければなりません。 'strSQL'変数に' AND'の前にスペースを入れることもできます。 @ChristopherD。 – MoondogsMaDawg

+0

あなたのコメントをありがとうございました。あなたのコメントのおかげでうまくいきます。あなたの助けを高く評価しました –

答えて

1

あなたはまだ二つのスペースが必要になります。

strSQL = strSQL & "AND [dbo_SO_SalesHistory].[InvoiceDate] Between #" _ 
& [Forms]![RUN]![textBeginOrderDate] & "# And #" _ 
& [Forms]![RUN]![textendorderdate] & "#" 
+0

ありがとうございますそれは動作します!あなたは素晴らしいです! –