Accessの帳票フォーム上で、ある特定の条件に当てはまるレコードの特定のコントロールを非表示にする方法はありませんでしょうか?
例えば、A,B,Cというフィールドがあって、AがNull値ならそのレコードのCコントロールを非表示にしたいのですがどうやってもうまく行きません。
条件があてはまるレコードのみの特定のコントロールを非表示にし、レコードの表示はあくまでフィルタを掛けずに全件表示でなくてはいけないという制約がありまして困っております。
これって不可能でしょうか?
どなたかお知恵をお貸し下さい。

A 回答 (5件)

 通常のmdb形式のデータベースですよね?Access2000から新機能ですが、「条件付書式設定」で出来ますよ。



1)フォームのデザインビューで、条件により変化させたいコントロールを選択します。
2)「書式」メニューの「条件付書式」コマンドを実行して下さい。

たとえばコントロールAがNullならここで選択したコントロールの文字色を白にしたりとか背景を変えたりとか出来ます。そのコントロールそのものの値を元に書式を変更することも可能です。VBAで色を変更とか表示・非表示にした場合、帳票フォームだとすべての行に反映されてしまいますが、これを使うと条件を満たした行の書式のみ変更できますよ。
    • good
    • 0
この回答へのお礼

こんな新機能が、2000にあるとは知りませんでした。
なるほど、レコード単位で非表示にすることが可能です。
2000は97に毛が生えたものぐらいにしか考えておりませんで、通常は慣れ親しんだ97を使っておりましたが、こういうのがあると全面的な移行を考えないといけませんね。
助かりました。
ありがとうございました。

お礼日時:2001/03/07 22:19

すいません。

僕は大きく勘違いしていました。「フォーム」でしたね。
Access2000ならみなさんのおっしゃるように「条件付き書式設定」を使い、「無効」にでもするしかないです。
    • good
    • 0

Accessのバージョンもわかりませんし、どのセクションかわかりません。



Access2000で、詳細セクションの場合は、VBAでPrintまたはFormatのイベントに条件でコントロールを非表示にするコードを書けば制御できます。

この回答への補足

ごめんなさい。
バージョンは97または2000のどちらかなら構いません。
それから、ご想像のとおり帳票フォームの詳細セクションです。
VBAなら制御できるとのことですが、私VBAはド素人ですのでもう少し詳しく解説していただけるとありがたいです。
私がやると、条件によって、すべてのレコードのコントロールが非表示になるか可視になるかのどちらかです。

補足日時:2001/03/06 22:38
    • good
    • 0

帳票フォームですよね?


Access2000なら条件付書式設定で非表示には出来ませんが文字色を白にするなどで対応できるかと思います。

この回答への補足

説明不足で申し訳ないです。
非表示にしたいコントロールは実は入力用でして、ユーザーに入力すべきレコードとそうでないレコードを瞬間的に認識させたいというのがその理由です。
これが、単票フォームだと条件式で非表示にできるのですが、帳票フォームだと私の知識程度では手に余る次第です。
帳票フォームでなければならないのは、他のレコードを一覧してユーザーが入力数値を決定するという要素があるためです。

補足日時:2001/03/06 22:20
    • good
    • 0

今現在、Accessを使う環境にいませんので具体的な説明はできませんが、


Isnullで、AがNullのときは、、、とできるはずです。
ヘルプのIsnullのところに借用できる例があると思います。
もしくはIIfとIsnullを組み合わせる事でできると思います。
すみません、あまりよいアドバイスでなくて。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す

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

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

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

Q帳票フォームに全レコードを表示できない

アクセス初心者ですが宜しくお願いします。

アクセス2002を使って在庫DBを作っています。
レコードセットで抽出集計した全レコードを、「帳票形式」のフォームにすべて表示させたいのですがうまくいきません。フォームのテキストボックスは全て非連結にしてあります。

考えているのは次のような手順です。
1.表示したい期間の「開始日付=kaisi」と「終了日付=owari」を入力
2.「在庫場所」コンボボックスで表示したい在庫場所コードを選択
3.選択された在庫場所コードによって、SELECT~CASEステートメントで該当する在庫場所テーブルからデータを抽出集計し、フォームに表示させる

コードは次の通りです。

