アクセスのテーブルにあるYes/No型のチェックボックスを、コマンドボタンを押すことによって、全てのレコードをYes(チェックが入っている状態)又はNo(チェックが入っていない状態)にする
方法を教えてください。自分で、参考書をみながら試みたのですが、NoをYesに変えられたのですが、全部Yesにならなくて困っています。
(NoはYesになりますが、元々YesだったところがNoになってしまう)

まだ、VBA初心者ですので、小学生(実際は中年?)にも解るように教えていただければ幸いです。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>・・・VBA初心者ですので・・・


との事ですのでVBAがよろしいのですよね(^ ^)

テーブル名「Test」、フィールド名「Check」とします。

「Yes」にする場合。

Dim strSQL As String

strSQL = "update Test set Check = true"
DoCmd.RunSQL strSQL

で全てのレコードが更新されます。
「No」にする場合は「true」→「false」へ変更してください。

この回答への補足

早い返事ありがとうございました。
早速試してみました。
ウォー、出来た!!って感じだったんですが、実は、もう少し異なることを考えていました。
テーブルを基にして、フォームを作成し、チェックボックスをトグルボタンに変えました。
そこで、フォームのフッタに配置したコマンドボタン(すべてON)をクリックするとすべてのレコードのトグルボタンを一括してONに出来ないかと思ってやってみたのですが
うまくいきません。きっとテーブルのチェックボックスをONにすることができれば実現するのではないかと考え、上記のような質問をいたしました。
そこで、実行してみたのですが、テーブルの方はうまく変わっているようなのですがフォーム上のトグルボタンがうまく変わりません。何個か残ってしまいます。
この現象は、どのように回避すればよいのでしょうか。ご教授いただければ幸いです。

補足日時:2001/11/08 16:07
    • good
    • 0

最後に一行



Me.Requery

と、追加してください。
    • good
    • 0
この回答へのお礼

お礼が大変遅くなって申し訳ありませんでした。
接続できる環境で無くなってしまっていたので・・・。
早速、実行してみました。うまくいった。・・・と思ったのですが
状況は改善されません。
なぜか?解りませんが、もう少し全体を見直したいと思います。
大変お世話になりました。また、なにかありましたら、よろしくお願いします。

お礼日時:2001/11/20 08:30

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessでYes/No参照(チェックボックス)

2つのテーブルがあります。
顧客テーブルは顧客IDと質問
質問テーブルは顧客テーブルの質問を管理するテーブルです。
質問テーブルのフィールドは
質問ID(オートナンバー)と
質問(テキスト)と
チェック(Yes/No)です。
質問の数は不定で
例えば
ID 質問 チェック
1  A    □
2  B   □
3  C   □
という具合にテーブルを作成します。
顧客テーブルの質問フィールドが質問テーブルを参照し
チェックボックスにチェックを入れられるようにしたいのですがどうしてもチェックのところが□ではなく
Yes/Noとなってしまいます。
最終的には質問Aに対するチェックの数
質問Bに対するチェックの数
全てのチェックの数などを計算したいのですが
どのようにしたら良いでしょうか。
よろしくお願いします。

Aベストアンサー

> チェック(Yes/No)の表示が Yes/No になってしまう。
◎テーブルデザインで
 データ型は Yes/No型に なっていると思いますが、
 ルックアップの 表示コントロールが
 テキスト ボックス に なっているようです。
 これを チェック ボックス に変えれば □ になります。

> 全てのチェックの数などを計算
◎選択クエリで 集計します。
 フィールド名 ”質問”の集計は ”グループ化”を選択
 フィールド名 ”チェック”のとこをは IIF関数を使い次のようにします。
 件数: IIf([チェック]=Yes,1,0)
 集計は ”合計”を選択します。

 これで、A、B、C・・・ 別に 件数が出ます。

Qアクセス:Yes/No型→チェックいれたら、"○"を表示。

