【最大10000ポイント】当たる!!質問投稿キャンペーン!

「Access2000」を
使用しています。

デスクトップに置いたフォームの
ショートカットを開く時に、
警告メッセージが出るようにしたいのですが
そのようなことは出来るでしょうか?

具体的には、
ショートカットをダブルクリックすると
ウィンドウが現れて、
「最初に発注日付を入力して下さい!」
というようなメッセージが表示されます。
その後、そのウィンドウの「OK」ボタンを
押すなりしてから
フォームの画面を触れるようにしたいのですが…。

VBAなどは殆ど触ったことがないのですが、
簡単な方法などはありますでしょうか?

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

A 回答 (2件)

アクセスの「ファイル」を開き、その中のフォームを開いたときに


メッセージを出したい、という事であるということで回答します。

分かりやすいのは「マクロ」だと思います。
オブジェクトの「マクロ」を選んで「新規作成」してください。
「アクション」の所で「メッセージボックス」を選びます。
すると下に「メッセージ」「警告音」「メッセージの種類」「メッセージのタイトル」
という項目が現れるので、「メッセージ」に「最初に発注日付を入力して下さい!」と入力し、
「メッセージの種類」を「注意!」もしくは「情報」にします。
そしてそのマクロに名前を付けて保存した後、フォームをデザインモードで開きます。
「イベント」タブを選択すると「開く時」という項目があるので、
そこで先ほど名前を付けたマクロを選択してあげればできると思います。

題意と違うようでしたら、ご指摘ください。
    • good
    • 0
この回答へのお礼

出来ました!
これなら簡単ですね。

回答、ありがとうございました(^-^)。

お礼日時:2004/01/09 13:44

AutoExecマクロで出来るかと思います。


AutoExecマクロとはmdbを起動した時に
実行されるマクロなのですが、
(マクロ名をAutoExecとつけます。)
そのマクロに「メッセージボックス」と
「フォームを開く」アクションを追加してやれば
出来ると思います。
    • good
    • 0
この回答へのお礼

すみません。
初心者なもので、
「AutoExecマクロ」の意味が
よく分かりませんでした(^-^;)。

NO.1の方と同じ方法
なのでしょうか?

回答、ありがとうございました(^-^)。

お礼日時:2004/01/09 13:51

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

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

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

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

Qフォームを表示してからメッセージボックスを表示する

メッセージボックスが表示される前に、フォームを表示させたいです。アクセスです。
ナビゲーションウインドウからフォームをダブルクリックしてフォームを開くのですが、
今のままだとメッセージボックスが表示されてからフォームが表示されてしまいます。

フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう?

Private Sub Form_Open(Cancel As Integer)
MsgBox "Form_Open"
End Sub

だと、先ほど述べたように、メッセージボックスが表示されてからフォームが表示されてしまいます。

フォームを開いたときのイベントは複数あるようで、
Private Sub Form_Activate()
MsgBox "Form_Activate"
Debug.Print "Form_Activate"
End Sub

Private Sub Form_Current()
MsgBox "Form_Current"
Debug.Print "Form_Current"
End Sub

Private Sub Form_GotFocus()
MsgBox "Form_GotFocus"
Debug.Print "Form_GotFocus"
End Sub

Private Sub Form_Open(Cancel As Integer)
MsgBox "Form_Open"
Debug.Print "Form_Open"
End Sub

Private Sub Form_Load()
MsgBox "Form_Load"
Debug.Print "Form_Load"
End Sub

をすると、
・Form_Load
・Form_Activate
・Form_GotFocus
・Form_Open
・Form_Current
の順に開きますが、やはりフォームが最後に表示されてしまいます。

どうにかして先にフォームを表示させる方法はないでしょうか?
ご回答よろしくお願いします。

メッセージボックスが表示される前に、フォームを表示させたいです。アクセスです。
ナビゲーションウインドウからフォームをダブルクリックしてフォームを開くのですが、
今のままだとメッセージボックスが表示されてからフォームが表示されてしまいます。

フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう?

Private Sub Form_Open(Cancel As Integer)
MsgBox "Form_Open"
End Sub

だと、先ほど述べたように、メッセージボックスが表示されてからフォームが表示されてしまいま...続きを読む

Aベストアンサー

>メッセージボックスが表示される前に、フォームを表示させたいです。
何故こんな事がしたいのか疑問ですが
これで近いことが出来るかも。

フォームの『タイマー間隔』欄に、5000
その上の『タイマー時』イベントの内容は
MsgBox "5秒経過"
Me.TimerInterval = 0

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESSで条件によってフォーム上のフィールドの色を変更

一覧形式のフォームがあり、条件によって色を変更したいのですが、その条件というのが下記のような感じです。

フィールドA | フィールドB | フィールドC | チェックボックス
チェックボックスのチェックがあったら、フィールドA・B・Cの色をグレーにする。
チェックがなかったら白いまま。

