ACCESS2000を使っています。
フォームのボタンでクエリーを開きたいのですが
どうしたらよいのでしょうか?
BVAを書くのですか???

A 回答 (3件)

是非マクロを使ってみて下さい。


簡単なものでしたら、マクロの方が日本語で理解しやすいと思います。
マクロを組めば、後でプロシージャーに変換できますから、コードがわかるようになると思います。
あと前回の回答に書いたようにやっていただければOKと思います。

おっしゃるように、ACCESSははまってしまいますよね。
    • good
    • 0
この回答へのお礼

遅れましてすみません。マクロ挑戦する気になってきました。
またそのときはわからないこと教えてくださいね。
ありがとうございました!

お礼日時:2001/06/11 09:46

選択クエリーを開いてみるだけなら以下のように記述します。



DoCmd.OpenQuery "クエリ1", acViewNormal, acReadOnly

詳細はHELPを見て下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。おかげで助かりました。
開いて見るだけ以外にはどんなことに使えるのでしょうか?
ACCESSをやり始めていろんな可能性にびっくりしている毎日です。
基本的なことばかりかと思いますが、今後また是非お答えください。

お礼日時:2001/06/07 15:45

こんばんわ、i-haradaといいます。


フォームのデザインにツールボックスが有り、その中のボタンを使用していますね。そのボタンを作るとき、その上にウィザードを押しておけば、コマンドウィザードが走ります。次に「その他」を選択、クエリの実行を選択、目的のクエリ名を選択、コマンドボタンに表示する文字列かピクチャーを選択していけば、とりあえずは完了します。
他の方法はコマンドボタンのプロパティに「クリック時」というのがあるので、それを選択すると、プルダウンの右の四角いボタンを押せば「ビルダー」が3つ現れます。「マクロビルダ」にいって「マクロ」を組むか、「コードビルダ」に行ってプロシージャ―を記述するかになると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
もしよろしかったらもうひとつ!
コードはちょっとですがつかっていますが、マクロは
使ったことがありません。何か違いがあるのでしょうか?
また、モジュールって何ができるんですか?
ACCESSってほんとに面白いです。まだ到達率は1%くらいなのでしょうが
私は残り99%を知りたくてたまりません!
基本的なこととなりますがまた見かけましたらば是非お答えください。

お礼日時:2001/06/07 15:50

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

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

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

QAccess2000 単票フォーム上のボタンを押すと、同じIDを持つフォームが開くよういしたい

Accessの初心者です。
本当に超がつく初心者ですので、解説もしてくださるととても嬉しいです。
宜しくお願いします。



請求書番号連番を取得するフォーム(テーブルも)があります。
請求書番号は特殊な為、現時点ではじか打ちで作成しています。
それとは別に、顧客ごとに請求データを入力するフォーム(テーブルも)があります。
その二つは、請求書番号でひもづけています。



<請求書番号連番取得フォーム/帳票>
・請求書番号
・請求日
・顧客ID

<請求データの入力フォーム_A社/単票> ※これがB社、C社と複数存在します。
・顧客ID
・請求書番号
・商品CD


<請求書番号連番取得フォーム/帳票>上にボタンをつくり、そのボタンを押すと、
同じ顧客IDを持つ<請求データの入力フォーム/単票>が開けたらな・・・と思っているのですが、
わかりますでしょうか・・・・。

どうか、宜しくお願い致します。



<請求書番号連番取得フォーム/帳票>
_________________________________________________________________
請求書番号|請求日 |顧客ID| 
_________________________________________________________________
09BB87ZZ1|2009/04/01|0001 |■(ボタン)
--------------------------------------------
09BS87AA2|2009/04/10|0003 |■(ボタン)
--------------------------------------------

↑この1行目の■(ボタン)を押すと、顧客ID「0001」の請求書番号「09BB87ZZ1」の単票フォームが開き、
(請求書番号欄に「09BB87ZZ1」が入っている。)
2行目の■(ボタン)を押すと、顧客ID「0003」のフォームを開く・・・というような動きです。


説明が下手で申しわけありません。
お願いします。

Accessの初心者です。
本当に超がつく初心者ですので、解説もしてくださるととても嬉しいです。
宜しくお願いします。



請求書番号連番を取得するフォーム(テーブルも)があります。
請求書番号は特殊な為、現時点ではじか打ちで作成しています。
それとは別に、顧客ごとに請求データを入力するフォーム(テーブルも)があります。
その二つは、請求書番号でひもづけています。



<請求書番号連番取得フォーム/帳票>
・請求書番号
・請求日
・顧客ID

<請求データの入力フォーム_A社/単票>...続きを読む

Aベストアンサー

#2です。

意味合いが違ってましたね。

「顧客ID」に対応した「フォーム名」情報がテーブルで作られているとします。
もしくは、「顧客ID」と A社、B社、C社 などが紐付けされ、その社ごとに「フォーム名」情報が得られるとすると

ボタンがクリックされた時の処理例)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  sForm = DLookup("フォーム名","テーブル名/クエリ名","顧客ID='" & Me.顧客ID & "'")
  DoCmd.OpenForm sForm, , , sWhere, , , sArg