あるフィールドの書式をYes/No型にしてます。
そして、チェックを入れたらフォームビューでは"○"を表示する。

というようなことはできますか??
アクセス初心者です。。
すみませんが、よろしくお願いいたします。

Aベストアンサー

であれば、論理式を組み合わせれば済む事です
=iif([フィールドA]=0,"",iif([フィールドC]=0,"","○"))
こんな感じですかね

Qyes/no型のチェックができない(アクセス2003)

フィールドのデータ型をYes/No型にして作ったものを選択クエリで選んだ後に、チェックするもしくは外すということができません。テーブルから直接データ編集する場合は問題なくチェックできています。

原因になにがあるのでしょうか。不勉強で申し訳ございません。アクセス2003です。
ご教授お願いいたします。

Aベストアンサー

クエリでデータの変更が出来ない場合。
(1)
多対一対多のリレーションシップが設定された 3 つ以上
のテーブルに基づくクエリでは、クエリで直接データを更新す
ることはできません。フォームやデータ アクセスページでは、
データを更新できます。フォームの [レコードセット]
プロパティを [ダイナセット (矛盾を許す)] に設定すると、
クエリに基づいてデータを更新できます。

(2)
クエリの "固有の値" プロパティが [はい] に設定されて
いると、クエリでデータを更新できません。この問題を回避
するにはクエリの "固有の値" プロパティを [いいえ] に設定します。

(3)
クエリまたは基になるテーブルに対して [データの変更]
権限がない場合は、データを更新できません。この問題を回
避するには、データを変更する権限を割り当てます。

(4)
複数のテーブルやクエリを含むクエリで、そのテーブルや
クエリが、クエリのデザイン ビューで結合線によって結合さ
れていないと、データを更新できません。この問題を回避す
るには、データを更新できるようにテーブルを正しく結合
します。


以上のようなことでクエリからデータの
変更ができないことがありますが、
これらは以下のサポートページの
抜粋です。
http://support.microsoft.com/kb/328828/ja
ほかにも原因は考えられますが、
Access2003のアップデートを
行うといろいろな不都合が
解消されるようですが、アップデート
はしていますか。

また、クエリ自体はフォームか何かの
レコードソースになっているのですか。

クエリ内の他のフィールドは変更
できるのですか。

クエリでデータの変更が出来ない場合。
(1)
多対一対多のリレーションシップが設定された 3 つ以上
のテーブルに基づくクエリでは、クエリで直接データを更新す
ることはできません。フォームやデータ アクセスページでは、
データを更新できます。フォームの [レコードセット]
プロパティを [ダイナセット (矛盾を許す)] に設定すると、
クエリに基づいてデータを更新できます。

(2)
クエリの "固有の値" プロパティが [はい] に設定されて
いると、クエリでデータを更新できません。この問題を回避
するには...続きを読む

QAccessで、yes/no型

 業者抽出クエリの中に、得意分野をチェックボックスで6個、営業地域をチェックボックスで10個作っています。
 それに対応する業者抽出フォームのフォームヘッダーに、得意分野をチェックボックスで6個、営業地域をチェックボックスで10個、抽出用コマンドボタン1個を配置しています。
 得意分野を1個&営業地域を1個選択して、そのふたつの条件を満たす抽出用コマンドボタンのSQL文はどのように書けばよいのでしょうか?

Aベストアンサー

チェックボックス名が ck分野1 ~ 6、ck地域1 ~ 10 とすると。

Private Sub コマンド0_Click()
 Dim flt As String
 flt = ""
 If Nz(Me.ck分野1, False) Then
  If flt <> "" Then flt = flt & " and "
  flt = flt & "[分野1] = True"
 End If
 If Nz(Me.ck分野2, False) Then
  If flt <> "" Then flt = flt & " and "
  flt = flt & "[分野2] = True"
 End If
