我的表单 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 = Me.myText.text & rs.Fields(0) & rs.Fields(1) & _
rs.Fields(2) & rs.Fields(3) & vbCrLf
到Me.myText
。
现在我的代码似乎在开始工作。当我逐步调试时,文本框会像它应该的那样填充,但是当Code退出do while循环时,只有第一行的第一个字段显示在文本框中。
debug.print Me.myText
显示所有行。退出循环后仍显示所有行。但在表单中,文本框仅显示第一个记录,第一个字段。
表单和文本框都没有除此事件之外的任何事件,这些事件在表单加载中。
有什么问题?
答案 0 :(得分:1)
使用属性.Value(这是textbox的默认属性),而不是.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