我在 SQL Server 中有一個表,在 Access 中有一個表單。我有一個帶有引數的查詢,用于洗掉提供給定 ID 的記錄。在按鈕的單擊事件中,我使用 querydef 物件并嘗試執行查詢并引發此錯誤:
錯誤 3622 打開帶有標識列的 SQL Server 表
訪問具有 IDENTITY 列的 SQL Server 表時,必須將 dbSeeChanges 選項與 OpenRecordSet 一起使用
表定義:
CREATE TABLE [Formativa].[SEPE_FAMILIAS_FORMATIVAS](
[ID_FAMILIA_FORMATIVA] [int] IDENTITY(1,1) NOT NULL,
[CODIGO_FAMILIA] [nvarchar](255) NULL,
[NOMBRE_FAMILIA] [nvarchar](255) NULL,
[FECHA_CONTROL] [timestamp] NOT NULL,
CONSTRAINT [SEPE_FAMILIAS_FORMATIVAS_PK] PRIMARY KEY NONCLUSTERED
查詢定義:
PARAMETERS [ID_FAMILIA_FORMATIVA] Long;
DELETE SEPE_FAMILIAS_FORMATIVAS.ID_FAMILIA_FORMATIVA, SEPE_FAMILIAS_FORMATIVAS.*
FROM SEPE_FAMILIAS_FORMATIVAS
WHERE (((SEPE_FAMILIAS_FORMATIVAS.ID_FAMILIA_FORMATIVA)=[ID_FAMILIA_FORMATIVA]));
代碼:
Dim dbCurrDB As DAO.Database
Dim qryDelFamilia As DAO.QueryDef
Dim lngIdFamiliaFormativa As Long
Set dbCurrDB = CurrentDb
Set qryDelFamilia = dbCurrDB.QueryDefs("SEPE_FAMILIAS_FORMATIVAS_ELIMINAR")
With qryDelFamilia
.Parameters(0) = lngIdFamiliaFormativa
.Execute
If .RecordsAffected = 0 Then
mVntMsg = "Ha sucedido un error al eliminar la familia formativa. No es posible proseguir."
MsgBox mVntMsg, vbExclamation vbOKOnly, "ERROR AL ELIMINAR"
Set dbCurrDB = Nothing
Exit Sub
End If
End With
? 知道什么是錯的嗎?由于可維護性、可追溯性等原因,我需要在代碼中使用已保存的查詢而不是 SQL 字串……此外,我還需要使用引數或等效項才能洗掉特定記錄。
編輯:
我嘗試使用帶有變數的傳遞查詢,但是當我在 vb 中執行查詢時,我不知道如何建立變數的值。
DECLARE @ID_FAMILIA_FORMATIVA Int
BEGIN
DELETE FROM EDIBON_ERP.Formativa.[SEPE_FAMILIAS_FORMATIVAS]
WHERE EDIBON_ERP.[Formativa].
[SEPE_FAMILIAS_FORMATIVAS].ID_FAMILIA_FORMATIVA=@ID_FAMILIA_FORMATIVA
END
謝謝
uj5u.com熱心網友回復:
正如錯誤所說,您需要dbSeeChanges在執行查詢時添加選項。
.Execute dbSeeChanges
最好也添加該dbFailOnError選項,如果查詢因任何原因失敗,它將回滾更改。但是該選項會引發運行時錯誤,因此您需要在方法中處理錯誤。
On Error GoTo Trap
With qryDelFamilia
.Parameters(0) = lngIdFamiliaFormativa
.Execute dbFailOnError dbSeeChanges
If .RecordsAffected = 0 Then
mVntMsg = "Ha sucedido un error al eliminar la familia formativa. No es posible proseguir."
MsgBox mVntMsg, vbExclamation vbOKOnly, "ERROR AL ELIMINAR"
Set dbCurrDB = Nothing
Exit Sub
End If
End With
Leave:
Exit Sub
Trap:
MsgBox Err.Description, vbCritical
Resume Leave
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/504182.html
上一篇:“MicrosoftSQLServer資料工具,架構比較”的最佳安全性是什么
下一篇:如何在存盤程序中創建資料陣列
