使用表单的组合框创建 INSERT INTO sql 语句以将记录附加到 table

Creating INSERT INTO sql statement to append records to a table using a form's combo-boxes

我刚刚开始建立一个新的数据库来存储医疗记录。我正在尝试设置一个表单来处理所有最终用户功能,目前只是将治疗分配给列表中的患者。我在主窗体上有三个组合框:类别、治疗和患者。 Category 组合框来自 table tblCategories,Patient 组合框来自 table tblPatients。选择类别时,它会更新查询QryTreatmentsByCategory,该QryTreatmentsbyCategory具有将所显示的治疗记录限制在所选类别中的标准。此查询是主窗体上处理组合框的来源。

目标是将每个组合框中的数据附加到 table tblPatientReport,它有一个自动编号主键字段,然后是这三个值中的每一个的字段。 PatientID 字段和 CategoryID 字段都毫无问题地附加;但是,TreatmentID 字段没有。它不是附加治疗的 ID(table tblTreatments 的主键),而是附加所选治疗在查询中的位置。

For example, when choosing "Bladder Scan,' the Treatment ID should be 106. However, it is the 15th record in its' category when sorted alphabetically. Because the source data for the Treatment combo-box is the query qryTreatmentByCategory,Treatment ID 改为列为 15。但是,查询的第一个字段是来自 tblTreatments 的 TreatmentID,所以我不确定为什么它改为选择记录在查询中的位置。

INSERT INTO语句的代码如下:

Private Sub btnAddTreatment_Click()
    DoCmd.RunSQL "INSERT INTO tblPatientReport (ptrPatientID, ptrTreatmentID, ptrCategoryID) values (cmbPatientName.Value, cmbTreatment.Value, cmbCategory.Value)"
End Sub

查询 qryTreatmentsByCategory 的代码,治疗组合框的来源,如下:

SELECT tblTreatment.TreatmentID, tblTreatment.trItem, tblCategory.CategoryID
FROM tblCategory INNER JOIN tblTreatment ON tblCategory.CategoryID = tblTreatment.trCategory
WHERE (((tblCategory.CategoryID)=[Forms]![frmMain]![cmbCategory]));

如何让 INSERT INTO 语句使用作为 tblTreatments 主键的 TreatmentID 字段,同时仍然使用 qryTreatmentsByCategory 作为治疗组合框的来源。同样,qryTreatmentsByCategory 中的第一列是来自 tblTreatments 的 TreatmentID 字段,所以我不确定为什么没有提取该数据。

这是我第一次提交问题,所以如果我有任何不清楚的地方,请告诉我,我会尝试进一步解释。

治疗组合框的绑定列必须为1。

SQL 字符串必须用组合框值构造。

DoCmd.RunSQL "INSERT INTO tblPatientReport (ptrPatientID, ptrTreatmentID, ptrCategoryID) values (" _
  & cmbPatientName.Value & ", " & cmbTreatment.Value & ", " & cmbCategory.Value & ")"

运行SQL 不会自动用它们的值替换字符串中的组合框引用。

问题已解决!我已将治疗 combo-box 的行源代码编码为

SELECT [qryTreatmentByCategory].[trItem]
FROM qryTreatmentByCategory
ORDER BY [trItem];

我将其更改为只读 qryTreatmentByCategory 并用 TreatmentID.

隐藏了第一列

非常感谢您的帮助,我已经用您提供的语句替换了旧的 SQL INSERT INTO 语句并且效果很好。