電子書籍の厳選無料作品が豊富!

こんにちは。ACCESS97で帳票フォームを作成し、詳細にチェックボックス(連結コントロール)とテキストボックスを作成しました。フォームフッタ-に「全てチェック」ボタンをつけ、全てのチェックボックスがチェックされるようにしたいのですが、どのようにすればよいのでしょうか。
Me.チェック.value
とすると、一番上のレコードしか変わりません。全てのチェックボックスを一括で変えるか、配列になっているのならばループで回して変えたいのですが。
Me.チェック(1).value
のように書いても「型が一致しない」とエラーになってしまいます。
書き方が分からないので教えてください。どうか宜しくお願いします。

A 回答 (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では動作確認しました。)
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。上記のとおり、やってみましたが「更新可能なクエリーでなければなりません。」とエラーが出てしまいます。どこか設定を変えなければならないのでしょうか?

お礼日時:2002/09/02 17:23

再びmaruru01です。



テーブル名とチェックするフィールド名は正しいですか。
テーブル名は、このフォームの元になったテーブルの名前です。
チェックするフィールド名は、そのテーブルにあるフィールドで、フォームのチェックボックスに連結した(コントロールソースに指定された)フィールドの名前です。
後、一応テーブル名とフィールド名に[]を付けた方がいいかも知れません。
例えば、[顧客名簿]というテーブルでフォームを作り、[顧客名簿]テーブルの中の[購入]というYes/No型のフィールドとチェックボックスが連結している(チェックボックスのプロパティの[コントロールソース]が"購入"になっている)とします。
その場合は、SQLステートメントは、

SQL = "UPDATE [顧客名簿] SET [購入] = True"

となります。
確認してみて下さい。
    • good
    • 0
この回答へのお礼

すみません。フィールド名を間違えてました。
最初の[]をつけない状態でうまく行きました。
maruru01さん何度も教えて下さって、どうもありがとうございました。

お礼日時:2002/09/02 20:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!