• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS97の帳票フォームで複数コントロールを指定したい)

ACCESS97の帳票フォームで複数コントロールを指定する方法

このQ&Aのポイント
  • ACCESS97で帳票フォームを作成し、複数のチェックボックスとテキストボックスを指定したいです。
  • フォームフッターに「全てチェック」ボタンを追加し、全てのチェックボックスを一括で変更する方法を教えてください。
  • Me.チェック(1).value などの記述でエラーが出てしまいます。正しい書き方を教えてください。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。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では動作確認しました。)

pooh-tan
質問者

お礼

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

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

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

pooh-tan
質問者

お礼

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

関連するQ&A