「日付条件」のDELETEできない

このQ&Aのポイント
  • access2003で、jyuu条件ではDELETEが出来るが、日付条件ではDELETEされない。
  • gatuは、「日付/時刻型(日付(標準))」であり、jyuuは整数型
  • プログラムの「日付条件」において、DELETEが実行されない理由を教えてください。
回答を見る
  • ベストアンサー

「日付条件」のDELETEできない

access2003で、下記のプログラムを作りました。 コメント文の、「jyuu条件」ではDELETEが出来るのですが、 本プログラムの「日付条件」では、DELETEされません。 なぜでしょうか? なお、gatuは、「日付/時刻型(日付(標準))」です。 Private Sub テーブル削除() Dim db As Database Dim mysql As String Dim gappi As Date Dim jyuu As Integer gappi = #4/15/2011# jyuu = 220 'mysql = "DELETE FROM fff WHERE jyu <" & jyuu & " ; " mysql = "DELETE FROM fff WHERE gatu <" & gappi & " ; " Set db = CurrentDb db.Execute (mysql) db.Close End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

# で括ってみてください。 mysql = "DELETE FROM fff WHERE gatu <" & gappi & " ; " mysql = "DELETE FROM fff WHERE gatu <#" & gappi & "#; "

grabcdef
質問者

お礼

回答ありがとうございました。 無事解決しました。 回答では、「・・・ gatu<##4/15/2011##・・・」となるのでは、と思った のですが、デバッグで確認すると、「・・・ gatu<#4/15/2011# ・・・」と なっており解決しました。

その他の回答 (2)

  • nmktksk
  • ベストアンサー率36% (75/208)
回答No.2

gappi="2011/4/15" にしたらどうでしょうか?

grabcdef
質問者

お礼

回答ありがとうございました。 すでに、確認ずみでダメでした。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

DELETEされません。とか以前に文法エラーに なりませんか? gappi の書式指定せずに文字列にしてるからでは? mysql の内容は確認したのですか?

grabcdef
質問者

お礼

回答ありがとうございました。 文法エラーでなく、書式設定に問題が あると思われます。

