选择表单的特定记录

时间:2009-11-23 11:27:41

标签: ms-access vba recordset

在这张表格中,我创建了一个网格,几乎看起来像一个条形图,每个月都有很少的“单元格”堆叠。这些“单元格”中的每一个都是方形子形式,我创建了用作子形式的小方形形式。

所以我想知道的是,运行select查询的代码(VB)是什么,只使用该查询中的特定记录?例如,这些小的“单元格”形式中的每一个都成为子形式,代表一个组织,如果我运行一个顶级的第N个查询,我得到了10个顶级商店......所以我的想法是使用每个小形式作为该查询中每条记录的代表。因此,对于第一个单元格,我想运行SELECT查询,获取结果,并仅使用第一个记录。然后在第二个表单上,运行完全相同的查询,并仅使用第二个记录,依此类推!

我想它有点奇怪,但它会给他们他们想要的东西,而我唯一不确定的部分是“确切地定义我想在VBA中使用哪条记录”

3 个答案:

答案 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为链接子字段对于子表单。

链接主字段和链接子字段是子窗体控件的属性,而不是包含的窗体。

alt text http://ltd.remou.com/linkchildlinkmaster.png

答案 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

上面的代码应该会给你一个良好的开端。