2012-05-30 56 views
1

我有一個報告的記錄源是查詢,說qryRecords。在報告標題中,我想添加一個冗長的備註字段(超過255個字符)。我建立了一個表來保存這些筆記(字段類型爲「備忘錄」),並且由於該表與報表的記錄源是分開的,因此我將使用VBA代碼將Notes字段放入報表中。在255個字符處截斷訪問報告字段

報告的開放時,我加入這個代碼:

Dim rst as Recordset 
Dim sql_qry as String 

sql_qry = "SELECT notes FROM tblNotes WHERE id = 1;" 
Set rst = CurrentDb.OpenRecordset(sql_qry) 

rst.MoveFirst 
Me.txtNote = rst![notes] 'I get the run-time error on this line 

不幸的是,我得到注意的地方運行時錯誤(「你不能將一個值分配到該對象」)。我在窗體上發現了一個具有類似問題的人,建議將代碼從打開的事件移動到OnCurrent事件,但該報告不存在該事件。有什麼建議麼?謝謝。

---原來的問題---

我有一個綁定文本框(txtNotes),並且當用戶打開窗體,文本框中,填入文本超過255個字符的一種形式(它連接數據庫中的各個字段)。這工作沒有問題。

窗體上有一個按鈕可以打開一個報告,在報告中,我將文本框的控件源設置爲Forms![frmMain]![frmSub]![txtNotes],這是提到的文本框以上。這也起作用,但由於某種原因,報告中的文本被截斷爲255個字符。表單的文本框是未綁定的,所以沒有基礎表來限制長度。有人知道爲什麼會發生這種情況,或者是否有解決方法?

+0

你用什麼數據庫來存儲你的數據? – HK1

+0

我在同一個Microsoft Access數據庫中使用表。對不起,我看到我沒有在文章中提到這一點。 – rryanp

回答

0

最有可能當來自該字段的數據被轉換爲文本類型而不是作爲備忘錄。真的沒有辦法顯式地將文本轉換爲備忘錄(你可以用CStr去轉換)。在對這種情況進行試驗時,我在表單上截斷了問題。

我建議你可能是以錯誤的方式在窗體上生成這個字段。美元甜甜圈可以在查詢中使用(在表單的控制源中使用),而不是將它們連接在一起並放入未綁定的字段中。同樣,您可以使用相同的查詢作爲您打開的報表的控制源。

如果所有這些都是不可能的,我會指示您將表格中的值轉儲到專門用於報告的表格中,然後使用該表格作爲報告的控制源。

---- ----編輯

我還爭辯說,你可以把它添加到您的報告的數據源。在我下面的例子中,我已經將tblNotes添加到條形表上的選擇。

SELECT bar.f0, bar.f1, bar.f2, bar.f3, tblNotes.notes 
FROM bar, tblNotes 
WHERE tblNotes.id = 1; 

是的,如果有300行吧,你會得到相同的備註字段的300份,但是這是一個小問題。

表單在那裏,您只需使txtNote的數據源爲tblNotes.Notes列。 txtNote當然可以存在於報告/頁面標題中,當MS Access生成它時,它只會使用一行。我不確定是選擇第一/最後一行,還是隨機排 - 從來沒有那麼少,因爲它們都是一樣的,沒關係。

+0

我認爲這是一個很棒的建議!不幸的是,報告中的這些文本字段充當實際數據上方的註釋,因此報告的記錄源必須是不同的查詢。我確實嘗試將數據放在表格中,然後填充表格中報告的文本框,但Access不會讓我這樣做。我使用了:「Me.txtNote = rst![notes]」,並且出現錯誤:「您無法爲此對象分配值。」該守則正處於報告的公開事件中。有什麼建議麼?我可以設置文本框的控制源與整個報告的記錄源不同嗎?謝謝! – rryanp

+0

也許你可以編輯這個問題,並且包括一個你的源數據的例子(如果你喜歡匿名的話),以及你期望報告的樣子。 – BIBD

+0

我編輯了這個問題,試圖更好地解釋我的新問題。謝謝你的幫助! – rryanp