2つの項目で主キーを構成するテーブルを定義しました。
この場合、VBA コマンドを使って登録画面を開く為の
コマンドの引数の指定方法がわかりません。
テーブル名: T運転手割当
1)W業務依頼日 <=主キー
2)W使用車両 <=主キー
3)W運転手番号
DoCmd.OpenFormの書式
■第4引数 WhereCondition/レコード抽出条件(省略可能)
テーブルやクエリと連結しているときのレコード抽出条件を指定します。
1)仮に主キーが1つの時、以下の表記で正常に表示されます。
'フォームを開く
DoCmd.OpenForm "F運転手割当登録", acNormal, , "W業務依頼日 = " & Me![lstWariate]
2)主キーが2つの時、以下の表記ではF運転手割当画面は表示されるのですが、
肝心のデータがセットされずに空白で表示されます。
'フォームを開く
DoCmd.OpenForm "F運転手割当登録", acNormal, , ("W業務依頼日 = " & Me![lstWariate]) & " And " & ("W使用車両 = " & Me![lstWariate])
[lstWariate]とは、データの検索画面で検索結果を表示するリストボックスの名称です。
検索結果から該当データを選択して、個別データの修正画面に移行したいのですが・・・。
Me![lstWariate]の表記が良くないのだと思うのですが、具体的な表記方法が分かりません。
よろしくお願いします。
No.1
- 回答日時:
DoCmd.OpenForm "F運転手割当登録", acNormal, , "W業務依頼日 = " & Me![lstWariate].Value & " And " & "W使用車両 = " & Me![lstWariate].Value
では、どうでしょうか?
その前に、W業務依頼日とW使用車両に、同じ値を代入していますが(Me![lstWariate].Value)、それは正解なのですか?
また、2つは文字列として定義されてますか?
日付型ならば、# で囲まないとダメなんで。(例 : #2006/08/20#)
この回答への補足
回答して頂きありがとうございました。
回答者No3の temtecomai2 さんより質問の仕方についてアドバイスが
ありましたので、少々修正させて頂きます。
リストボックスを使って、データの検索結果を表示して
その中の1つのデータを選択してから DoCmd.OpenForm コマンドを
実行し、F運転手割当画面を表示したいと考えています。
●リストBOXの構成は
1)W業務依頼日(日付型) <=主キー
2)W使用車両 (テキスト型)<=主キー
3)W運転手番号(数値型)
(テーブル名: T運転手割当と全く同じ構成です。)
●リスト名は lstWariate
(Me![lstWariate].Value)には、リストボックスの選択された
データを特定する「何らかの値」が入っていると思うのですが
この値と何を比較すれば、 DoCmd.OpenForm コマンドは
正常に動作するのでしょうか?
リストボックスについての情報提供が不足してるようでしたら
ご指摘ください。
よろしくお願いします。
No.2
- 回答日時:
ウーン!
全く、書かれていることがチンプンカンプンです。
lstWariate は、割り当てた情報を記録したレコードを特定する一意の長整数かと思います。
それと、W業務依頼日、W使用車両とは無関係かと思われます。
仮に、割り当てた情報を記録したレコードを特定する一意の主キーが、W業務依頼日、W使用車両以外に存在しないのであれば、それを用意すべきかと・・・。
No.3
- 回答日時:
手元に Access がないので具体的な回答は何もできませんが、気が付いたところを。
lstWariate の構成について詳しく説明する必要があります。
恐らく複数列のリストボックスになっていて、"W業務依頼日" の列や "W使用車両" の列があるのかと思いますが・・・
助け舟を出して頂いてありがとうございます。
現在の私のレベルでは、No1やNo2の回答者のアドバイスを
正確に理解したり検証したりすることができずに
お礼の返答ができないでいるところでした。
●リストBOXの構成は3列(3項目)からなります。
テーブル名: T運転手割当
1)W業務依頼日 <=主キー
2)W使用車両 <=主キー
3)W運転手番号
と同じ構成です。
No1の tohru999さんのご指摘の
「その前に、W業務依頼日とW使用車両に、同じ値を代入していますが(Me![lstWariate].Value)、
それは正解なのですか?」や
No2の s_huskyさんのご指摘の
「lstWariate は、割り当てた情報を記録したレコードを特定する一意の長整数かと思います。
それと、W業務依頼日、W使用車両とは無関係かと思われます。」
の部分が私の理解の出来ていない部分です。
リストBOXに表示される、登録済みデータの『一つ』を選択して
DoCmd.OpenForm コマンドをキックする訳ですから、
私の当初の質問の「2項目を主キー」とするファイルを開くからといって
抽出条件は主キーの2つを条件比較するというのは、ピントがずれていると
言われてもその通りだと思います。 が、・・・・・・。
何をどのように質問したらよいのかも分からず、お手上げ状態です。
質問の仕方そのものが要領を得ていない、というのは
私の勉強不足、経験不足ですので、不快に思われた方はお許しください。
No.4ベストアンサー
- 回答日時:
遅くなりましたが、以下の記述ではどうでしょうか?
(長すぎて、勝手に改行されていますが、一行にして試してください)
DoCmd.OpenForm "F運転手割当登録", acNormal, , "W業務依頼日 = " & CDate(Me![lstWariate].Column(0)) & " And " & "W使用車両 = " & Me![lstWariate].Column(1)
この回答への補足
tohru999様のアドバイスにより、大幅に改善されました。
日付の比較のところのCDate関数をとって比較しました。
DoCmd.OpenForm "F運転手割当登録", acNormal, , "W業務依頼日 = #" & (Me![lstWariate].Column(0)) & "# And " & "W使用車両 = " & Me![lstWariate].Column(1)
症状としては、リストボックスのデータを1つ選択して、
コマンドボタンを押すと、『パラメータの入力 *****』という
ダイアログボックスが表示されました。
*****の部分は、選択したデータのW使用車両に該当する値が
表示されていました。
この状態で、*****と同じデータを手入力すると
選択したデータの値を表示した、F運転手割当登録 画面に移行しました。
『パラメータ入力』のダイアログボックスさえ出なければ100点満点です。
私の経験上、『パラメータの入力』ダイアログボックスが表示される場合は
項目名の誤りである可能性が高いので、見直しをしているのですが・・・・。
tohru999様のアドバイスにより大きなヤマ場を超えつつあります。
ありがとうございました。
Me![lstWariate].RowSource = "SELECT W業務依頼日 AS 業務依頼日,W使用車両 AS 使用車両,W運転手番号 AS 運転手番号 " & _
"FROM T割当運転手 " & _
strWhere & " " & _
"ORDER BY W業務依頼日,W使用車両"
※リストボックス lstWariate の値集合ソースにSELECT文を突っ込んでいる部分です。
※strWhere には入力された検索値が条件式の形の文字列としてセットされます。
No.5
- 回答日時:
"W使用車両 = " & Me![lstWariate].Column(1)
の部分を
"W使用車両 = '" & Me![lstWariate].Column(1) & "'"
と変えたらどぉなんでしょう?
(シングルクォーテーションで囲む)
※いまいち、パラメータ入力のダイアログが表示されてしまうのが理解できてませんが、打開策になれば...
tohru999様へ
ありがとうございます!
ご指摘の修正を施したところ
とうとう完璧に動作しました。
本当に真摯に対応して頂きありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データの二重表示の原因
-
Accessにインポートしたら並び...
-
ACCESS 『DoCmd.OutputTo』に...
-
XamppのMySQLへとレコードが登...
-
Access 1レコードずつcsvで出力...
-
2つの項目が重複するレコード...
-
カラム数が多いテーブルの速度
-
3つ以上のテーブルをUNIONする...
-
アクセス重複データ
-
排他モードで開く場合は、どう...
-
「マスタ」と「テーブル」の違...
-
SELECT時の行ロックの必要性に...
-
Accessのリンクテーブルについて
-
SQLServer + PHP で直近に追加...
-
ACCESS 一番最新の日付の金額...
-
ビューで引数を使いたい
-
重複するキーから一番古い年月...
-
accessテーブル作成クエリを実...
-
どういう時にテーブルロックを...
-
Access VBA [リモートサーバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
2つの項目が重複するレコード...
-
数百万件レコードのdelete
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
Access VBA Me.Requery レコー...
-
ACCESSのBookmarkプロパティの...
-
Access 1レコードずつcsvで出力...
-
Access 削除クエリが重い
-
ManagementStudioからのデータ削除
-
SQLServerで同一条件レコードの...
-
非連結サブフォームのレコード...
-
Accessでレコードが更新された...
-
Accessでの排他制御
-
(ACCESS)並び替えをしないで...
-
Accessで重複したデータを一件...
-
Accessでの禁止文字チェック
-
Access カレントレコードがあり...
-
ACCESSファイルを開こうとする...
-
ACCESS【更新クエリの中断がで...
おすすめ情報