- ベストアンサー
ACCESS97の帳票フォームで複数コントロールを指定する方法
- ACCESS97で帳票フォームを作成し、複数のチェックボックスとテキストボックスを指定したいです。
- フォームフッターに「全てチェック」ボタンを追加し、全てのチェックボックスを一括で変更する方法を教えてください。
- Me.チェック(1).value などの記述でエラーが出てしまいます。正しい書き方を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 表形式のフォームなので、誤解しているようです。 フォーム上にたくさんのチェックボックス(テキストボックスも)が並んでいるように見えますが、実際にあるのは1つです。 フォームをデザインモードにすればチェックボックスもテキストボックスも1つしかないのがわかると思います。 そして、 Me.チェック.Value などで変更されるのは、1つのレコード(カレントレコード)だけです。 pooh-tanさんの言う、「全てのチェックボックス」というのは、そのフォームの元になっているテーブルの、「全てのレコードのチェックするフィールド」ということです。 つまり、フォームのチェックボックスにチェックをするのではなく、元のテーブルの値を変更(全部チェック)して、それをフォームに反映させるという動作になります。 実際のコードは以下の通り。 "テーブル名"と"チェックするフィールド名"は、実際の名前を使用して下さい。 Private Sub 全てチェック_Click() Dim SQL As String 'SQLステートメント '全てチェックするという更新クエリ文 SQL = "UPDATE テーブル名 SET チェックするフィールド名 = True" 'SQLステートメントの実行 DoCmd.RunSQL SQL 'フォームに反映させる(再クエリ) Me.Requery End Sub ちなみに私はAccess2000しかないので、97では確かめてません。(2000では動作確認しました。)
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
再びmaruru01です。 テーブル名とチェックするフィールド名は正しいですか。 テーブル名は、このフォームの元になったテーブルの名前です。 チェックするフィールド名は、そのテーブルにあるフィールドで、フォームのチェックボックスに連結した(コントロールソースに指定された)フィールドの名前です。 後、一応テーブル名とフィールド名に[]を付けた方がいいかも知れません。 例えば、[顧客名簿]というテーブルでフォームを作り、[顧客名簿]テーブルの中の[購入]というYes/No型のフィールドとチェックボックスが連結している(チェックボックスのプロパティの[コントロールソース]が"購入"になっている)とします。 その場合は、SQLステートメントは、 SQL = "UPDATE [顧客名簿] SET [購入] = True" となります。 確認してみて下さい。
お礼
すみません。フィールド名を間違えてました。 最初の[]をつけない状態でうまく行きました。 maruru01さん何度も教えて下さって、どうもありがとうございました。
お礼
早速の回答ありがとうございます。上記のとおり、やってみましたが「更新可能なクエリーでなければなりません。」とエラーが出てしまいます。どこか設定を変えなければならないのでしょうか?