2015-04-06 52 views
0

我對VBA很新穎,我試圖在打印發票的發票創建表單上創建一個按鈕。該按鈕的單擊事件應打開一個報告並將窗體上的發票ID分配給openargs屬性。OpenArgs沒有通過變量來報告

Private Sub cmdPrint_Click() 
Dim InvoiceNum As Integer 

If Me.Dirty Then 'Save any edits. 
    Me.Dirty = False 
End If 

If Me.NewRecord Then 'Check there is a record to print 
    MsgBox "Select a record to print" 
Else 
    InvoiceNum = Me.[Invoice Number] 
    DoCmd.OpenReport "Invoice", acViewPreview, , , , InvoiceNum 
End If 
End Sub 

然後報告打開時運行的代碼:

Dim InvoiceNum As Integer 
InvoiceNum = Me.OpenArgs 

當我點擊窗體上的按鈕然而,輸入參數框出現。奇怪的是,這個框中的文本是我想分配給OpenArgs Property的發票號碼的值。我無法解決如何使OpenArgs的值從表單發票號碼。

我不知道我做了什麼錯誤,似乎無法在任何地方找到答案。 任何幫助,將不勝感激。

+0

它必須工作,所以其他事情正在發生。 1:在打開報告時查找OnLoad中的代碼和其他事件。 2:嘗試重命名變量。 3:嘗試使用:InvoiceNum = Me![發票號碼]。值 – Gustav 2015-04-06 07:33:35

回答

0

Dim InvoiceNum As Integer InvoiceNum = Me.OpenArgs

東西看起來,當你打開你宣佈一個名爲InvoiceNum變量,設置變量打開參數數量的值報告爲關閉。我不確定你打算如何處理這個變量。如果你的目標是,以濾除發票編號發票,那麼你應該嘗試這樣的事情......

me.filter = "[Invoice Number]= " & Me.OpenArgs

或者什麼,我認爲正在發生的事情是,你有你的形式,其控制源上的未綁定的控件是InvoiceNum,並且您正試圖將其值設置爲OpenArgs。因爲它是一個未綁定的控件,只要表單打開,它就會給你一個參數框,因爲InvoiceNum不是表中的字段。如果我是正確的並且發生了這種情況,您可以嘗試通過在控件源中使用=[OpenArgs]將該控件的源直接設置爲打開參數,並從窗體的OnLoad事件中刪除所有代碼。

0

您是否肯定在名爲[發票號]的第一個表單上有一個字段?如果是這樣,請在DoCmd.OpenReport代碼行上放置一個斷點,並使用立即窗口或鼠標懸停來確定InvoiceNum在該點的值。如果InvoiceNum與您所期望的不同,那麼請嘗試將字段[發票號碼](本人,我從不使用字段名稱中的空格,它只會導致問題)重命名爲其他內容並相應地調整您的代碼。

如果InvoiceNum看起來正確,請在OpenArgs語句的發票報告中放置一個斷點,並查看它在該點的值。它看起來像你的代碼是健全的,但有些元素我們看不到可能影響你的變量。

0

感謝您的幫助球員。

我修改了一些代碼,並在其中放置了中斷點。 原來,問題不在於我想象的OpenArgs,而在於我在報告中如何使用它。 我改變了文本字段,我把ID在報告中的標籤和使用:

InvoiceNum = Me.OpenArgs 
    me.[label].caption = InvoiceNum 

我沒加什麼我原本我的問題,因爲我以爲我曾評論它。

現在完美運作。 再次感謝您的幫助。