'同様に分野6まで

 If Nz(Me.ck地域1, False) Then
  If flt <> "" Then flt = flt & " and "
  flt = flt & "[地域1] = True"
 End If
 If Nz(Me.ck地域2, False) Then
  If flt <> "" Then flt = flt & " and "
  flt = flt & "[地域2] = True"
 End If
'同様に地域10まで

 If flt <> "" Then
  Me.Filter = flt
  Me.FilterOn = True
  'SQL = SQL & "WHERE " & flt
 Else
  Me.FilterOn = False
 End If
 
End Sub

ベタに書くならこうなると思います。

form のfilter を使って選択しています。
SQL文にしたいのなら、
SQL = SQL & "WHERE " & flt
こんな感じで、SQL文にWHERE句を追加してください。

得意分野&営業地域を2個以上選択してもOKです。

チェックボックス名が ck分野1 ~ 6、ck地域1 ~ 10 とすると。

Private Sub コマンド0_Click()
 Dim flt As String
 flt = ""
 If Nz(Me.ck分野1, False) Then
  If flt <> "" Then flt = flt & " and "
  flt = flt & "[分野1] = True"
 End If
 If Nz(Me.ck分野2, False) Then
  If flt <> "" Then flt = flt & " and "
  flt = flt & "[分野2] = True"
 End If
'同様に分野6まで

 If Nz(Me.ck地域1, False) Then
  If flt <> "" Then flt = flt & " and "
  flt = flt ...続きを読む

QYes/No型のデータ抽出

Access97で出面管理(出勤簿)を作成しています。

レポートを印刷する際請求を出す都合上、自社社員分と応援社員分とを分けるため社員名と所属が自社か応援かを分けるためのテーブルを作成しました。
その分類方法はYes/No型(True=応援社員、False=自社社員)に設定しました。
その際、氏名を選択すると自動で自社/応援かが認識できるようにしました。

その後、必要なテーブル・クエリー等を設定し、フォームから入力してみると
自社社員としてしか認識しません。
そこで該当するテーブルから入力(氏名=テキスト型・自社/応援=Yes/No型
チェックボックスONで応援扱い)するとフォーム・レポートでも
認識してくれます。

しかしこの方法では毎日同じ応援社員がいた場合その都度チェックボックスを
Onにしなければならず非常に厄介です。
しかもデータが毎日蓄積されるのでしばらく入力を忘れたりするとそれこそ手間がかかってしまいます。

どのように設定(テーブル・クエリー・リレーション等)を変更してやれば
良いのかアドバイスお待ちしております。

ちなみに現時点ではフォームから入力する際、氏名をコンボボックスで選択でき
その後連動して所属が決定するようになってます。

Access97で出面管理(出勤簿)を作成しています。

レポートを印刷する際請求を出す都合上、自社社員分と応援社員分とを分けるため社員名と所属が自社か応援かを分けるためのテーブルを作成しました。
その分類方法はYes/No型(True=応援社員、False=自社社員)に設定しました。
その際、氏名を選択すると自動で自社/応援かが認識できるようにしました。

その後、必要なテーブル・クエリー等を設定し、フォームから入力してみると
自社社員としてしか認識しません。
そこで該当するテーブルから入力(氏...続きを読む

Aベストアンサー

neiさんの言うとおり、社員区分のマスターテーブルを作るのがいいと思います。
今お使いのテーブルの社員のフィールドを社員区分マスターの社員コードに置き換えてあげることで、いちいち自社社員・応援社員の区別を今お使いのテーブルで入力しなくても良くなります。
レポートやフォームでの出力も、社員区分マスターテーブルの社員区分が1のもの、2のものを取り出すクエリーをつくってあげれば簡単だと思いますよ。
あと、Accessのサポート掲示板なんかを利用するのもいいかもしれません。
検索すると色々出てきますよ。下記URLからリンクをたどっていくのもいいかもしれません。
がんばってください。

参考URL:http://www.acc.gr.jp/kb/index.shtml


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報