我有一个简单的表,其中只有一个字段。看起来像这样:
PROJECT
Project1
Project2
Project3
我想在Access报告
的文本框中将其自动转换为这样Project1,Project2,Project3
如果有第3条记录或5条记录到第n条记录,则必须使用此功能。
答案 0 :(得分:0)
您可以使用VBA循环记录集。
Private Sub cmdProjects_Click()
'loop through each record, adding the results to the text string
Dim rs As Recordset
Dim sql As String
sql = "SELECT * FROM tblProjects"
Set rs = CurrentDb.OpenRecordset(sql)
With rs
If Not .EOF And Not .BOF Then
Dim i As Integer
Dim strOutput As String
.MoveLast
.MoveFirst
For i = 0 To rs.RecordCount - 1
If i = 0 Then
strOutput = !Project
Else
strOutput = strOutput & ", " & !Project
End If
.MoveNext
Next
Me.txtOutput.Value = strOutput
End If
End With
rs.Close
Set rs = Nothing
End Sub
答案 1 :(得分:0)
这是一个可以提供SQL语句的函数,它将返回逗号分隔的列表,其中包含该字段中的任何内容。
Public Function FieldString(ByVal sSql As String) As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open GetConnectionString
Set rs = cn.Execute(sSql)
FieldString = Replace(rs.GetString, vbCr, ", ")
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Function
它不会检查SQL语句以确保它只是一个字段,或者它不会返回对您的控件来说太长的字符串。但它应该给你基础。
它使用GetString
并用逗号/空格组合替换回车符。
以下是我在Immedate窗口中使用我的数据测试它的方法。
?FieldString("SELECT LocationName FROM Locations WHERE LocationCode > 140")
Lemars, Norfolk, Shenandoah, Harrisonville, DEF Production,
嗯,我猜这里有回车。