2017-01-08 19 views
0

"Topics"(「For Each SelectedTopic In SelectedTopicsCtl.ItemsSelected」のセクションを参照)という既存のテーブルにレコードを追加しようとしています。 私はいつも "実行時エラー '3022'を取得するコードを実行する:インデックス、主キー、または関係に重複する値を作成するため、テーブルに要求した変更は成功しませんでした。フィールド "ID"(=インデックスされている唯一のフィールド - 重複していない唯一のフィールド)のAutonumberの番号 デバッグするとき、下のコードの "TopicRecord.Update"という行が強調表示されます このトピックに関するいくつかの記事をフォーラムや他のフォーラムで、まだ仕事にこれを取得することはできません - 私は何か....Access 2010 - 実行時エラー3022

Private Sub Copy_Click() 

Dim JournalEntrySourceRecord, JournalEntryDestinationRecord, TopicRecord As Recordset 
Dim JournalEntryToCopyFromCtl, JournalEntryToCopyToCtl, JournalEntryDateCreatedCtl, SelectedTopicsCtl As Control 
Dim Counter, intI As Integer 
Dim SelectedTopic, varItm As Variant 

Set JournalEntryToCopyFromCtl = Forms![Copy Journal Entry]!JournalEntryToCopyFrom 
Set JournalEntryToCopyToCtl = Forms![Copy Journal Entry]!JournalEntryToCopyTo 
Set JournalEntryDateCreatedCtl = Forms![Copy Journal Entry]!JournalEntryDateCreated 
Set JournalEntrySourceRecord = CurrentDb.OpenRecordset("Select * from JournalEntries where ID=" & JournalEntryToCopyFromCtl.Value) 
Set JournalEntryDestinationRecord = CurrentDb.OpenRecordset("Select * from JournalEntries where ID=" & JournalEntryToCopyToCtl.Value) 
Set SelectedTopicsCtl = Forms![Copy Journal Entry]!TopicsToCopy 
Set TopicRecord = CurrentDb.OpenRecordset("Topics", dbOpenDynaset, dbSeeChanges) 


With JournalEntryDestinationRecord 
    .Edit 
    .Fields("InitiativeID") = JournalEntrySourceRecord.Fields("InitiativeID") 
    .Fields("DateCreated") = JournalEntryDateCreatedCtl.Value 
    .Fields("Comment") = JournalEntrySourceRecord.Fields("Comment") 
    .Fields("Active") = "True" 
    .Fields("InternalOnly") = JournalEntrySourceRecord.Fields("InternalOnly") 
    .Fields("Confidential") = JournalEntrySourceRecord.Fields("Confidential") 
    .Update 
    .Close 
End With 
JournalEntrySourceRecord.Close 
Set JournalEntrySourceRecord = Nothing 
Set JournalEntryDestinationRecord = Nothing 

For Each SelectedTopic In SelectedTopicsCtl.ItemsSelected 
    TopicRecord.AddNew 
    For Counter = 3 To SelectedTopicsCtl.ColumnCount - 1 
     TopicRecord.Fields(Counter) = SelectedTopicsCtl.Column(Counter, SelectedTopic) 
    Next Counter 
    TopicRecord.Fields("JournalEntryID") = JournalEntryToCopyToCtl.Value 
    TopicRecord.Fields("DateCreated") = JournalEntryDateCreatedCtl.Value 
    TopicRecord.Update 
Next SelectedTopic 
TopicRecord.Close 
Set TopicRecord = Nothing 
End Sub 

答えて

0

ファーストを見下ろすする必要がありますあなたが期待するように、あなたのDIMSは動作しません使用:。

TopicRecord.Fields(Counter) 

またはトピックは何とかそれを含むクエリです:

Dim JournalEntrySourceRecord As Recordset 
Dim JournalEntryDestinationRecord As Recordset 
Dim TopicRecord As Recordset 

第二に、それはあなたがあなたのIDがここに含まれ得るように見えます。フィールドを具体的に指定するか、次のようにデバッグしてください:

For Counter = 3 To SelectedTopicsCtl.ColumnCount - 1 
    TopicRecord.Fields(Counter).Value = SelectedTopicsCtl.Column(Counter, SelectedTopic) 
    Debug.Print Counter, TopicRecord.Fields(Counter).Name 
Next Counter 
関連する問題