2016-08-01 16 views
0

我有一個表格myForm帶有文本框myText將文本追加到文本框中不添加記錄集中的所有字段

的onLoad功能,我寫了應該是所有行從一個記錄,數據庫的鎖文件追加,到會將myText文本框代碼。

實際情況是,只有四個字段的第一個字段被添加到文本框中。

Dim cn As New ADODB.Connection 
Dim cn2 As New ADODB.Connection 
Dim rs As New ADODB.Recordset 
Dim i, j As Long 

cn.Provider = "Microsoft.Jet.OLEDB.4.0" 
cn.Open "Data Source=Z:\myDatabase.mdb"  
cn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _ 
    & "Data Source=Z:\myDatabase.mdb" 

Set rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}") 

    Me.myText.SetFocus 
    Me.myText.text = "" 
    Do While Not rs.EOF    
     Me.myText.text = Me.myText.text & rs.Fields(0) & vbTab & rs.Fields(1) & vbTab & _ 
     rs.Fields(2) & vbTab & rs.Fields(3) & vbCrLf 
     rs.MoveNext 
    Loop 

我試圖

Debug.Print rs.Fields(0) & vbTab & rs.Fields(1) & vbTab & rs.Fields(2) & vbTab & rs.Fields(3) 

和所有四個領域在即時窗口中顯示。

編輯: 我拿出vbtab,因爲它不支持,文件本身已經擁有的空間,我在

Me.myText.text = Me.myText.text & rs.Fields(0) & rs.Fields(1) & _ 
     rs.Fields(2) & rs.Fields(3) & vbCrLf 

改變Me.myText.textMe.myText。 現在我的代碼似乎在一開始就工作。當我一步一步地調試文本框就像它應該填充的一樣,但是當Code退出do while循環時,只有第一行的第一個字段顯示在文本框中。

debug.print Me.myText退出循環之前顯示所有行。退出循環後仍顯示所有行。但在表格中,文本框只顯示第一個記錄,第一個字段。

窗體和文本框都沒有任何其他事件,這是在窗體加載的事件。

出了什麼問題?

+0

在窗體的設計視圖中,滾動條和多行上允許的文本框中? –

+0

@GaryEvans,是的。 – MJH

回答

1

使用屬性。價值(這是文本框的默認屬性),而不是.TEXT

所以Me.myText.Text ==> Me.myText.Value或Me.myText

文本框支持多行vbCrLf。

與vbTab標籤不支持

限定myvbTab = 「」 作爲標籤分離器代替vbTab

修改代碼的下列片段:

myvbTab= " " 
dim row_data 
Do While Not rs.EOF  
    row_data = rs.Fields(0) & myvbTab& rs.Fields(1) & _ 
    myvbTab & rs.Fields(2) & myvbTab& rs.Fields(3) & vbCrLf   
    Me.myText= Me.myText & row_data 
    ' be sure that data is displayed, to know if control characters in row_data 
    Debug.Print row_data 
    rs.MoveNext 
Loop 

編輯:

要隔離問題,您可以運行該代碼:(獨立於讀取記錄集)

Me.myText.Value = "start " 
Dim tabChar As String 

tabChar = Chr(9) '" " 
Me.myText = Me.myText & "one" & tabChar & "two" & vbCrLf 
Me.myText = Me.myText & "three" & tabChar & "four" & vbCrLf 

它應該顯示

start one two 
three four 
+0

感謝'vbTab'提示。 – MJH

+0

我用你的代碼,起初它似乎工作。當我按照它應該調試文本框填充時,但是當我遍歷'end sub'時,除了記錄集第一行的第一個字段外,文本框中的所有行都消失了。如果我在「end sub」之前停止運行代碼,那麼這些行會保留在文本框中。 – MJH

+0

註釋行設置焦點,並使用Me.myText,添加debug.Print來顯示什麼來臨,可能是從記錄集 –

相關問題