- ベストアンサー
アクティブなレコードを削除するSQL
今現在開いているアクティブなレコード1件を削除するSQL というのはどのようにかけばいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
「社員番号」と「年度」の複合キーということでしょうか? (同じ社員番号の人が居るとは思えないのですが・・・) でしたらWHEREでこの2つをセットで使わないと余計な社員のデータまでも削除してしまう可能性があります。 以下、Access2000で動作確認しました。 テーブル名:T_マスターテーブル 主キー1:社員番号:文字列型 主キー2:年度:数値型 Dim strEmployeeNum As String Dim lngYear As Long Dim strSQL As String Dim objConn As ADODB.Connection 途中省略 strSQL="DELETE * FROM T_マスターテーブル WHERE (((T_マスターテーブル.社員番号)='" & _ strEmployeeNum & _ "') AND ((T_マスターテーブル.年度)=" & _ lngYear & _ "));" Set objConn = CurrentProject.Connection objConn.Execute strSQL Set objConn = Nothing
その他の回答 (1)
今開いているアクティブなレコード(カレントレコードと言います)からキー(そのレコードを識別するための一意な値)を取得し、削除用のSQL文字列を作成します。 strSQL = "DELETE * FROM tbl01 WHERE (((tbl01.m01)=" & lngKey & "));" 上記例では、[bl01]テーブルの[m01]フィールドが主キーとして、カレントレコードのm01フィールド値をlngKeyに格納済みとした場合です。
お礼
回答ありがとうございます。 もとになるテーブルは「T_マスタテーブル」で、 その中の「社員番号」と「年度」がキーになります。 フォーム上で、社員番号を入力したら、 「T_マスタテーブル」の中に「社員番号」が一緒で、 かつ「年度」も一緒のものがないかチェックして、 なかったら、そのまま入力、あったら、その新しいものを 削除したいのです。 (すでに入力されているものは削除しない。) ためしに strsql = "delete * from T_マスタテーブル where (((T_マスタテーブル.社員番号) = " & 社員番号 & "));" としてみたのですが、削除されませんでした。 どこがダメなのでしょうか? またキーを「社員番号」だけでなく、「年度」も加えるにはどこにかいたらいいのでしょうか? よろしくお願いいたします。
お礼
回答ありがとうございました。 なんとか無事できました。 ありがとうございました。