End Sub


呼ばれた各「請求データの入力フォーム」での処理

Private Sub Form_Open(Cancel As Integer)
  If (Me.Recordset.RecordCount = 0) Then
    Me.請求書番号.DefaultValue = Me.OpenArgs
    DoCmd.GoToRecord , , acNewRec
'☆    Me.ラベル1.Caption = "新規"
'☆  Else
'☆    Me.ラベル1.Caption = "既存"
  End If
End Sub


※「顧客ID」に対応した「フォーム名」情報ではなく、「会社名」なり「会社ID」が得られるのであれば以下のような感じかと
(会社IDが得られるとした場合)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  Select Case DLookup("会社ID","テーブル名","顧客ID='" & Me.顧客ID & "'")
    Case 1
        sForm = "請求データの入力フォームA"
    Case 2
        sForm = "請求データの入力フォームB"
    Case 3
        sForm = "請求データの入力フォームC"
    Case Else
        sForm = "請求データの入力フォームETC"
  End Select
  DoCmd.OpenForm sForm, , , sWhere, , , sArg
End Sub

#2です。

意味合いが違ってましたね。

「顧客ID」に対応した「フォーム名」情報がテーブルで作られているとします。
もしくは、「顧客ID」と A社、B社、C社 などが紐付けされ、その社ごとに「フォーム名」情報が得られるとすると

ボタンがクリックされた時の処理例)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  sForm = DLookup(...続きを読む

QAccess2003でフォームにあるコマンドボタンで更にフォームを開く

Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。


Access2003で社員情報管理のデータベースを作成中です。
社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。

この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、以下のようなVBAを記述しました。

Private Sub コマンドボタン_Click()

DoCmd.OpenForm "詳細情報フォーム"

Forms![詳細情報フォーム![社員番号].DefaultValue = Me![社員番号]

End Sub

【社員番号】は7ケタの半角英数で、社員によって、数字だけの場合と、英数混じっている場合とがあります(データ型はテキスト型にしてあります)。

困っているのは、

1.上記を実行した際に、数字だけの社員番号は問題ないのですが、英数混じりの場合だと"社員番号"テキストボックスが「#Name?」という表示になってしまう

2."基本情報フォーム"のコマンドボタンをクリックして新規の"詳細情報フォーム"を開き(社員番号のみが反映され、他の項目は空欄の状態)、詳細情報を入力→保存したあと、別の社員番号で"基本情報フォーム"を開き、コマンドボタンで"詳細情報フォーム"を開くと、前に入力した社員の情報が出てきてしまう。
(つまり、"詳細情報フォーム"のもととなるテーブルに、1行でもレコードがあると、それが出てきてしまう。)

【詳細情報】は、
1.データを入力する社員としない社員とがいる
2.新規でレコードを作成する場合と、既存のレコードを上書きする場合とがある

ので、もととなる"詳細情報テーブル"にその【社員番号の】レコードがなければ新規入力画面を、レコードがあればそのレコードを呼び出す形にしたいのですが、英数混じりの表示の件も含め、どうすれば、正しく表示されるか教えていただきたいです。
ぜひぜひよろしくお願いします。

Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。


Access2003で社員情報管理のデータベースを作成中です。
社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。

この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、...続きを読む

Aベストアンサー

> "詳細情報フォーム"のもととなるテーブルに、1行でも
> レコードがあると、それが出てきてしまう。

これに関しては、
 a)詳細情報フォームのレコードソースに使用している
  テーブルから、基本情報フォームのデータを絞り込み
  条件とするクエリを作成し、これを詳細情報フォーム
  のレコードソースにする
 b)詳細情報フォームを開くときに、基本情報フォームの
  データでフィルタを掛ける
の、おおまかに2種類の対処方法があります。

使い勝手などからすると「a」の方がよいのですが(→「b」
の方法だと、右クリックメニューなどでフィルタを解除すると
現状と同じになってしまう)、現状からの改変が少ない分、
わかりやすいと思われる、「b」の方法を以下に提示します:
(英数混じりの場合への対処も組み込み済みです)

Private Sub コマンドボタン_Click()

  '変数の宣言
  Dim strCode As String

  '『社員番号』を「"」(ダブルクォート)で囲んだ形で記録
  '(→既定値やフィルタ条件に文字列を指定するには必須)
  strCode = Chr(34) & Me![社員番号] & Chr(34)

  '社員番号をフィルタ条件として指定して詳細情報を表示
  '(詳細情報未登録の社員の場合は、空のレコードが表示されます)
  DoCmd.OpenForm "詳細情報フォーム", , , "社員番号=" & strCode

  '既定値(DefaultValue)を設定
  '(既定値への代入なら、入力済みのデータは変更されません)
  Forms![詳細情報フォーム]![社員番号].DefaultValue = strCode

End Sub


