何が間違っていますか?テーブルdbo_customerからレコードを1つコピーしてから、テーブルdbo_active_taskにコピーする必要があります。しかし、エラー "エラー3622 - IDENTITY列を持つSQL Serverテーブルにアクセスするときに、OpenRecordsetでdbSeeChangesオプションを使用する必要があります。"エラー3622識別列を持つSQL Serverテーブルを開きます
Dim stSQlIns As String
Dim stSqlD As String
Dim rs As DAO.Recordset
If MsgBox("Copy № " & Me![id].Value, vbYesNo + vbDefaultButton2, "Moving to the archive ") = vbYes Then
stSQlIns = "INSERT INTO [dbo_new] " _
& "SELECT [dbo_customer].[id], [dbo_customer].[apartment], [dbo_customer].[description], [dbo_customer].[documents], [dbo_customer].[email], [dbo_customer].[first_name], [dbo_customer].[house_number], [dbo_customer].[last_name], [dbo_customer].[middle_name], [dbo_customer].[passport_number_str], [dbo_customer].[passport_number], [dbo_customer].[passport_series], [dbo_customer].[tel_number], [dbo_customer].[street_id], [dbo_active_task].[check_number], [dbo_active_task].[enable], [dbo_active_task].[production_datetime], [dbo_active_task].[production_method], [dbo_active_task].[shedule_datetime], [dbo_active_task].[shedule_end_datetime], [dbo_active_task].[task_desc], [dbo_active_task].[vip], [dbo_active_task].[customer_id], [dbo_active_task].[schedule_person_id], [dbo_active_task].[task_id]" _
& "FROM [dbo_customer], [dbo_active_task] " _
& "WHERE ((([dbo_customer].[id])=" & Me![id].Value & ")) "
stSqlD = "DELETE [dbo_customer].*, [dbo_active_task].* " _
& "FROM [dbo_customer], [dbo_active_task] " _
& "WHERE ((([dbo_customer].[id])=" & Me![id].Value & "))"
Set rs = Me.Recordset
CurrentDb.Execute (stSQlIns)
CurrentDb.Execute (stSqlD)
Me![id].Requery
End If
実際に使用していないデータベースタグを削除してください。 –
これは役に立ちますか? http://stackoverflow.com/questions/22486176/how-to-use-the-dbseechanges-option-with-openrecordset-when-accessing-a-sql-serve – Nayak
@Nayakこのコードを追加しました。 'CurrentDb.Execute stSQlIns、dbSeeChanges' 'CurrentDb.Execute stSqlD、dbSeeChanges'はこの' CurrentDb.Execute(stSQlIns) ' ' CurrentDb.Execute(stSqlD) 'のインストゥルメントで、何度もレコードをコピーします。それをテーブルから削除しないでください。 –