Private Sub 在庫場所_AfterUpdate()
Dim cnc As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim zaiko As Variant
Dim kaisi, owari As Date

Set cnc = CurrentProject.Connection
Set cmd.ActiveConnection = cnc

kaisi = Me!期間開始
owari = Me!期間終了
zaiko = Me!在庫場所

Select Case zaiko

Case "1"
cmd.CommandText = "SELECT 物品ID, Sum(仕入) AS 仕入計, Sum(払出) AS 払出計 FROM T_薬局受払 " & "WHERE (日付) Between #" & kaisi & "# And #" & owari & "# " & "GROUP BY 物品ID;"

Set rst = cmd.Execute
Do Until rst.EOF
 Me!物品ID = rst!物品ID
 Me!受入計 = rst!仕入計
 Me!払出計 = rst!払出計
 rst.MoveNext
Loop
rst.Close: Set rst = Nothing

Case "2"・・・・・・・・・・

End Select
cnc.Close: Set cnc = Nothing
End Sub

実行しますと、フォームには「最後のレコード」しか表示されません。
フォームプロパティの「規定のビュー」は帳票になっています。
よろしくお願いします。

アクセス初心者ですが宜しくお願いします。

アクセス2002を使って在庫DBを作っています。
レコードセットで抽出集計した全レコードを、「帳票形式」のフォームにすべて表示させたいのですがうまくいきません。フォームのテキストボックスは全て非連結にしてあります。

考えているのは次のような手順です。
1.表示したい期間の「開始日付=kaisi」と「終了日付=owari」を入力
2.「在庫場所」コンボボックスで表示したい在庫場所コードを選択
3.選択された在庫場所コードによって、SELECT~CAS...続きを読む

Aベストアンサー

[ID][数量]
1,100
2,200
3,300

というテーブル[Test]を<帳票フォーム>に表示させるのに、

Private Sub Form_Load()
  Dim cnc As New ADODB.Connection
  Dim rst As New ADODB.Recordset
  Dim cmd As New ADODB.Command

  Set cnc = CurrentProject.Connection
  Set cmd.ActiveConnection = cnc

  cmd.CommandText = "SELECT * FROM TEST;"
  Set rst = cmd.Execute
  With rst
    Do Until .EOF
      Me.ID = .Fields("ID")
      Me.数量 = .Fields("数量")
      .MoveNext
    Loop
  End With
  rst.close
  cnn.close
End Sub

というコードでは、当然のように最後のレコードしか表示されません。
原因は、フォームの最初のレコードに上書きしているからです。
そこで、最初のレコードを書き込んだら新規レコードに移動するようにコードを書き換えます。


    Do Until .EOF
      Me.ID = .Fields("ID")
      Me.数量 = .Fields("数量")
      SendKeys "+({+})", False
      DoEvents
      .MoveNext
    Loop

結果は、

3,300
3,300
3,300

この場合は、非連結タイプに起因する不具合です。
以上のような検討の結果、一旦、Select文で取得した値を一時テーブルに書き込んで連結モードで表示するのが手であることが判ります。

Private Sub Form_Load()
  Dim cnc As New ADODB.Connection
  Dim rst As New ADODB.Recordset
  Dim cmd As New ADODB.Command

  Set cnc = CurrentProject.Connection
  Set cmd.ActiveConnection = cnc

  cmd.CommandText = "SELECT * FROM TEST;"
  Set rst = cmd.Execute
  With rst
    cmd.CommandText = "DELETE FROM TEMP;"
    cmd.Execute
    Do Until .EOF
      cmd.CommandText = "INSERT INTO TEMP " & _
               "(ID, 数量) VALUES (" & _
               .Fields("ID") & ", " & _
               .Fields("数量") & ");"
      cmd.Execute
      .MoveNext
    Loop
  End With
  Me.Requery
End Sub

これで、首尾よく、

1,100
2,200
3,300

と表示されます。

[ID][数量]
1,100
2,200
3,300

というテーブル[Test]を<帳票フォーム>に表示させるのに、

Private Sub Form_Load()
  Dim cnc As New ADODB.Connection
  Dim rst As New ADODB.Recordset
  Dim cmd As New ADODB.Command

  Set cnc = CurrentProject.Connection
  Set cmd.ActiveConnection = cnc

  cmd.CommandText = "SELECT * FROM TEST;"
  Set rst = cmd.Execute
  With rst
    Do Until .EOF
      Me.ID = .Fields("ID")
      Me.数量 = .Fiel...続きを読む

