在这张表格中,我创建了一个网格,几乎看起来像一个条形图,每个月都有很少的“单元格”堆叠。这些“单元格”中的每一个都是方形子形式,我创建了用作子形式的小方形形式。
所以我想知道的是,运行select查询的代码(VB)是什么,只使用该查询中的特定记录?例如,这些小的“单元格”形式中的每一个都成为子形式,代表一个组织,如果我运行一个顶级的第N个查询,我得到了10个顶级商店......所以我的想法是使用每个小形式作为该查询中每条记录的代表。因此,对于第一个单元格,我想运行SELECT查询,获取结果,并仅使用第一个记录。然后在第二个表单上,运行完全相同的查询,并仅使用第二个记录,依此类推!
我想它有点奇怪,但它会给他们他们想要的东西,而我唯一不确定的部分是“确切地定义我想在VBA中使用哪条记录”
答案 0 :(得分:2)
您可以将每个子表单的SQL更改为:
SELECT TOP 1 ID, F1, F2 From Table
SELECT TOP 2 From Table WHERE ID NOT IN (SELECT TOP 1 ID From Table)
SELECT TOP 3 From Table WHERE ID NOT IN (SELECT TOP 2 ID From Table)
<...>
SELECT TOP 10 From Table WHERE ID NOT IN (SELECT TOP 9 ID From Table)
或者,看到您已经有一些奇怪的设置,您可以使用记录集将每个ID写入10个隐藏文本框控件之一,并使用这些文本框中的每一个作为链接主字段,ID为链接子字段对于子表单。
链接主字段和链接子字段是子窗体控件的属性,而不是包含的窗体。
答案 1 :(得分:1)
如果我理解你的要求,你可以这样做。
表格结构
ID Autonumber,
Col1 Text
<强> VSCode 强>
Private Sub Command0_Click()
Dim rec As Recordset
Dim id As Integer
Set rec = CurrentDb.OpenRecordset("SELECT TOP 10 * FROM Table1")
While Not rec.EOF
id = rec.Fields("ID")
rec.MoveNext
Wend
End Sub
答案 2 :(得分:1)
您将SQL语句视为pseudoTable的定义,即您可以像操作表一样操作的一组记录(RecordSet)。
Dim cnn As ADODB.Connection
Dim pseudoTable As ADODB.Recordset
Dim strSQL As String
Set cnn = CurrentProject.Connection
Set pseudoTable = New ADODB.Recordset
strSQL = "SELECT Title FROM realTable where realID < 1000;"
pseudoTable.Open strSQL, cnn, adOpenStatic, adLockOptimistic
If Not pseudoTable.BOF And Not pseudoTable.EOF Then
pseudoTable.MoveFirst
Do Until pseudoTable.EOF
' do something with the table
pseudoTable.MoveNext
Loop
上面的代码应该会给你一个良好的开端。