というものです。
条件付書式だと、色を変更するフィールドそのもののデータを参照にしないといけないんですよね?
フォームオープンのところにVBAをかいてみたんですが、ひとつひとつは認識してないみたいで…。
どのようにすればいいのでしょうか?

よろしくお願いします。

Aベストアンサー

フォームのデザイン画面で3つのフィールドすべて選択し条件付書式画面を表示させる。
条件1のコンボで”式”を選択。
右側の欄に[チェックボックスのコントロール名]=True
と入力し、バケツアイコンでグレーを選択。
(もちろん1フィールドづつ設定してもOK)

Qアクセスのフォームから別のフォームを開く

アクセスのフォームで、あるフォームから別のフォームを開こうとしています。

Form_XXX.show vbModal

というようなコードで実現可能かと思われますが、なぜかshowメソッドが選択できません(フォーム名は正しい)。

初歩的な質問ですが、どなたか対処法を教えていただけませんでしょうか。

Aベストアンサー

おはようございます.

AccessVBAですよね?

DoCmdオブジェクトを使ってください.
------
DoCmd.OpenForm "Form_XXX"
------
で、いかがでしょうか?(フォーム名を""で囲んでください)



ちなみにフォームを閉じる場合は、

DoCmd.Close です。

Qテキストボックスにクエリ結果を表示させたい

フォームにテキストボックスAがあり、そこに入力した文字(下記テーブルのフィールド1の文字)をクエリーの「抽出条件」にし、同じフォーム上のテキストボックスBに表示しようと思っています。

クエリを開くとパラメータの入力を求めてきて、入力するとうまく抽出されます。

テーブルは
フィールド1|フィールド2
  A   |  10
  B   |  20
  C   |  30
  D   |  40
のような簡単なものです。

テキストボックスBのコントロールソースに
「=[○×クエリ]![フィールド2]とやっても「#Name?」と表示されてしまいます。

どのようにやればよいのでしょうか?

Aベストアンサー

クエリは必要ありません。

フォームのレコードソースに無いデータを表示させる
場合には DLookUp を使います。

テキストボックスBのコントロールソースに
=DLookUp("フィールド2","テーブル名","フィールド1='" & [テキストボックスA]) & "'"

上記は「フィールド1」が文字列型の場合です。

数値型の場合は次のようになります。
=DLookUp("フィールド2","テーブル名","フィールド1=" & [テキストボックスA])

DLookUp 関数は コントロールソースに限らず
VBA でも使用し、Access では、非常に使用頻度の高いものです。

ヘルプで調べて、ぜひマスターしてください。

もし Access でなかったら、このレスは無視して下さい。

QACCESS クエリで、グループ化したものをカウントしたい

SQLでなくクエリで、グループ化したものをカウントしたいのですが、クエリを2個作ればよいのはわかるのですが、これを1つのクエリで作るのは可能でしょうか?

現状:
クエリ1 グループ化
クエリ2 クエリ1の結果をカウント

あまりにクエリを作り過ぎる為、今後の向上の為にと思い、質問します。
よろしくお願いします。

Aベストアンサー

>>Sum(1/DCount("*","テーブル名","グループ='" & [グループ] & "'"))
>が理解できませんでした。(再現もできませんでした)
質問にテーブルの情報がなかったのでこのように書きました

グループとは質問の1段目のクエリでグループに指定したフィールドの名前です

グループAが3レコード、Bが2レコードあれば

1/3+1/3+1/3+1/2+1/2=2

という結果が得られます

Qアクセス:既定値に土日含まず3日後を指定したい

エクセルの場合ですとworkday関数を使用すればいいのですが、
アクセスの場合はどのようにしたらよいのでしょうか?
いろいろネットで調べてみたのですが、workday関数はアクセスでは無いように思うのですが・・・。
また、もし簡単に出来るのであれば、祝日も除きたいのですが、
これは本当に難しいらしくあきらめています。本当に初心者レベルで申し訳ないのですが、教えていただけると幸いです。

Aベストアンサー

workday関数ですが、Accessにはないので、
モジュールで自作する必要があります。

まず、祝日や、盆休みなどの休日のデータを用意します。

Accessの場合、テーブルとして作った方が良いでしょう。
 テーブル名 :holiday
 フィールド名:data (日付型) 主キー

土日は計算できるので、土日以外の、祝日や、
振り替え休日、会社独自の休日などを登録しておきます。

次に、新規のモジュールを追加し、下記のようなソースを記述。
適当な名前で保存して下さい。
-----------------------------------------------------------
Option Compare Database
Option Explicit

'd(日付)から、c(日数)営業日後の日付を返す
Public Function WorkDay(d As Date, c As Integer)
 Dim count As Integer
 '初期化
 WorkDay = NextWorkDay(d)
 count = 0
 Do While count < c
  '営業日をカウントしながら進める
  WorkDay = NextWorkDay(DateAdd("d", WorkDay, 1))
  count = count + 1
 Loop
