- 締切済み
【Access2003】
検索フォーム(帳票フォーム)にて各レコードにチェックボックスを設けています。 クエリにて抽出したレコードをボタンクリックで全チェックボックスを選択(Yesに)したいのですが、うまくいきません。 ボタンのプロパティの『クリック時』にどういうVBAを指定したら良いのでしょうか? ちなみに、その逆はできます。 Private Sub 選択全解除_Click() Dim CN As ADODB.Connection Dim mySQL As String Set CN = CurrentProject.Connection mySQL = "UPDATE T_データベース SET 選択=False;" CN.Execute (mySQL) Me.Requery CN.Close Set CN = Nothing End Sub 選択=True;にするとテーブルの全レコードがYesになってしまいます。 テーブル名の部分にクエリ名を指定してもうまくいきません。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- bin-chan
- ベストアンサー率33% (1403/4213)
> クエリによる絞込みはできていますが > mySQL = "UPDATE T_データベース SET 選択=True;"にすると > 全てのレコードが『Yes』になってしまいます。 whereが無いから、全件が更新されるのは正しい動きですよ。 絞込み条件が不明ですが、「会員番号が2000以上を対象とする」と仮定すると mySQL = "UPDATE T_データベース SET 選択=True where 会員番号>=2000;" のようになるはず。 > 1つ以上の必要なパラメータの値が設定されていません。 これからすると、クエリが完成していないのかな? または絞込み条件をフォーム(TextBox等)から受け取る設定で、コントロール名と合致していない、など。 今のクエリを破棄(削除またはリネーム)して、再度作成なさったほうがよさそうに思います。
- bin-chan
- ベストアンサー率33% (1403/4213)
> クエリにて抽出したレコードをボタンクリックで > うまくいきません。 どう、うまくいかないのか? そもそも「クエリによる絞りこみができてない」のか。 クエリで絞り込んだレコードを「Trueにしたいが何かエラーが表示される」のか。 docmd.runsql "UPDATE T_データベース SET 選択=-1 where 選択したい条件;" でどうなります? クエリ単体でUpdateを実行して切り分けするほうが近道と思いますよ。
- bin-chan
- ベストアンサー率33% (1403/4213)
> mySQL = "UPDATE T_データベース SET 選択=False;" クエリ名が[T_データベース]なんですか? 接頭語が T_ なので、直接テーブルを指定してませんか? クエリなら、なんらかのWhere条件があってもよさそうな気がする。
補足
失礼しました。 上記は全てのチェックボックスを『No』にするVBAを参考までに明記させて頂きました。 その逆の方法を知りたいのです。 T_データベースは全てのレコードを保存しているテーブル名です。
補足
お世話になります。 クエリによる絞込みはできていますが mySQL = "UPDATE T_データベース SET 選択=True;"にすると 全てのレコードが『Yes』になってしまいます。 『T_データベース』の部分をそのクエリを指定して クリックすると以下の様なメッセージがでてきます。 **************************************************** 実行時エラー '-2147217904(80040e10)': 1つ以上の必要なパラメータの値が設定されていません。 ****************************************************