访问使我从选定的列中获得了随机记录

时间:2018-08-09 11:53:03

标签: vba ms-access access-vba

我要访问,将所选表和列中的第一个值给我。 但是可以从选定的表和列中获得随机值给我。

问题

可以通过某种方式访问​​给我,例如:

我的表是“ tblExample”,有两列,每个标题的标题是[Column1],每个标题内的[Column2]包含此值

                +---------+----------+
                | Column1 | Column2  |
                +---------+----------+
                | 5       | mark     |
                | 3       | stewie   |
                | 2       | stack    |
                | 16      | overflow |
                +---------+----------+

我想从表“ tblExample”中读取[Column1]循环中的第一个值,并依次带给我。

示例值= 5/ after 3 / 2 / 16 ...

但是我的代码显示的是随机值,例如16/5/3/2

这是我的代码

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Dim VarA As String, varFR, varLR

    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblExample")        

    If rs.EOF Then
          FindRecordCount = 0
       Else
          rs.MoveLast
          FindRecordCount = rs.RecordCount
    End If        

    varLR = FindRecordCount
    Dim i As Long

    For i = 0 To rs.Fields.Count - 1
    rs.MoveFirst
        varFR = 1
        Do While varFR < varLR
            If IsNull(rs.Fields(i).Value) = True Then
                GoTo pula1
            End If
                VarA = rs.Fields(i).Value
                Debug.Print VarA
pula1:
            rs.MoveNext
        varFR = varFR + 1
        Loop
    Next

2 个答案:

答案 0 :(得分:0)

设置Recordset后,您可以像这样循环通过槽:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "show") {
        let viewController = segue!.destinationViewController as! ViewController
        viewController.shouldHideNavBar = true
    }
}

因此,它遍历记录就像在表中一样。如果需要其他序列,可以对记录集进行以下排序:

rs.MoveFirst
Do Until rs.EOF
   ---  Stuff happens
  rs.MoveNext
Loop

答案 1 :(得分:0)

没有主键的表没有内置的排序顺序。因此,记录集循环的结果可以是随机的。

您可以在打开记录集时提供排序顺序

Set rs = db.OpenRecordset("SELECT * FROM tblExample ORDER BY Column1")

(但是如果Column1包含重复值,结果仍然可以是随机的!)

或者如果您想要插入记录的顺序,请在表中添加一个AutoNumber 主键列。

为了便于阅读,您仍应指定顺序-

Set rs = db.OpenRecordset("SELECT * FROM tblExample ORDER BY ID")