DAOでテーブルの内容を検索したいのですが…
アクセス初心者です。
フォームで取得した値をテーブルで検索して命令するために,次のようなことをしてみましたが,FindFirstのところでエラーがでます。
どうしたらよいのかご指導ください。
コマンドボタンのイベントプロシージャで
Private Sub テストテーブル作成_Click()
Dim gakki As Integer
Dim test As Integer
Me.学期 = gakki
Me.テスト = test
Call testテーブル作成
End Sub
として,標準モジュールに
Sub testテーブル作成()
Dim myDB As DAO.Database
Dim myRS As DAO.Recordset
Set myDB = CurrentDb
Set myRS = myDB.OpenRecordset("T_生徒テスト")
myRS.FindFirst "学期ID=" & "" & "gakki" & "" & "AND テストID =" & "" & "test" & ""
If myRS.NoMatch = False Then
DoCmd.OpenQuery "Q_TSテストA"
DoCmd.OpenForm "F_テスト"
DoCmd.Close
Else
DoCmd.OpenQuery "Q_TSテスト"
DoCmd.OpenQuery "Q_テスト"
DoCmd.Close
DoCmd.OpenForm "F_テスト"
End If
myRS.Close: Set myRS = Nothing
myDB.Close: Set myDB = Nothing
End Sub
としました。よろしくお願いします。
No.4ベストアンサー
- 回答日時:
F_テストではテキストボックスなどの名前は
あらかじめ設定してあるものとして、以下のように
変更してみてください。
>Forms(F_テスト).RecordSource = "Q_TSテストA"
>Forms(F_テスト).Visible = True
を
Forms!F_テスト.RecordSource = "Q_TSテストA"
Forms!F_テスト.Visible = True
>Forms(F_テスト).RecordSource = "TS_テスト"
>Forms(F_テスト).Visible = True
を
Forms!F_テスト.RecordSource = "TS_テスト"
Forms!F_テスト.Visible = True
No.7
- 回答日時:
質問を良く見たら、
>また,ELSEのときだけ,F_テストの閉じるときに,
>クエリを入れたいのですが…
は、
>elseのときだけF_テストのフォームを閉じるときに
>追加クエリを実行させたい
ということなのですね。
では閉じるときにRecordsourceにクエリを入れる
という解釈は読み間違いだということならば、
方法はやはり#6での回答のように閉じるボタンを
設定し、ElseのときのRecordsourceがTS_テスト
であることを確認して追加クエリを実行する、という
タイミングが一番わかりやすい、と思われます。
少し、確認してみます。
この回答への補足
ありがとうございます。
自分としてはNo.2の補足に書いたプログラムの
…
Else
DoCmd.OpenQuery "Q_TSテストB"
DoCmd.OpenQuery "Q_テスト"
DoCmd.OpenForm "F_テスト", , , , , acHidden
Forms(F_テスト).Visible = True
Else
DoCmd.OpenQuery "Q_TSテストB"
DoCmd.OpenQuery "Q_テスト"
DoCmd.OpenForm "F_テスト", , , , , acHidden
Forms(F_テスト).RecordSource = "TS_テスト"
※
Forms(F_テスト).Visible = True
End If
…
の※のところに「F_テストを閉じるときのイベントプロシージャに,Q_テストadd(追加クエリ)を行う」という命令をいれなさい。
というプログラムを入れればいいと思っていますが,どう書けばいいのかわかりません…
いろいろありがとうございました。
わかりにくいと思いますが,以下のようにしたことで解決しました。
本当にありがとうございました。
If myRS.NoMatch = False Then
DoCmd.OpenForm "F_テスト"
Else
DoCmd.OpenQuery "Q_TSテストB" '生徒全員が入った空のテーブルをつくる(学期ID,生徒ID,テストID入り)
DoCmd.OpenQuery "Q_テストadd" '空のテーブルをデーターテーブルに連結する
DoCmd.OpenForm "F_テスト" 'データテーブルからデータを読み込む
End If
No.6
- 回答日時:
もし、一連の処理が
Private Sub テストテーブル作成_Click()
Dim gakki As Integer
Dim test As Integer
Me.学期 = gakki
Me.テスト = test
Call testテーブル作成
End Sub
を設定しているフォームを開いたままならば、
このフォームにF_テストを閉じるボタンを
くっつけてF_テストのレコードソースが
Elseの場合のTS_テストであるかを取り出して
コードを実行できるかもしれませんが。
まだ、確認していないので結論は後ほど、
というところです。
No.5
- 回答日時:
質問の積み残しがありました。
>また,ELSEのときだけ,F_テストの閉じるときに,
>クエリを入れたいのですが…
どこかで、以下のコードを入れればいいのですが、
DoCmd.OpenForm "F_テスト", acDesign, , , , acHidden
Forms!F_テスト.RecordSource = "Qaaa"
DoCmd.Close acForm, "F_テスト", acSaveYes
フォームにボタンをくっつけてそのイベントで
試してみてください。
Private Sub ボタン_Click()
DoCmd.OpenForm "F_テスト", acDesign, , , , acHidden
Forms!F_テスト.RecordSource = "Qaaa"
DoCmd.Close acForm, "F_テスト", acSaveYes
End Sub
このような感じ。
ただ、これを入れると、F_テストのRecordsourceは
クエリ"Qaaa"で確定することになります。
もちろん、コードで必要に応じて実行時の
Recordsourceは変更できますから問題では
ないのですが。どうしても確定させておくことが
必要ですか。
ただ、これをどこで入れるかが問題のような感じです。
要望では「ELSEのときだけ,F_テストの閉じるときに」
の閉じる時の場合を設定しなければなりません。
Elseのときに閉じる場合にF_テストに引導を渡す
タイミングをどのように取り出すかが問題です。
つまり、いったんF_テストをデザインビューで
開く必要があるからです。こうしないといくら
ノーマルの状態でRecordsourceを設定しても
閉じてしまうとRecordsourceは元に戻ってしまうからです。
このあたりを検討してみてください。
変更はどこかで可能だと思いますが。
No.3
- 回答日時:
似たような存在チェック質問がありますので、今後の参考
http://oshiete.goo.ne.jp/qa/2061114.html
Accessでのレコード存在チェック
>ただ,フォームのレコードソースが変わりません…
レコードソースを変えたのに表示内容が変わらない、でしょうか。
記述省略しているのかどうだかわかりませんが、
レコードソースを変えたあとには再クエリを実行してみてください。
>また,ELSEのときだけ,F_テストの閉じるときに,クエリを入れたいのですが…
同じフォームを開くけども条件が異なる。
ELSEのときだけの処理を追加したい、でしょうか。
F_テストの閉じるときに「If myRS.NoMatch = True 」と同意のIF条件を追加し判定できれば
THENのときは偽なのでスルーし、
ELSEのとき真なので処理されるかと思います。
件数カウント=0時
"Q_TSテストA"のレコードソースで "F_テスト"を開く
閉じるときで、「件数カウント>0時クエリ実行」としても何もしない
件数カウント>0時
"TS_テスト"のレコードソースで "F_テスト"を開く
閉じるときで、「件数カウント>0時クエリ実行」としたらクエリは実行される
※
実際にシュミレーション、確認まではしていませんので
参考レベルです。
この回答への補足
いつもありがとうございます。elseのときだけF_テストのフォームを閉じるときに追加クエリを実行させたいのですが,どうやって書けばよいのかわからないため,質問させていただきました。自分でも勉強しますので,時間があればよろしくお願いします。
補足日時:2010/08/27 00:29No.2
- 回答日時:
Set myRS = myDB.OpenRecordset("T_生徒テスト")
を
Set myRS = myDB.OpenRecordset("T_生徒テスト", dbOpenDynaset)
にしてみてください。
この回答への補足
ありがとうございます。
修正して以下のようにすればエラーはなくなりました。
ただ,フォームのレコードソースが変わりません…
また,ELSEのときだけ,F_テストの閉じるときに,クエリを入れたいのですが…
もしお時間があればご指導お願いします。
Sub testテーブル作成()
Dim myDB As DAO.Database
Dim myRS As DAO.Recordset
Dim gakki As Integer
Dim test As Integer
gakki = Forms![F_test]![学期]
test = Forms![F_test]![テスト]
Set myDB = CurrentDb
Set myRS = myDB.OpenRecordset("T_生徒テスト", dbOpenDynaset)
myRS.FindFirst "学期ID=" & "" & gakki & "" & "AND テストID =" & "" & test & ""
If myRS.NoMatch = False Then
DoCmd.OpenForm "F_テスト", , , , , acHidden
Forms(F_テスト).RecordSource = "Q_TSテストA"
Forms(F_テスト).Visible = True
Else
DoCmd.OpenQuery "Q_TSテストB"
DoCmd.OpenQuery "Q_テスト"
DoCmd.OpenForm "F_テスト", , , , , acHidden
Forms(F_テスト).RecordSource = "TS_テスト"
Forms(F_テスト).Visible = True
End If
myRS.Close: Set myRS = Nothing
myDB.Close: Set myDB = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
texに関する初歩的な質問
-
C#単体テストで同クラス内の呼...
-
C#の単体テストでローカル変数...
-
仕様書に書かれていないこと
-
納品 vs ご納品 どちらが正し...
-
「スポット受注」はどういう意...
-
Zと2とか紛らわしいのがあるか...
-
営業職をやってます。先月発注...
-
敬語チェックお願いします!
-
スーパー発注し始めて3週間たち...
-
グーグルの障害者訓練プログラ...
-
三菱製PLC:ファイルレジスタ(...
-
納期の前倒しを依頼する場合 ...
-
契約書の「重大な背信行為」は...
-
中小企業に対しての分割検収
-
初心者です。プログラムを作り...
-
access 今月のデータを抽出するVBA
-
納入日と納品日について
-
PostgreSQL+DataGridView
-
Windows server 2022 CALとSQL ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
texに関する初歩的な質問
-
P2P地震速報のEEW APIの仕様書...
-
VBからBeckyを使用したメール送...
-
JUnit結果出力をファイルに書き...
-
Excel-VBA コンテンツの作成日時
-
C#の単体テストでローカル変数...
-
C#単体テストで同クラス内の呼...
-
ホームページ・ビルダーで「e...
-
テスト仕様書作成って初心者(...
-
UNIX:テキストファイルのNULL...
-
Visial C++におけるプログラミング
-
テスト仕様書
-
AtomPubでlivedoorブログに記事...
-
仕様書に書かれていないこと
-
VB6 コードでメニュー作成
-
EXCEL_VBAでOracleにADO接続し...
-
Verilogの参考書のお勧めを教え...
-
ハノイ塔の非再帰について
-
納品の定義,システムの動作の常...
-
HWNDへの変換
おすすめ情報