mysql - MS Access VBA 从表单写入表

标签 mysql forms vba ms-access subform

  • 我有一个表格(采购订单)和一个子表格 (采购订单详情)。主窗体包含 个数 PO(文本框)、供应商(组合框)、员工(组合框)、 状态(组合框),其中包含 2 条记录(新建和完成)和一个日期框(创建 PO 时)。子表单(数据表)包含产品(组合框)、数量和一个价格字段。

  • 我想做的是在主窗体上添加一个按钮,这样就可以了 接下来。

  • 按下按钮时,应执行 VBA 代码并执行下一步操作。 从主窗体中获取数据(采购订单编号、状态和日期) 和子表格(产品、数量和价格)并将所有内容放入 一张表 (StockMovements)。

我设法用下一个代码做到了这一点:

Private Sub cmdOrder_Click()
Dim strSQL As String

    strSQL = "INSERT INTO StockMovement (ID_Product, Status, Quantity, ID_PurchaseOrder) VALUES (" & _
               Me.frmPurchaseOrderDetails_Subform.Form!comboboxProduct & ", '" & _
               Me!txtStatus & "', " & _
               Me.frmPurchaseOrderDetails_Subform.Form!txtQuantity & ", " & _
               Me!txtID_PurchaseOrder & ");"
    DoCmd.RunSQL strSQL
    Me.Requery

End Sub

但是,有两个问题:

  1. 如您所见,我没有添加日期字段,因为出现错误, 不记得具体是哪一个了,但我记得是 2075;
  2. 代码在没有日期的情况下工作,但只将一个产品添加到 表,第一个。在采购订单中通常有更多 不止一种产品。

因为我是 VBA 的新手,所以我恳请您像对待新手一样对待我,并尽可能详细地解释。 (修正了代码,忘了更改语言。我的意思是我粘贴了错误的,现在它是正确的但仍然无法正常工作:))

谢谢!

最佳答案

1) 如果您只有一个特定领域有问题,我会检查那个领域有什么特别之处。可能输入被格式化为字符串,字段被格式化为日期/时间。在这种情况下,请尝试使用 CDate()-Function。我可以想象,最后的 .Value 也可以解决问题。

Dim datDate as Date

datDate = CDate(Me!txtDate.Value)

2) 您的代码只插入一行是绝对正确的。请记住,例如Me!txtStatus.Value 是一个仅包含一条数据的文本框。数据行保存在表格中,根据您在主窗体中选择的行(= 一行),相应的值显示在文本框中。

INSERT INTO table (field1,field2) VALUES (value1,value2) 

INSERT INTO 每次执行时插入一行。所以你提到的代码中的SQL需要重复。您可以使用循环来做到这一点。

Dim strSQL As String

strSQL = ""

 For Each Item In Group
    strSQL = strSQL & "INSERT INTO table (field1,field2) VALUES (value1,value2)"
 Next

在我看来,以这种方式复制数据对 VBA 来说绝对令人厌烦。您需要创建记录集、修改和合并它们。我会尝试使用 Access Non-VBA-Solutions 解决尽可能多的问题。

我的问题是:您是否考虑过将表单(和子表单)直接链接到表格?

关于mysql - MS Access VBA 从表单写入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41111040/

相关文章:

html - 具有可变内容和固定区域控制按钮的表单

java - Struts 2 表单标签中的多个提交按钮

vba - Excel VBA 双击

php - 向 joomla MVC ListView 中的每个项目添加相关数据的计数

php - 从数据库中选择数据以查找条件中的 datediff

c# - mysql 权限错误。涉及SELECT命令

mysql - 如何在 T-SQL 中执行 atan2 函数?

java - 通过Servlet提交表单

excel - 如何在拆分工作表的 Pane 中禁用或限制滚动

vba - 根据列中的条件复制一系列行并粘贴到名为条件的不同工作表中