過去ログ

                                Page      77
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼Requeryで余計なレコードが作成される  Bishop 02/10/22(火) 14:19
   ┣Re:Requeryで余計なレコードが作成される  イケガミ 02/10/22(火) 15:43
   ┃  ┗この先の処理  Bishop 02/10/22(火) 16:11
   ┗Re:レコード数の確認方法  イケガミ 02/10/22(火) 15:45
      ┗Re:レコード数の確認方法  Bishop 02/10/22(火) 16:01
         ┗Re:レコード数の確認方法  イケガミ 02/10/23(水) 8:38
            ┗Re:レコード数の確認方法  Bishop 02/10/23(水) 8:59
               ┗Re:レコード数の確認方法  イケガミ 02/10/23(水) 9:12
                  ┣連結フォームです  Bishop 02/10/23(水) 18:15
                  ┗「レコードは削除されています」も出ます  Bishop 02/10/23(水) 18:18
                     ┗解決いたしました  Bishop 02/10/25(金) 18:14

 ───────────────────────────────────────
 ■題名 : Requeryで余計なレコードが作成される
 ■名前 : Bishop
 ■日付 : 02/10/22(火) 14:19
 -------------------------------------------------------------------------
   Access2000です。フォームはワークテーブルとの連結フォームです。コンボボックス(ID)を変更すると、ワークテーブルを削除し、IDに応じてワークテーブルのデータをセットし直し、その内容をフォームに表示させたいのですが。
Private Sub cmbID_AfterUpdate()
    (略)
    Call psDelWtbl  'ワークテーブルを削除
    Call psSetWtbl  'ワークテーブルにデータセット
    bUpd = True
    Me.Requery 'ここでレコードが2つになってしまう
    bUpd = False
    (略)
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
  If bUpd = False Then Cancel = True
End Sub

Me.Requeryのところで余計なレコードがひとつ作成されてしまいます。ワークテーブルにデータセットの段階ではレコード数は1だったものが、2になってしまいます。ワークテーブルのレコード数は1でないと他の処理に不都合が出てきます。何か回避策はないでしょうか?

 ───────────────────────────────────────  ■題名 : Re:Requeryで余計なレコードが作成される  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/10/22(火) 15:43  -------------------------------------------------------------------------
   >    Call psDelWtbl  'ワークテーブルを削除
>    Call psSetWtbl  'ワークテーブルにデータセット

この先は、どうやって処理しているのでしょうか?

 ───────────────────────────────────────  ■題名 : この先の処理  ■名前 : Bishop  ■日付 : 02/10/22(火) 16:11  -------------------------------------------------------------------------
   イケガミさん、お世話になります。
>>    Call psDelWtbl  'ワークテーブルを削除
>>    Call psSetWtbl  'ワークテーブルにデータセット
>
>この先は、どうやって処理しているのでしょうか?
psDelWtbl、psSetWtblの内容ということでしょうか?
違ってたらすみませんが、コードアップしときます。

Private Sub psDelWtbl() 'ワークテーブルを削除
'csWtbはワークテーブル名
  Set cmdP = New ADODB.Command
  Set cmdP.ActiveConnection = CurrentProject.Connection
  cmdP.CommandText = "DELETE * FROM " & csWtb
  cmdP.Execute , , adCmdText
  Set cmdP = Nothing
End Sub

Private Sub psSetWtbl()
  'データテーブルの内容をワークテーブルにセットする
  Set cmdP = New ADODB.Command
  Set cmdP.ActiveConnection = CurrentProject.Connection
  strSQL = "INSERT INTO " & csWtb & " ( EID, Nye, NMt, NSe, Dte, SID, Nsg, RID, Nrc, Sat, Xat, Tat, PID, DtI )"
  strSQL = strSQL & " SELECT EID, Nye, NMt, NSe, Dte, SID, Nsg, RID, Nrc, Sat, Xat, Tat, PID, DtI"
  strSQL = strSQL & " FROM " & csDtb 'csDtbデータテーブル
  strSQL = strSQL & " WHERE EID=" & lngID 'lngIDコンボで選択されたID
  cmdP.CommandText = strSQL
  cmdP.Execute , , adCmdText
  Set cmdP = Nothing