関連するQ&A

  • Access VBA 日付で抽出できない?

    次の質問にお答えいただけませんか。 フォームで抽出条件を入力しテーブルから抽出をするとき Dim db As DAO.Database Dim rs As DAO.Recordset Dim mySQL As String Set db = CurrentDb() mySQL = "SELECT * FROM T_明細 " _ & "WHERE 顧客ID = " & CStr(Me!txtKey) & ";" Set rs = db.OpenRecordset(mySQL, dbOpenDynaset) 上記のような記述をしました。 テーブル名:T_明細   フィールド:顧客ID  日付 金額  フォームの抽出条件入力テキストボックス:txtKey このとき顧客IDでの抽出は問題なく出来ましたが "WHERE 顧客ID = を "WHERE 日付 = に変更して日付で抽出をしたいのですがうまくいきません。 テーブルの日付フィールドは 書式をgee-mm-dd 定型入力を>L99\-99\-99;0;# で書き込みました。 フォームのtxtKeyテキストボックスのプロパティも書式をgee-mm-dd 定型入力を>L99\-99\-99;0;#に設定してあります。 このようなときは mySQL = "SELECT * FROM T_明細 " _ & "WHERE 日付 = " & CStr(Me!txtKey) & ";" の、記述を何か変更しないといけないような気もしますが 対処の方法を教えていただけませんか。

  • ACCESSの SELECT SUM

    SELECT SUMを 計算させると ゼロしか 出てきません。 どこが悪いのでしょうか?  日付         出金       氏名 2012/12/10      540      安田 2012/12/10      1020      斉藤 2012/12/10       970      TOM 2012/12/11      650      池田  2012/12/11     2010      南 2012/12/12      350      林田 2012/12/12     1200      加藤 のようなテーブルがあり Private Sub コマンド_click() Dim Db As Database Dim SQL As String Dim rs As Recordset Dim gokei As Long Set Db = CurrentDb SQL = "SELECT Sum(出金) as gokei FROM テーブル  WHERE 日付= #" & [Forms]![フォームアルファ]![テキスト] & "# " Set rs = Db.OpenRecordset(SQL) MsgBox gokei End Sub を フォームアルファに 新しく作ったコマンドボタンのクリック時に 書きました。 これを テキストの日付を変えておいて いろいろ試しても ゼロのメッセージしか出ません。 WHERE以下が 間違っていないか 試しに Private Sub コマンド_click() Dim Db As Database Dim SQL As String Dim rs As Recordset Dim Count As Long Set Db = CurrentDb SQL = "SELECT (出金)  FROM テーブル  WHERE 日付= #" & [Forms]![フォームアルファ]![テキスト] & "# " Set rs = Db.OpenRecordset(SQL) If rs.EOF Then Count = 0 Else rs.MoveLast Count = rs.RecordCount End If MsgBox Count End Sub を 実行すると ちゃんと 正しいレコード数が 表示されます。 「出金」のデータ型は 長整数になっています。 どこが 悪いのでしょうか? 目的は 指定した日付の 出金の合計を取り出したいのです。 . . .

  • Access 壁にぶつかってます。助けて

    ACCESS VBAの記述でエラーになります。 教えてください。 Private Sub cmd抽出_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim mySQL As Long '抽出条件 Set db = CurrentDb() 'レコードセットを作成 mySQL = "SELECT * FROM T_貸付明細 " _ & "WHERE 顧客ID ='" & Me!txtID & "';" Set rs = db.OpenRecordset(mySQL, dbOpenDynaset) 'サブ フォームに表示 Set Me!sub結果.Form.Recordset = rs ' Me!sub結果.Form!日付.ControlSource = "日付" Me!sub結果.Form!貸付.ControlSource = "貸付" Me!sub結果.Form!受領.ControlSource = "受領" Me!sub結果.Form!利息.ControlSource = "利息" Me!sub結果.Form!元金入金.ControlSource = "元金入金" Me!sub結果.Form!貸付残高.ControlSource = "貸付残高" Me!sub結果.Form!次支払日.ControlSource = "次支払日" End Sub 上記の記述で「型が一致しません」とエラーが出ます。 'レコードセットを作成 mySQL = "SELECT * FROM T_貸付明細 " _ & "WHERE 顧客ID ='" & Me!txtID & "';" ここの記述がLongになってない事の間違いだと察するのですが、正しい記述方法を教えていただけませんか。

  • SELECT出来るのにDELETE出来ないのはなぜ

    MySQLで下記SELECTレコードを削除したいと思い、 DELETEへ変えたら文法エラーになります。 SELECT * FROM `piyo` AS a LEFT JOIN `hoge` AS c ON a.`hoge_id` = c.`hoge_id` WHERE c.`x_id` =13 DELETE * FROM `piyo` AS a LEFT JOIN `hoge` AS c ON a.`hoge_id` = c.`hoge_id` WHERE c.`x_id` =13 どう書けば良いでしょうか?

    • ベストアンサー
    • MySQL
  • VBAについての質問です。日付を条件に入れて行削除をしたいのですが、うまくいきません。

    VBAの初心者です。よろしくお願いします。日付の条件を入れて行を削除したいと考えていますが、エラーになります。何故でしょうか? コードは以下のようにしています。 よろしくお願いします。 Sub 日付条件で行削除() Dim hiduke As Double Set hiduke = "2009/4/30"   For i = 16 To 12 Step -1 If Cells(i, "a") <= hiduke Then Rows(i).Delete End If Next End Sub

  • VBAで変数に格納する情報を条件分岐したい

    VBAで変数に格納する情報を条件分岐したい ACCESS VBAを組んでいるのですが、 フォーム上で4つの条件のうちどれかで絞込みをかけたデータを エクスポートする際、 日付、条件をファイル名につけたいと思っています。 日付はつけられるのですが、 変数に条件を格納するIF分を書いたところ 取得できていないようです。 お知恵を拝借できますでしょうか。 いかがコードになります。 Private Sub cmd04_Click() Dim epData As String Dim epObj As String Dim myFile As String Dim mySQL As String Dim db As DAO.Database Dim myFol As String Dim myKey As String If txtPC番号 = Not Null Then myKey = txtPC番号 ElseIf com所属部所 = Not Null Then myKey = com所属部所 ElseIf txt使用者 = Not Null Then myKey = txt使用者 ElseIf txtPC名 = Not Null Then myKey = txtPC名 End If epData = CurrentProject.Path epObj = "T05_使用者一覧抽出結果" myFile = Screen.ActiveForm.Name Set db = CurrentDb() DoCmd.SetWarnings False DoCmd.OpenQuery "Q10_使用者一覧抽出結果" DoCmd.SetWarnings True mySQL = "INSERT INTO T05_使用者一覧抽出結果 select * FROM Q04_パソコン機器管理台帳 WHERE " & Me.Filter & ";" ' SQLを実行します。 db.Execute mySQL 'CSVファイルをエクスポート DoCmd.TransferText acExportDelim, , epObj, epData & "\" & Format(InDate, "yyyymmdd") & "_" & myKey & "_使用者一覧.csv", True MsgBox "エクスポートが完了しました" 'エクスポートしたフォルダを開く MsgBox "エクスポートが終了したのでフォルダを開きます" myFol = epData Shell "C:\Windows\Explorer.exe " & myFol, vbNormalFocus End Sub

  • SQLの条件分に ( ) が入っている場合

    Access97を使用しています。 SQLの条件で、項目名に '(' が入っている場合 どうすればいいのでしょうか? 例えば 下記の場合 " 式に未定義関数 '出荷日'があります " と出てきます。 Set DB = CurrentDb() strSQL = "SELECT SUM(数量) AS A FROM GAH100 WHERE " strSQL = strSQL + "出荷日(新)='" & Me.日付入力 "';" Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) 項目名に() が無いようにするしかないのでしょうか?

  • SQLで日付を条件に削除したい

    SQLで日付を条件に削除したい update の列にdatetime 型で更新日が入っています。 2010年の6月以降を削除したいのですが どうにもうまくいきません。(一応以下のようなことをやってみたりしました) どのように書いたらいいでしょうか?? DELETE FROM SYS WHERE update >#2010/06#

  • delete_all の条件指定

    ruby 1.8.7 (2010-08-16 patchlevel 302) mysql2.11.10 を使っています。 delete_allで、条件を指定したいのですがうまくいかずハマっています。 arr_s と丸括弧の間にシングルコーテーションが入ってしまってdeleteできない状態です。 (ハッシュで条件指定したSearchはきちんと削除されています。) 間違いがお分かりになる方、どうか教えてください。。。 ※arr で対象のidを取ってきて、それをすべてカンマ区切りで arr_s に入れて関連テーブルの削除キーとして使っていますが (has_manyを使いたくないので)ほかに素敵な処理の方法があれば参考に知りたいです。。 #search_attr_hash = {:search_data=>"あ", :search_type=>"0"} def clear_db(search_attr_hash)  case search_attr_hash[:search_type].to_i   when 1..3   logger.info "1...3"   s = Data.find :all,:select => ["id"],           :conditions=>["from_user = ?",search_attr_hash[:search_word] ]   when 0 || 4   logger.info "0 or 4"   s = Data.find :all, :select => ["id"],           :conditions=>["text like ?", "%"+search_attr_hash[:search_word]+"%" ]  end  arr = []  s.each{|k|  arr.push k["id"] if k != blank?  }  arr_s = arr.join(",")  logger.info arr_s #=>3,4,5,6  DataUrl.delete_all["data_id in (?)", arr_s ]  #=>DELETE FROM `data_urls` WHERE (data_id in ('3,4,5,6'))  DataTag.delete_all["data_id in (?)", arr_s ]  #=>DELETE FROM `data_tags` WHERE (data_id in ('3,4,5,6'))  DataRelation.delete_all["data_id in (?)", arr_s ]  #=>DELETE FROM `data_relations` WHERE (data_id in ('3,4,5,6'))  Search.delete_all["search_type = ? AND search_word = ?",search_attr_hash[:search_type], search_attr_hash[:search_word]]  #=>DELETE FROM `searches` WHERE (search_type = '0' AND search_word = 'あ')  Data.delete_all["id in (?)", arr_s ]  #=>DELETE FROM `twits` WHERE (id in ('3,4,5,6'))  return arr.count #=>4 end

    • ベストアンサー
    • Ruby
  • フォーム上のフィルタで抽出されたデータをテーブルに格納したい

    フォーム上のフィルタで抽出されたデータをテーブルに格納したい 度々お世話になります。 フォーム上で3つのキーワードを使って抽出したデータを テーブルに格納したいと思っています。 以下のコードを書いたところ、矢印の部分でエラーが起こります。 お知恵を拝借できませんでしょうか? よろしくお願いいたします。 Private Sub cmd04_Click() Dim db As DAO.Database Set db = CurrentDb() Dim mySQL As String mySQL = "INSERT INTO 04_パソコン機器管理台帳 select * FROM T05_使用者一覧抽出結果 WHERE " & Me.Filter & ";" If MsgBox("該当レコードを追加します。", vbYesNo) = vbYes Then ' SQLを実行します。 db.Execute mySQL   ←エラーが発生します。 MsgBox "該当レコードを追加しました。" End If End Sub