【问题标题】:How to add DAO recordset as rows in a datasheet subform如何将 DAO 记录集添加为数据表子窗体中的行
【发布时间】:2017-01-10 20:34:40
【问题描述】:

我有以下代码将产品信息从销售报价转移到租赁资格表格。产品转到数据表视图中的子表单,但是,记录集中的每一行仅更新子表单的第一行。

sql = "SELECT ProdID, ProdQty, ProdPrice FROM ProductsQuoted WHERE quoteID = " & quoteeID
  Set db = CurrentDb
  Set rs = CurrentDb.OpenRecordset(sql)

  If Not (rs.EOF And rs.BOF) Then
     rs.MoveFirst
     Do Until rs.EOF
        [Forms]![Qualification]![QualificationDetails]![Item] = rs.Fields("ProdID").Value
        [Forms]![Qualification]![QualificationDetails]![Qty] = rs.Fields("ProdQty").Value
        [Forms]![Qualification]![QualificationDetails]![Price] = rs.Fields("ProdPrice").Value
        rs.MoveNext
    Loop
  End If

如何让数据集中的每条记录更新子表单上的新行?

【问题讨论】:

  • 不使用Set rs = CurrentDb.OpenRecordset(sql),为什么不使用Set rs = db.OpenRecordset()
  • 是的,这是个好主意。我可以那样做。我已经做出了改变。

标签: ms-access vba ms-access-2007


【解决方案1】:

好的,我能够使用 DoCmd.GoToRecord、acNewRec 并满足我的需要。

sql = "SELECT ProdID, ProdQty, ProdPrice FROM ProductsQuoted WHERE quoteID = " & quoteeID
    Set db = CurrentDb
    Set rs = db.OpenRecordset(sql)

       If Not (rs.EOF And rs.BOF) Then
        rs.MoveFirst
        Do Until rs.EOF
            Debug.Print rs.Fields("ProdID") & ", " & rs.Fields("ProdQty") & ", " & rs.Fields("ProdPrice")
            QualificationDetails.SetFocus
            QualificationDetails!Item.SetFocus
            DoCmd.GoToRecord , , acNewRec
            [Forms]![Qualification]![QualificationDetails]![Item] = rs.Fields("ProdID").Value
            [Forms]![Qualification]![QualificationDetails]![Qty] = rs.Fields("ProdQty").Value
            [Forms]![Qualification]![QualificationDetails]![Price] = rs.Fields("ProdPrice").Value
            rs.MoveNext
        Loop
    End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多