’以下略
End Sub

 ───────────────────────────────────────  ■題名 : Re:レコード数の確認方法  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/10/22(火) 15:45  -------------------------------------------------------------------------
   >    Call psDelWtbl  'ワークテーブルを削除
Debug.Print "削除後:" & DCount("*","[ワークテーブル名]")
>    Call psSetWtbl  'ワークテーブルにデータセット
Debug.Print "追加後:" & DCount("*","[ワークテーブル名]")
>    bUpd = True
>    Me.Requery 'ここでレコードが2つになってしまう

として、イミディエイトウィンドウで件数を確認してください。

 ───────────────────────────────────────  ■題名 : Re:レコード数の確認方法  ■名前 : Bishop  ■日付 : 02/10/22(火) 16:01  -------------------------------------------------------------------------
   イケガミさん、お世話になります。
>>    Call psDelWtbl  'ワークテーブルを削除
>Debug.Print "削除後:" & DCount("*","[ワークテーブル名]")
削除後:0

>>    Call psSetWtbl  'ワークテーブルにデータセット
>Debug.Print "追加後:" & DCount("*","[ワークテーブル名]")
削除後:1

>>    bUpd = True
>>    Me.Requery 'ここでレコードが2つになってしまう

Me.Requeryの直後にレコード数2になります。

 ───────────────────────────────────────  ■題名 : Re:レコード数の確認方法  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/10/23(水) 8:38  -------------------------------------------------------------------------
   >Me.Requeryの直後にレコード数2になります。

何ででしょう。。。
その不明分のレコードの内容は?
#追加したレコードと同じ?削除したレコード?それとも。。

 ───────────────────────────────────────  ■題名 : Re:レコード数の確認方法  ■名前 : Bishop  ■日付 : 02/10/23(水) 8:59  -------------------------------------------------------------------------
   イケガミさん、おはようございます。
>>Me.Requeryの直後にレコード数2になります。
>
>何ででしょう。。。
>その不明分のレコードの内容は?
>#追加したレコードと同じ?削除したレコード?それとも。。
意図せず追加されてしまうレコードの内容は、フォームに初期値で表示されている内容です。
何とか解決へのアドバイスお願いします。

 ───────────────────────────────────────  ■題名 : Re:レコード数の確認方法  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/10/23(水) 9:12  -------------------------------------------------------------------------
   >意図せず追加されてしまうレコードの内容は、フォームに初期値で表示されている内容です。

もしかして、連結フォームですか?
非連結にすればいいような。。

 ───────────────────────────────────────  ■題名 : 連結フォームです  ■名前 : Bishop  ■日付 : 02/10/23(水) 18:15  -------------------------------------------------------------------------
   イケガミさん、たびたびすみません。
>>意図せず追加されてしまうレコードの内容は、フォームに初期値で表示されている内容です。
>
>もしかして、連結フォームですか?
>非連結にすればいいような。。
連結フォームです。フォーム上のコントロールの数が多いので、できれば連結フォームのままで、問題解決したいのですが。

 ───────────────────────────────────────  ■題名 : 「レコードは削除されています」も出ます  ■名前 : Bishop  ■日付 : 02/10/23(水) 18:18  -------------------------------------------------------------------------
   実行するタイミングによって、同じくMe.Requeryのところで「レコードは削除されています」のエラーも表示されます。

 ───────────────────────────────────────  ■題名 : 解決いたしました  ■名前 : Bishop  ■日付 : 02/10/25(金) 18:14  -------------------------------------------------------------------------
   イケガミさん、皆様ありがとうございました。解決いたしました。
コントロールのプロパティでイベントのコードがないのに、[イベントプロシージャ]となっている所が何ヶ所かあり、これを直したところ、現象出なくなりました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 77