End Function

'd(日付)以降の営業日を返す
Private Function NextWorkDay(d As Date) As Date
 NextWorkDay = d
 Do While IsHoliday(NextWorkDay)
  NextWorkDay = DateAdd("d", NextWorkDay, 1)
 Loop
End Function

'd(日付)が、土日・休日かチェック
Private Function IsHoliday(d As Date) As Boolean
 If Weekday(d) = vbSunday Or Weekday(d) = vbSaturday Then
  '土日ならTrue
  IsHoliday = True
 ElseIf IsNull(DLookup("data", "holiday", "data = #" & d & "#")) Then
  '平日で、休日でなければFalse
  IsHoliday = False
 Else
  '休日ならTrue
  IsHoliday = True
 End If
End Function

-----------------------------------------------------------
フォームの既定値のプロパティでは下記の様に使います。
今日から3営業日後の日付を規定値にする場合、
 WorkDay(Date(),3)

Excelのworkday関数と同じような使い方です。
違いは、休日のデータを、テーブルに用意しておく点です。

workday関数ですが、Accessにはないので、
モジュールで自作する必要があります。

まず、祝日や、盆休みなどの休日のデータを用意します。

Accessの場合、テーブルとして作った方が良いでしょう。
 テーブル名 :holiday
 フィールド名:data (日付型) 主キー

土日は計算できるので、土日以外の、祝日や、
振り替え休日、会社独自の休日などを登録しておきます。

次に、新規のモジュールを追加し、下記のようなソースを記述。
適当な名前で保存して下さい。
-------------------------------...続きを読む

QAccessフォームに進行状況ダイアログを表示したい

Access2000を使用しています。
DAOでデータ引き当て処理を行なっている最中、進行状況ダイアログ
を表示すれば時間の目安が付きやすいと思うのですが、やり方が分か
りません。Accessでフォームに表示するのは難しいのでしょうか?
ご存知の方、方法もふくめて宜しくお願いいたします。

Aベストアンサー

#3です。

Call InitProgressとCall UpdateProgress(処理数/合計数)の後に、DoEventsを入れてもダメ?

QACCESS DCOUNTの抽出条件について

式1: DCount("コード","テーブル","コード=" & [テーブル]![コード])

結果の2以上のものを抽出したいのですが、どのように記述するのでしょうか?

>1または>=2またはnot 1でもいいですが・・・
記述方法が良く分かりません。

Aベストアンサー

No.3です。

> コード=の構文エラー 演算子がありません。
> 不明。
> とエラーメッセージが表示されます。

そのエラーメッセージの内容からすると、『コード』が「Null」(空白)のものがある、
ということだと思います(その事態は想定していませんでした)。
一応、こちらで作成したサンプルにて、DCountを使用した場合に、同様の
メッセージ(計2件)が表示されるのは確認しました。
(補足の文意を「集計クエリで解決はできたが、DCountの方はエラーとなる」
 と取りました。もしも集計クエリの方でも上記エラーが出ているようでしたら、
 元となるテーブルとクエリの情報(フィールド名とデータ型)をお知らせ下さい)
※なお、コードは数値型と想定しています。もしも文字列方の場合は、併せて
 式を「"コード='" & [テーブル]![コード] & "'"」と変更する必要があります。

上記のエラーを回避するには、DCountの第1引数を「*」にします。
また、コードがNullのレコードで、クエリの表示結果が「#エラー」となるのを
回避するためには、第3引数にNz関数を使用します。
(コードの最小値は0か1でしょうから、「最小値-1」(=-1か0)にするのがよいかと
 思います)

【Nullは重複数に含めない場合】
DCount("*","テーブル","コード=" & Nz([テーブル]![コード],-1))
※コードがNullの場合は、第3引数の結果がTrueにならない(Null=-1)ので
 0件扱いとなるため、抽出条件の「>1」で弾かれます。
 また、第3引数にNz関数を使用する代わりに、クエリの『コード』の抽出条件に
 「Is Not Null」を指定する(→最初から集計の対象外にする)方法もあります。

【Nullも1つのコードとして重複扱いする場合】
DCount("*","テーブル","Nz(コード,-1)=" & Nz([テーブル]![コード],-1))

No.3です。

> コード=の構文エラー 演算子がありません。
> 不明。
> とエラーメッセージが表示されます。

そのエラーメッセージの内容からすると、『コード』が「Null」(空白)のものがある、
ということだと思います(その事態は想定していませんでした)。
一応、こちらで作成したサンプルにて、DCountを使用した場合に、同様の
メッセージ(計2件)が表示されるのは確認しました。
(補足の文意を「集計クエリで解決はできたが、DCountの方はエラーとなる」
 と取りました。もしも集計クエリの方でも...続きを読む


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

人気Q&Aランキング