・・・以上です。
コード中のコメントにも書きましたが、文字列を既定値やフィルタ
条件に使用する場合は、ダブルクォート(場合によってはシングル
クォート)を括ってやる必要がある、ということです。
(そうしないと、社員番号が「ABC123」の場合、その文字列では
 なく「ABC123」というフィールドやコントロールの値が参照されます
 (→そして該当するものがないので「#Name?」エラーが発生、と))

なお、日付/時刻型のデータを扱い場合は、今度は「#」で値を
括ってやる必要があります(「#2010/05/06#」など)ので、併せて
今後の参考まで。

> "詳細情報フォーム"のもととなるテーブルに、1行でも
> レコードがあると、それが出てきてしまう。

これに関しては、
 a)詳細情報フォームのレコードソースに使用している
  テーブルから、基本情報フォームのデータを絞り込み
  条件とするクエリを作成し、これを詳細情報フォーム
  のレコードソースにする
 b)詳細情報フォームを開くときに、基本情報フォームの
  データでフィルタを掛ける
の、おおまかに2種類の対処方法があります。

使い勝手などからすると「a」の方がよいのですが(→「b」
の...続きを読む

Qaccess2000表形式フォームから単票形式フォームで開きなおす方法

access2000でDBをつくっています

表形式フォームのNoフィールドをダブルクリックして、クリックしたレコードのみを
単票形式フォームで開く。ということをしたいのですが、

表形式フォームのほうに
Private Sub   No_DblClick(Cancel As Integer)
DoCmd.OpenForm "単票形式", acNormal, , [No] = Me![No].Value, , acDialog
End Sub
とVBAを書いているのですが、
Noの値が3のところをクリックしてもNo=1のレコードが先頭に開けてしまい、
望むような結果が得られません。

本3,4冊調べてもよくわからないので、
アドバイスお願いします。

Aベストアンサー

えーと、確認してる時間がないので、間違ってるかもしれません。

フォームにリンクしているテーブル(クエリ)を"tbl1"と呼びます。
tbl1を元に選択クエリを作ります。
全部のフィールドを表示する設定にします。
「フィールド」のところに"*"をいれるのですね。
で、[No]を「フィールド」に入れて、「抽出条件」のところに「Form!表形式フォーム!No」と入れます。

「単票形式フォーム」のリンク元テーブルをそのクエリにします。

そんで、ダブルクリックのイベントで単純に「単票形式フォーム」を開けばOKです。

QAccess2000でフォームを開くときに常に新規レコードで開きたいのですが

Access2000で、あるイベントに参加した人のデータベースを作りました。

検索用フォームで「氏名」と「生年月日」で検索し、その人の情報を別の
フォームで見ることができるようになっています。

該当者がいない場合は、新しいレコードにそのデータを追加します。

検索結果を表示するフォームに個人情報を表示・書き込みできる画面を開く
ためのボタンがあるのですが、このボタンをクリックした時に、常に新規
レコードで開きたいのですが、コードはどのように記述すればよろしいの
でしょうか?

ちなみに、いまは下記のようなコードになっています。

「新規登録ボタン」は個人情報を表示・書き込みできる画面を開くためのボタン
「応募者」は個人情報を表示・書き込みできるフォーム
です。

Private Sub 新規登録ボタン_Click()
On Error GoTo Err_新規登録ボタン_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "応募者"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_新規登録ボタン_Click:
Exit Sub

Err_新規登録ボタン_Click:
MsgBox Err.Description
Resume Exit_新規登録ボタン_Click

End Sub

Access2000で、あるイベントに参加した人のデータベースを作りました。

検索用フォームで「氏名」と「生年月日」で検索し、その人の情報を別の
フォームで見ることができるようになっています。

該当者がいない場合は、新しいレコードにそのデータを追加します。

検索結果を表示するフォームに個人情報を表示・書き込みできる画面を開く
ためのボタンがあるのですが、このボタンをクリックした時に、常に新規
レコードで開きたいのですが、コードはどのように記述すればよろしいの
でしょうか?

...続きを読む

Aベストアンサー

DoCmd.OpenForm stDocName, , , stLinkCriteria

DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormAdd

で解決しませんか。

QAccessで、フォームAからダイアログモードで立ち上げたフォームBを開き、フォームBを閉じた時にフォームA側でマクロを実行したい

タイトルのままなのですが、

フォームA(メインとなる画面)と
フォームB(コードの検索画面)があり、
フォームAからフォームBをダイアログモードで開いている状態から、
フォームBを閉じたときに、フォームA側でマクロを実行したいと思っています。

具体的には、フォームAにコード入力用のテキストボックスがあり、コード検索のためにフォームBを立ち上げ、コードを選択した後フォームAのテキストボックスにそのコードを入れて、そのコードの値を元にフォームAにあるコンボボックスの再クエリを行いたいのです。

コンボボックスの再クエリの方法等は理解しているのですが、
上記のような場合に、どのイベントがキックされるのかが分かりません。
どのようにすれば(どのイベントを選んでマクロを指定すれば)適切に実行できるでしょうか。

Aベストアンサー

フォームBの処理
「値の代入」
「オブジェクトの選択」
  オブジェクトの種類:フォーム
  オブジェクト名:フォームA
「再クエリ」
  コントロール名:コンボボックス名
でいかがでしょうか?


人気Q&Aランキング

おすすめ情報