我剛剛開始建立一個新的資料庫來存盤醫療記錄。我正在嘗試設定一個表單來處理所有最終用戶功能,目前它只是從串列中為患者分配治療。我在主表單上有三個組合框:類別、治療和患者。Category 組合框從表 tblCategories 中提取,Patient 組合框從表 tblPatients 中提取。選擇類別后,它會更新查詢 qryTreatmentsByCategory,該查詢具有將顯示的治療記錄限制為所選類別中的記錄的標準。此查詢是主表單上治療組合框的來源。
目標是將每個組合框中的資料附加到表 tblPatientReport 中,該表有一個自動編號的主鍵欄位,然后是這三個值中的每一個的欄位。PatientID 欄位和 CategoryID 欄位都可以毫無問題地附加;但是,TreatmentID 欄位沒有。它不是附加治療的 ID(表 tblTreatments 的主鍵),而是附加所選治療在查詢中的位置。
例如,在選擇“膀胱掃描”時,治療ID應該是106.然而,它是當字母順序排序時的第15條記錄。因為治療組合框的源資料是查詢qrytreatmentByCategory,治療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 作為 Treatment Combo-box 的源。同樣,qryTreatmentsByCategory 中的第一列是來自 tblTreatments 的 TreatmentID 欄位,所以我不確定為什么沒有提取該資料。
這是我第一次提交問題,所以如果我不清楚任何事情,請告訴我,我會嘗試進一步解釋。
uj5u.com熱心網友回復:
處理組合框的系結列必須為 1。
SQL 字串必須由組合框值構成。
DoCmd.RunSQL "INSERT INTO tblPatientReport (ptrPatientID, ptrTreatmentID, ptrCategoryID) values (" _
& cmbPatientName.Value & ", " & cmbTreatment.Value & ", " & cmbCategory.Value & ")"
RunSQL 不會自動將字串中的組合框參考替換為其值。
uj5u.com熱心網友回復:
問題已解決!我已將處理組合框的行源編碼為SELECT [qryTreatmentByCategory].[trItem] FROM qryTreatmentByCategory ORDER BY [trItem];. 我將其更改為僅讀取qryTreatmentByCategory并僅使用 TreatmentID 隱藏第一列。
非常感謝您的幫助,我已將舊的 SQL INSERT INTO 陳述句替換為您提供的陳述句,并且效果很好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/421789.html
標籤:
上一篇:如何在PostgreSQL中將沒有時區的時間戳和表示時區的整數轉換為沒有時區的新時間戳
下一篇:在postgres中加入值串列
