access2000のVBAで「直前の操作をキャンセル」
- access2000のVBAを使用して、フィルタ操作をプログラムしていますが、複数の条件を与えるとエラーメッセージが表示されます。
- Me.Filter = vbNullStringの行を追加して、フィルタを初期化してから条件を追加してください。
- 条件を与える前にMe.Filterを初期化することでエラーメッセージを回避できます。
- ベストアンサー
access2000のVBAで「直前の操作をキャンセル」
こんにちわ。 いまaccess2000のVBAでフォームの元になるテーブルへの フィルタ操作をプログラムしています。 1つの条件を与えたときは正常にフィルタできるのですが, 下記のように2つの条件を与えると, 「直前の操作はキャンセルされました」という エラーメッセージが表示されてしまいます。 「 Me.Filter = vbNullString ' クリア Me.Filter = "[項目1]='" & Forms![F_フォーム1].[cmbコンボ1] & "'" Me.Filter = Me.Filter & " AND [項目2]='" & Forms![F_フォーム1].[cmbコンボ2] & "'" Me.FilterOn = True 」 何かコーディングが足りないのでしょうか? 教えてください。お願いします。
- tatsurou
- お礼率86% (212/245)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
上記、コードで試しにやってみましたが問題なく出来ましたよ。 テーブルの項目をテキスト型から数値型にしてみたら、「直前の操作はキャンセルされました」とメッセージが表示されました。 データ型があっていないかもしれませんね。
関連するQ&A
- Access VBA フィルター
Microsoft Access のVBAで、メインフォームで条件を設定するとサブフォームがフィルターされて開くというVBAを作っています。 SQL文を「SQLCode」という文字列型変数に入れました。 具体的には以下の内容がSQLCodeに入っています。 [担当者]=[Forms]![検索]![担当者] この変数をフォームにフィルターをかけて開くコードに入れたいのですが、以下の?の部分を教えてください。 Me!Fサブフォーム.Form.Filter. = ? Me!Fサブフォーム.Form.FilterOn = True
- 締切済み
- Access(アクセス)
- Access2007 サブフォームでフィルタリングする方法
お世話になっております。 フォーム上に関連性のないサブフォームがあります。 フォームのコンボボックスでデータを選び検索ボタンをクリックすると、サブフォームのフィールドがコンボボックスのデータで抽出できるようにしたいと思います。 このように書いてみましたが、検索ボタンをクリックするとサブフォームの全てのデータが消えてしまい、実現できませんでした。 Me.FilterOn = True Me.Filter = "(Forms!フォーム!サブフォーム1!コンボ Like '*" & Me.フィールド & "*')" サブフォームでフィルタリングできる方法を教えていただければ幸いです。 よろしくお願いいたします。
- 締切済み
- その他(データベース)
- vba 直前の操作はキャンセルされました
<環境>ACCESS2000 サブフォーム(データシートビュー)の並び替えを、メインフォームのオプショングループの 更新後処理イベントで操作しようと思っています。 コーディングは以下の通りです。 並び替え自体はうまく動作するのですが、メインフォームで閉じるボタンを押すと 「直前の操作はキャンセルされました.」とエラーが出てしまいます。 サブフォームのプロパティを替えることが原因なのでしょうか? どなたか回避策をお願いします。 <メインフォーム開く時> Public Function 開くイベント() DoCmd.OpenForm "Fメイン" Set FM = Forms![Fメイン] Set FS = Forms![Fメイン]![SubForm].Form 'テーブル作成 strSQL = "CREATE TABLE AAA (" strSQL = strSQL & " [選択] [bit] NULL ," strSQL = strSQL & " [番号] [varchar] (7) NOT NULL ," strSQL = strSQL & " [カナ] [varchar] (20) NULL ," strSQL = strSQL & " PRIMARY KEY(番号))" db.Execute strSQL 'データ作成 strSQL = "INSERT INTO AAA" strSQL = strSQL & " SELECT" strSQL = strSQL & " [選択] = 1 ," strSQL = strSQL & " [番号] = [番号] ," strSQL = strSQL & " [カナ] = [カナ] " strSQL = strSQL & " FROM BBB" db.Execute strSQL FS.RecordSource = "SELECT * FROM AAA ORDER BY 番号" FM.Refresh End Function <オプショングループ更新後処理> Private Sub GRP_並び順_AfterUpdate() Select Case Me!GRP_並び順 Case 1 With Me![SubForm].Form .OrderBy = "番号" .OrderByOn = True End With Case 2 With Me![SubForm].Form .OrderBy = "カナ" .OrderByOn = True End With End Select End Sub
- ベストアンサー
- オフィス系ソフト
- 複数条件のフィルタができない
マイクロソフトアクセスです。 アクセスで親フォームからサブフォームへフィルタをかけたいのですが Sub フィルタ() With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With End Sub だとうまくできません。 With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' or " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With これならフィルタされるのですが、 どちらかだけになってしまいます。 .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" の文法がおかしいのだと思うのですが、どこが変ですか?
- ベストアンサー
- その他(データベース)
- Me.FilterOn = True は先でも後で
Me.FilterOn = True は先でも後でも問題ないですか? アクセスのvbaでフォームにフィルタをかけるときに 今まで --------------------------------------- Private Sub コマンド2_Click() Me.Filter = "フィールド = '" & "test" & "'" Me.FilterOn = True End Sub --------------------------------------- とコードを書いていましたが --------------------------------------- Private Sub コマンド2_Click() Me.FilterOn = True Me.Filter = "フィールド = '" & "test" & "'" End Sub --------------------------------------- でも機能しました。 という事は、 Me.FilterOn = Trueは Me.Filter の前でも問題ないのでしょうか? Me.FilterOn = Trueは Me.Filter の後と習ったので疑問に思っています。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Access filterにて
フィルターする時、オプションボタンやトグルボタンを使用し、Select Caseで分岐させてフィルターするやり方でなく、下記のようにすることはできますか? ************************************************************** 「Me.検索項目」はコンボボックス(集合体ソースには、検索するフィールド名を用意) 「Me.日付入力」は日付だけを入力するテキストボックス Me.Form.Filter = "'" & Me.検索項目 & "'" = "#" & Me.日付入力 & "#" Me.Form.FilterOn = True ************************************************************** 検索するフィールド名をいちいち記述しなくて済むのでは?と思いましたが、結果が得られませんでした。 どこがおかしいのでしょうか?よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ACCESS VBA で複数項目検索にテキストボックスとコンボボックス
ACCESS VBA で複数項目検索にテキストボックスとコンボボックスを使用したい txtPC番号というテキストボックス、 com所属部門というコンボボックス、 txt使用者というテキストボックスの どれかひとつの条件が入力されたときに 該当するフォームのレコードを抽出できるようにしたいのですが、 コンボボックスで選択した場合のみうまく抽出できません。 コードのどの部分に誤りがあるのでしょうか? ご指摘願えませんでしょうか? よろしくお願いいたします。 Private Sub cmd01_Click() Me.FilterOn = False If Me!txtPC番号 <> "" Then Me.Filter = "[PC番号]like '*" & Me!txtPC番号 & "*'" ElseIf Me!com所属部門 <> "" Then DoCmd.Requery "com所属部門" ElseIf Me!txt使用者 <> "" Then Me.Filter = "[使用者]like '*" & Me!txt使用者 & "*'" End If Me.FilterOn = True End Sub
- ベストアンサー
- その他MS Office製品
- 複数サブフォームで filteron=false
Access+VBA です フォームに複数のサブフォームでそれぞれフィルタをかけます。 Me.Filter=fstr1 (他のサブフォームでは fstr2・・・・) Me.FilterOn=True 一方のフィルタを解除すると Me.FilterOn=False 他のサブフォームのフィルタも解除されてしまいます。 考えられる原因はなんでしょうか?
- ベストアンサー
- Visual Basic
- Access 2003 でフォームフィルターがかかりません。
Access 2003 でフォームフィルターがかかりません。 どなたか助けてください。 アクセス初心者です。 フォームの詳細欄にチェックボックス(フィールド名:伝票チェック)を配置しております。 チェックの入っていないものを表示させたいです。 フォームヘッダーのオプショングループ(フレーム67)に オプションボタン0-オプション値0と オプションボタン2-オプション値2 の2個のオプションボタンを配置してあります。 クリック時のイベントプロシージャに以下のコードを書きました。 Private Sub フレーム67_Click() If Me!フレーム67 = 0 Then Me.Filter = 伝票チェック = 0 Me.FilterOn = True Else Me.Filter = "" Me.FilterOn = True End If End Sub 実行時エラーは出ませんが、データが何も表示されません。 どうすればいいのでしょう??? どなたかお願いします。
- ベストアンサー
- その他(データベース)
- 日付型と文字列型、両方にフィルタをするには
アクセス フォームで日付型(Between and)と文字列型、両方にフィルタをするには? Private Sub cmd_ボタン1_Click() Me.Form.Filter = _ "日付 Between #" & Me.cmb_日付1.Value & "# And #" & Me.cmb_日付2.Value & "#" & _ " and 会社名 like " & "*" & Me.cmb_会社名.Value & "*" Me.Form.FilterOn = True End Sub これのどこが変なのか教えていただけますか? 実行時エラー3075「クエリ式の構文エラー:演算子がありません。」というエラーになります。
- ベストアンサー
- オフィス系ソフト
お礼
KAERU_VXVさん 回答ありがとうございます。 教えて頂いた方法でうまくできました。