Qフォーム等入力時においてIMEが働かない(?)

よく起こる現象で、インターネットでフォーム入力や、Yahooとかの検索入力で日本語入力をしたいときに、IMEが働かない現象が起きています。半角英数のみ入力ができます。私の環境だけでしょうか‥。
キーボードの「半角/全角」キーが効かないので、IMEツールバーを出して、マウスで日本語入力の「あ」にしても入力画面では半角英数に戻ったりします。
Wordやメモ帳を起動すると、正常に働くので、メモ帳を立ち上げてそこへ入力して、コピーしてペーストをしたりして対処をしています・・。
常にメモ帳を立ち上げておけば解決とかの意味ではありません。
IEをアクティブウィンドウにした場合、IMEが働くなくのです。

Aベストアンサー

確かIEのバグだったと思います。

対処法のリンクを貼っておきますので、参考にしてください。
http://www.tku.ac.jp/~densan/local/ie7-ime/ie7-ime.html

QAccessの帳票フォームで重複データを非表示にしたい

印刷チェック 見積番号B 見積番号C 発注先コード               B-001 C-001 D-001               B-001 C-001 D-001
       B-001 C-002 D-002
       B-001 C-002 D-002

このようなフォームがあります。
これを
印刷チェック 見積番号B 見積番号C 発注先コード               B-001 C-001 D-001

       B-001 C-002 D-002
このようにしたいと思っています。
重複したデータ部分を非表示にしたいと思っています。
印刷チェックの区分は、印刷したいものにチェックをする、
チェックボックスになっているため、
クエリにての操作が出来ません。

どのようにしたら良いのでしょうか?
宜しくお願いします。

印刷チェック 見積番号B 見積番号C 発注先コード               B-001 C-001 D-001               B-001 C-001 D-001
       B-001 C-002 D-002
       B-001 C-002 D-002

このようなフォームがあります。
これを
印刷チェック 見積番号B 見積番号C 発注先コード               B-001 C-001 D-001

       B-001 C-002 D-00...続きを読む

Aベストアンサー

見積番号B 見積番号C 発注先コード を持つフィールドのテーブルで
同じ値のものを表示しない方法は、クエリーを作成する際、
クエリーのプロパティの固有の値をはいにしてください。
した場合SQLは
SELECT DISTINCT テーブル1.見積番号B, テーブル1.見積番号C, テーブル1.発注先コード FROM テーブル1;
になります。
固有の値をいいえの場合
SELECT テーブル1.見積番号B, テーブル1.見積番号C, テーブル1.発注先コード FROM テーブル1;
DISTINCTがないところがことなり、あれば同じ値は表示されません。
このクエリーを使って印刷すればよいと思います。

QWebフォームのIMEモードを入力項目毎に自動切替

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにアプリケーション側で制御されるものが大半だと思っておりました。それを聞いてある人は「そんなことはない、世の中の大半のアプリはそんなことを制御していない、「普通」は自分でIMEで制御しながら入力するものだ」、と言っていたので議論になりました。これからウェブサイトを作ろうと思っているので、最終的にはこの議論はアプリ側にそのような実装をするかどうかというところに帰着するのですが、まずは「一般的にどうなのか」というところでご意見を頂きたいと思います。ちなみに、日本のメジャーなサイト(航空会社、ポータル、携帯電話、電気屋)10個でユーザ登録フォームを確認したところ、名前欄をクリックしてもいずれもIMEのモードはひらがなに変更されませんでした。そこで今は友人が正しくて、僕が間違っていたどころか、「そもそも、名前入力時に自動的にひらがなにモード変換されるようなサイトって本当にあるのだろうか。。」というような状態になっております。どなたか、教えてください。よろしくお願いします。

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにア...続きを読む

Aベストアンサー

IMEのON/OFFができるスタイルシート「ime-mode」は、Internet Explorerが独自に追加した仕様で、Internet Explorerでは入力モードが切り替わりますが、その他のブラウザでは保証されません。
http://www.htmq.com/style/ime-mode.shtml

今、確認したところ、IE8はもちろん切り替わり、Firefox 3.6も切り替わりましたが、Google Chromeは切り替わりませんでした。
Opera,Safari,Sleipnir…等は試してません。

大手のサイトでは「より多くのブラウザで表示できること」が求められますので、独自仕様の「ime-mode」を使っているところは少ないのではないでしょうか。
逆に「Internet Explorerしか表示できなくて良い」と割り切ってるサイトや、社内だけに公開するようなページは「ime-mode」が使われていると思います。

Qアクセス2000のレコードボタンの非表示

AとBの名前のフォームがあります。
AにはCという入力欄があり、Cを入力しBのフォームを開くと
BはCに関連づいたレコードが抽出されます。
この時、Bのフォームにレコードボタン(左下の▲)を
非表示もしくは、使用不可にしたいのですが
どうしたらよいでしょうか?
理由として、Aのレコード一つに対してBは必ず一つのためで
Bが複数あると困るからです。

宜しくお願い致します。

Aベストアンサー

どのようなシステムにしているのかわからないのですが・・・

フォームの「追加の許可」プロパティを「いいえ」にするだけでは
ダメでしょうか・・・・

参考まで・・・

QACCESS フォーム上 テキストボックスを移動するごとに文字の入力モードが戻ってしまう

ACCESSでフォーム上で入力をしています。
テキストボックスを移動するごとに半角英数になってしまい非常に不便です。

テーブルではIME入力モード:ひらがな、IME返還モード:一般としています。
テーブルのデザインビューの状態では指定している通りのひらがなで入力できるのが、フォームになると半角英数の状態です。
フォームのプロパティから何か設定を変更しなければいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

maigo-no-konekoさん
ACCESS2000では次の機能があります。
テーブルの項目定義のIMEの設定内容が引き継がれる仕様なのか
否か不明ですが、フォームの定義画面でテキスト項目やコンボボックス
など入力項目毎に指定します。
(ただし、シフトキーを押しながらマウスクリックすることで
複数選択できます)

1)テキストポックスのプロパティ画面を呼び出します。
2)その他 タブにIME関連の項目があります。
  IME入力モード保持 直前に入力した項目のIMEの入力設定
  状態を引き継ぐ場合は「はい」にします。直前の入力項目の
  設定によらない場合は「いいえ」にします。
  IME入力モード オンまたはひらがな等にします。
           ここでご希望の入力方法を選択します。
  IME変換モード 一般(人名や地名などを入力す場合は
  人名/地名)にします。

Qサブフォームの帳票のレコードを編集している時

ここに、親フォームと子フォーム(サブフォーム)があって
子フォームのレコードソースは、Workテーブルとします。
子フォームを編集・新規レコード追加すると、
親フォームの保存ボタン処理で、子フォームのレコード内容をWorkから、元テーブルに更新をかける知りをつくろうと考えています。

この時、
子側の帳票のレコードを編集したり、新規レコードを追加している時には
■『親側で、別のレコードに移動出来ないようにし、親側にある「保存」ボタンを押して、上記の処理をしたあとに、親側で別レコードに移動できる』 ような作りにしたいです。

これを実現するために、上の■『・・・』を実現できるようにするのには、どのようにしたら良いでしょうか?

よろしくお願いします。

Aベストアンサー

連結フォームなら、フィルターなどで対象の1レコードのみ抽出して「追加の許可」を「いいえ」にしておけば、レコード移動はしません。

あるいは、非連結フォームにしてもいいですね。

サブフォームのレコードソースがWorkテーブルと言うことは、本テーブルとは非連結ですので、親フォームも非連結フォームにすれば統一性があっていいかもしれませんね。
あるいは1レコードのみのWorkテーブルをレコードソースにするいうのもいいかも。

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

QAccessのフォーム上にレコード数とレコード番号の表示

Accessでクエリを元に表示するフォーム上で、テキストボックス等に関数を使って、レコード数とレコード番号を表示する方法がありましたら教えてください。

フォームの書式設定で「移動ボタン」の表示をすれば目的の事は出来るのですが、表示の大きさが調整できない為、とても見難いのです。

以上よろしくお願いします。

Aベストアンサー

レコード番号のコントロールソースを
=[CurrentRecord]
レコード数のコントロールソースを
=Count("*")-[NewRecord]
としてみてください。


人気Q&Aランキング

おすすめ情報