ACCESSをつかっています。
年月日、氏名、その他のレコードを持つテーブルがあります。
フォーム、レコードで検索条件のコンボボックスがあるとします。
条件で、2002年4月を選ぶと、2002/04/01~2002/04/30
までのデータを出せるようにしたいのです。

他の質問にあるあいまい検索等を参考にしましたが、コンボボックス
と、テーブル、フォームの関係が頭の中でごちゃごちゃになって
つながりません。最終的にはフォームの上部にコンボボックスがあり、
下部(サブフォームでしょうか)に抽出されたデータがでればと
思っています。なにぶん初心者なもので質問自体もわかりにくいと
思いますがよろしくお願いします。

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

A 回答 (2件)

こんにちは。

maruru01です。

コンボボックス(cbo年月)のリストデータは、"2002年4月"のように日付で認識出来る文字列とします。
コンボボックスのClickイベントまたはChangeイベントに次のように書きます。

Dim startYM As Date
Dim endYM As Date
Dim myFilter As String

If Me!cbo年月.Value = "" Then
  '未選択
  Exit Sub
End If
'年月だけだと"○○○○/△△/1"と1日を返す
startYM = CDate(Me!cbo年月.Value)
'1ヶ月後の前日(つまり今月の末日)を返す
endYM = DateAdd("m", 1, startYM) - 1
'フィルタに設定する抽出条件文字列を作る
myFilter = "年月日 BETWEEN #" & startYM & "# AND #" & endYM & "#"
'フォームにフィルタをかける
Me.Filter = myFilter
Me.FilterOn = True

関数などの詳細はヘルプを参照して下さい。
では。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。なるほど、という答えでした。
まだ完全にはできていませんが、とてもよいヒントとなり、
もう少しでできそうです。頑張ってみます。

お礼日時:2002/04/06 00:02

月単位で良いのならACCESSではmonth関数が使えますから、



where month(年月日)=4

と言うような検索式を設定すればOKでしょう。もし年号が必要ならandでyear関数を追加すれば絞れますね。
当然コンボボックス内の条件「2002年4月」から年号と月のデータ抽出はする必要が有りますが。
    • good
    • 0
この回答へのお礼

ありがとうございました。ヒントになりましたので頑張って
やってみます。

お礼日時:2002/04/05 23:59

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

4月のイベント」に関するQ&A: 出演料について

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

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

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

Qエクセル、フォームでのVBAについて(コンボボックス)

エクセル97でフォームのコンボボックスを使用する場合の質問です。
ワークシートにコンボボックスを10個配置しました。
入力範囲はすべて同じです。
このコンボボックスで特定の項目(入力範囲6番目)を選んだ場合、次のマクロを実行するようにしようと思っています。マクロを10個書いてそれぞれのコンボボックスに登録してもいいのですが、それよりはどのコンボボックスが使用されたか特定できればすべてのコンボボックスに一つのマクロで対応できます。
コンボボックスに番号(たとえばコンボ1~コンボ10)を振ってその番号の取得ができればいいのですが、どのように記述したらよいのか検討がつきません。
お教えください。

Aベストアンサー

ゆん(yunn117)です。
まず、ByValですが、引数を値渡しするという宣言(?)です。
もうひとつ、ByRefというのがあって、それは参照渡しというモノになります。
・・・値渡しとか参照渡しってなに?というのを説明するべきなんでしょうが
説明がかなり苦手なので。。。申し訳ないです。(^-^;

で、検討がつかない、なんておっしゃってますが
Combo2では、ちゃんとNextMacro(2)って渡してるじゃないですか♪
カッコ内に入れた値が、NextMacro側に渡ってます。

ExcelのVBAのヘルプが見られる環境なら、ヘルプで調べてみてください。引数、ByVal、ByRefなど。

で、更なる質問部分についてですが
DrawingObjects("Combo1")といった表現をする場合はまとめられないんです。。。
が!
もう一度、考え直してみました。

Sub Combo1()
Call NextMacro(1)
End Sub

Sub NextMacro(ByVal SelCombo As Integer)
Dim ans As String
If Sheets("LOG").Range("C1") = False Then
Sheets("回答書").DrawingObjects("Combo" & SelCombo).ListIndex _
= Sheets("LOG").Range("H" & (30 + SelCombo)).Value
Exit Sub
End If
If Sheets("回答書").DrawingObjects("Combo" & SelCombo).ListIndex = 6 Then
ans = InputBox("地域を入れてください。", "地域設定")
Worksheets("LOG").Range("J" & SelCombo) = ans
End Sub

で、いいのでは。
ちゃんと全部キレイにまとまるやん♪
と、言いたいところなんですが、テストしてません。
動かなかったらごめんなさい。(^-^;;;

ゆん(yunn117)です。
まず、ByValですが、引数を値渡しするという宣言(?)です。
もうひとつ、ByRefというのがあって、それは参照渡しというモノになります。
・・・値渡しとか参照渡しってなに?というのを説明するべきなんでしょうが
説明がかなり苦手なので。。。申し訳ないです。(^-^;

で、検討がつかない、なんておっしゃってますが
Combo2では、ちゃんとNextMacro(2)って渡してるじゃないですか♪
カッコ内に入れた値が、NextMacro側に渡ってます。

ExcelのVBAのヘルプが見られる環境なら、...続きを読む

QAccess2002 フォームからのレコード入力の成功/不成功

いつもお世話になっております。

早速ですが、従業員マスタテーブルがあり、それを元に従業員の情報を入力するフォームを作成しました。
従業員マスタテーブルは、「社員番号」だけをキーにしています。

例えば、新入社員のデータを、完全に新規に入力する場合、うまく行きます。
また、すでにいる社員の、「社員番号以外」のフィールドを更新することもできます。

しかし、社員番号が既存のものとかぶるような新規登録、あるいは情報変更に関しては、入力用フォーム上では正常終了したように見えますが、実際の従業員マスタテーブルをチェックしてみると、変更はされていません。

ですので、フォームしか触れないユーザは、自分の変更、新規追加がうまく行ったのかどうか、テーブルが見られないのでわからない、という状況になっています。

仕様要求としては、新規であれ、情報変更であれ、既存の社員番号に重なる場合はメッセージボックスで「更新失敗」を表示したいのです。

If Exist・・・のような分岐を情報を入力するフォームの「閉じる」ボタンの裏に設けたいのですが、やり方がイマイチわかっておりません。

ご存知の方がいらっしゃれば、ご教授、よろしくお願いします。

---------------------------------------------------------------

<従業員マスタ>
・社員番号・・・テキスト
・氏名・・・テキスト

<仕様要求>
社員番号「0001」と「0002」の社員が存在する場合・・・
・情報入力画面で、「0001」の社員の社員番号を「0002」に変更しようとすると、エラーメッセージ表示
・新規情報入力(新入社員など)の際、社員番号が「0001」や「0002」の社員として登録しようとすると、エラーメッセージ表示


以上、お時間のあるときによろしくお願いします。

いつもお世話になっております。

早速ですが、従業員マスタテーブルがあり、それを元に従業員の情報を入力するフォームを作成しました。
従業員マスタテーブルは、「社員番号」だけをキーにしています。

例えば、新入社員のデータを、完全に新規に入力する場合、うまく行きます。
また、すでにいる社員の、「社員番号以外」のフィールドを更新することもできます。

しかし、社員番号が既存のものとかぶるような新規登録、あるいは情報変更に関しては、入力用フォーム上では正常終了したように見えます...続きを読む

Aベストアンサー

フォーム上の社員番号のテキストボックス名を「txt社員番号」と仮定します。

そのテキストボックスの入力規則に以下を設定します。

DLookUp("社員番号","従業員マスタ","社員番号='" & [txt社員番号] & "'") Is Null

エラーメッセージに、「重複しています」等設定しておきます。

※ 
DCount でも良いと思いますが、DLookUp は見つかった時点で戻ってくると思ってます。
DCount は、あってもなくても全レコードをみると思うので、どちらかと言えば DLookUp でしょうか。
(重複するものがなければ全レコードを見るのは変わらないと思いますけど)

Qコンボボックスの設定  【エクセル】

エクセルのコンボボックスについてです。
コンボボックスのリストとして


黄色
というリストをコンボボックスの‘入力範囲’に指定します。

コンボボックスの
‘コントロールの書式設定’→‘リンクするセル’
でセルを指定すると、赤を選んだとき リンクさせたセルには
「1」とでますが、なぜ1と出るのか、というのと
私は「赤」と表示させたいのですが、そのやり方を教えて頂きたいです。

コンボボックスを初めて使うので初心者的な質問だと思いますが宜しくお願いします。

Aベストアンサー

この質問もあいまいな点あるのだが。
(1)データー入力規則ーリストー元の値のドロップダウンリスト
ガあるのだが知っていて使わないのか?
これだと質問のようなことはない。選択したドロップダウンの出るセルに文字が出る。
(2)シートやユーザーフォームにコンボボックスを貼り付けているのか
A。質問者はどうもフォームのコンボボックスを使っているらしい
(「入力範囲」という言葉から)
下記Bをお勧めします。
しかし現状のままだと別のセルに一旦数字を出して(J2とでも仮定して)赤白黄うお出したいセルに
=INDEX(H1:H3,J2)
と入れると良い。
H1:H3に赤、青、黄といれて置く(入力範囲)。
ーー
B.コントロールツールボックスのコンボぼっくすを使うと
FillListRangeに例えばH1:H3  H1:H3に赤、青、黄といれ
LinkedCellを例えばD2にすれば、選択後出るには赤とでる。
ーー
>「初心者的な」といいながら、一番難しい方法でやっているようだ。

QAccess2002 閲覧フォームから入力フォームへのレコードの受け渡し

度々すみません。

Access初心者です。よろしくお願いします。

例えば「基本情報フォーム」から、「付帯データ入力フォーム」を起動する作りになっていたとします。

この場合、基本情報フォームは閲覧専用で、付帯データ入力フォームは入力用フォームになると思います。

しかし、コマンドボタンの追加ウィザードで両方のフォームで取り扱う「ID」で絞り込んで入力フォームを開こうとすると、うまく行きません。
単純に、入力フォーム単体で立ち上げると、入力できます。

やりたいことは単純で、閲覧フォーム上のIDを、入力用フォームのIDフィールドに表示させたいだけなのですが。。。

解決策をご存知の方がいらっしゃいましたら、ご教授お願いいたします。

Aベストアンサー

#2です

> 入力用フォームのほうにはある「区分」が用意されており、区分コードをコンボボックスで選択する作りになっています。
> その場合でも、1つのフォームでできるのでしょうか?
> 「表示フォーム」は区分コードに紐づいている「区分名」が表示されるようにしてあります。

コンボボックスの内容(連結列)が同じであれば、同様に既定値を設定できます。

コンボボックス名が「cbx01」だったとします。

表示の元となる区分テーブル「T区分」が以下だったとします。

区分コード 区分名
1      区分A
2      区分B
3      区分C
4      区分D
5      区分E

コンボボックスの値集合ソースが
SELECT 区分コード, 区分名 FROM T区分;

連結列:1
列数:2

表示フォームでの列幅: 0cm;2cm (1列目を表示しない:区分名だけ表示)
入力フォームでの列幅: 2cm;0cm (2列目を表示しない:区分コードだけ表示)

この設定で、コンボボックスに表示されるものは変わりますが、連結されているものは「区分コード」になっているので、

Me.cbx01.DefaultValue = Screen.ActiveForm.cbx01

で既定値を設定することができます。
(起動元に同様のコンボボックスがあったとして)

表示用/入力用ともコントロールソースには「区分コード」に対応するフィールドを指定していると思いますので、問題なさそうな気がします。


なお、起動元に「区分名」しかない時とかは、その時のテキストボックス名を「txt1」とすると、

Me.cbx01.DefaultValue = _
  DLookup("区分コード", "T区分", "区分名 = '" & Screen.ActiveForm.txt1 & "'")

とすれば既定値として設定できます。

列幅(表示)の切り替えは、ColumnWidths で変更します。
列幅が上記例であるとすれば、
レコードがあったら、Me.cbx01.ColumnWidths = "0cm;2cm"
入力用なら、Me.cbx01.ColumnWidths = "2cm;0cm"
と設定すれば、表示は切り替わります。

#2です

> 入力用フォームのほうにはある「区分」が用意されており、区分コードをコンボボックスで選択する作りになっています。
> その場合でも、1つのフォームでできるのでしょうか?
> 「表示フォーム」は区分コードに紐づいている「区分名」が表示されるようにしてあります。

コンボボックスの内容(連結列)が同じであれば、同様に既定値を設定できます。

コンボボックス名が「cbx01」だったとします。

表示の元となる区分テーブル「T区分」が以下だったとします。

区分コード 区分名
1...続きを読む

Qエクセル、コンボボックス/フォームのとコントロールツールボックスの

エクセル2000です。
今まではワークシートにフォームのコンボボックスを貼って使ってきました。
でも色を変えたり出来ないので、今度はコントロールツールボックスからコンボボックスを貼ってみました。

質問ですが、コンボボックスに表示させるリストを設定するのに、これまでのフォームのコンボボックスだと書式設定で入力範囲をカーソルをあてて一度に簡単に指定できたのですが、コントロールツールボックスのコンボボックスだとそれが出来ません。VBEditorのプロパティのところのListFillRangeの右側にいちいち手でSheet1!A1:A5のように打ち込まなければならないようです。これではけっこう手間がかかってしまいます。
わたしのやりかたが間違っているのでしょうか?

Aベストアンサー

#2です。
>この意味が良くわかりませんでした。
エクセル(VBA)ではリストに出す範囲を指定するだけですが、
VBのコンボボックスの項目(アイテム)の登録はListFillRangeがないので、AddItemを項目数だけ、記述
する必要があると言うことを言いたかったのです。
エクセル(VBA)では手数が省けていると思います。

Qaccess2010コンボボックスとリストボックスについて質問です。 テーブルに日付、タイトル、内

access2010コンボボックスとリストボックスについて質問です。

テーブルに日付、タイトル、内容のフィールドがあります。これをコンボボックスを使って2014年、2015年、2016年・・・・
と作成して、2015年を選択すると2015年度分がリストボックスに表示できるようにできますか?

ご存知の方がいればよろしくお願いします。
accessは、初心者です。

Aベストアンサー

ウィザードを使ってコンボボックスを作成してみてください。
https://support.office.com/ja-jp/article/%E3%83%AA%E3%82%B9%E3%83%88-%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%9C-%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E9%81%B8%E6%8A%9E%E8%82%A2%E3%81%AE%E4%B8%80%E8%A6%A7%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-70abf4a9-0439-4885-9099-b9fa83517603

以下抜粋
ウィザードを使用してリスト ボックスまたはコンボ ボックスを作成する
5.コントロールに表示する値を取得する方法の確認を求められたら、次のいずれかの操作を行います。
・ほぼ変わることのない固定値リストを表示する場合は、[表示する値をここで指定する] をクリックします。

ここで
2014
2015
2016
となるように入力するだけです。

ウィザードを使ってコンボボックスを作成してみてください。
https://support.office.com/ja-jp/article/%E3%83%AA%E3%82%B9%E3%83%88-%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%9C-%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E9%81%B8%E6%8A%9E%E8%82%A2%E3%81%AE%E4%B8%80%E8%A6%A7%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-70abf4a9-0439-4885-9099-b9fa83517603

以下抜粋
ウィザードを使用してリスト ボッ...続きを読む

Qエクセルに貼りついたコンボボックスについて

パソコン初心者です。よろしくお願いします。

インターネットの画面をコピーしてエクセルに貼り付けました。
余分な部分まで貼り付けてしまい削除したのですが、コンボボックスがどうしても削除できません。(リンクははずしました。)
ドラッグすることもできず、行を削除してもコンボボックスは残っております。どうしたらコンボボックスを削除できるでしょうか?
ご回答よろしくお願いいたします。

Aベストアンサー

こんにちは。

お使いのExcelのバージョンによって操作が違うかもしれませんので参考までに。
※以下はExcel2000での操作例です。

まず、ツールバーに「デザインモード」というアイコン(鉛筆?と三角定規とものさし
が書かれているもの)が表示されていないでしょうか?
もし表示されていなければ以下の操作をしてみて下さい。

1)メニュー操作
  「表示」→「ツールバー」をクリック
2)表示されたメニューより「Visual Basic」にチェックマークが付いていなければ、
  クリックして下さい。
3)これでツールバーが追加されて「デザインモード」というアイコンが表示され
  ていれば、下記の作業を行ってみて下さい。

次に、コンボボックスの削除を行います。
※添付画像もご覧下さい。

4)ツールバーの「デザインモード」のアイコンをクリックして、くぼんだ状態に
  して下さい。(※デザインモードをONの状態にします。)
5)シート上の消したい「コンボボックス」にマウスを当ててクリックして下さい。
  ※これで「コンボボックス」が選択状態になり、周囲にサイズ変更用の
   マークが表示されると思います。
6)上記5)でコンボボックスが選択状態になったら、[Del]キー(デリートキー)
  を押して下さい。
  ※これで「コンボボックス」が削除されれば完了です。
7)続けて、他のコンボボックスなどのコントロールを削除したい場合は、
 上記5)、6)の作業を繰り返して下さい。

8)なお、シート上のコントロールを全て削除したい場合は、下記の操作を
 行って下さい。
 ◎あらかじめ「デザインモード」をONの状態にします。
   ↓
 ◎メニュー: 「編集」→「ジャンプ」
   ↓
 ◎表示された「ジャンプ」ダイアログの「セル選択」ボタンをクリックします。
   ↓
 ◎表示」された「選択オプション」ダイアログの中の「オブジェクト」という
  項目(オプションボタン)を選択します。
   ↓
 ◎「OK」ボタンをクリックします。
   ↓
 ◎これでシート上の全てのコントロールが選択された状態になります。
   ↓
 ◎ここで[Del]キー(デリートキー)を押せば、全てのコントロールが削除
  されます。

9)作業が終了したら、「デザインモード」アイコンを再度クリックして、
  デザインモードをOFFにします。

以上で作業完了です。

もしも上手くいかなかった場合はすみません。
参考になれば幸いです。

こんにちは。

お使いのExcelのバージョンによって操作が違うかもしれませんので参考までに。
※以下はExcel2000での操作例です。

まず、ツールバーに「デザインモード」というアイコン(鉛筆?と三角定規とものさし
が書かれているもの)が表示されていないでしょうか?
もし表示されていなければ以下の操作をしてみて下さい。

1)メニュー操作
  「表示」→「ツールバー」をクリック
2)表示されたメニューより「Visual Basic」にチェックマークが付いていなければ、
  クリックして下さい。
...続きを読む

QACCESSのコンボボックスのレコードを変更する方法

いつもありがとうございます。

以下のような事を行いたいと思っていますがそのようにすればいいでしょうか?
------------------------------
[得意先コード ▽] [得意先名]

[<-] [->]
------------------------------

上記のようなフォームがあります。
コンボボックスで得意先を選択すると、
得意先コード、得意先名が表示されます。

コンボボックスの値集合ソースはSELECT文で定義してありまして、
ここまでは問題なくできています。

問題はここから。

現在
得意先コード 10 得意先名 静岡産業
だったとして、

[<-] をクリックすると
得意先コード 9 得意先名 神奈川商店
[->] をクリックすると
得意先コード 11 得意先名 愛知製作所

というようにボタンをクリックする事で
コンボボックスの値を変更するには
どんなコードを書けばいいでしょうか?

Aベストアンサー

多分、質問者が期待していることは実現できません。
が、似たようなことは、実現できます。

Private Sub cmdNext_Click()
  Me.cmbTest = Me.cmbTest.ItemData _
        (Me.cmbTest.ListIndex - ((Me.cmbTest.ListIndex + 1) < Me.cmbTest.ListCount))
End Sub

Private Sub cmdPrevious_Click()
  Me.cmbTest = Me.cmbTest.ItemData _
        (Me.cmbTest.ListIndex + (Me.cmbTest.ListIndex > 0))
End Sub

ただし、コンボボックスの値はこれで変更できます。
が、

得意先コード 11 得意先名 愛知製作所

と表示するには、それが一括りの文字列として合成されておく必要があります。

QエクセルVBA コンボボックスで強制終了

こんにちは。
エクセルVBAでいくつかのフォームを作成しているのですが、
常にではないのですが、「問題が発生したため・・・」のメッセージで
強制終了させられてしまいます。
恐らく、コンボボックスが原因かと思われるのですが。。。
申し訳ありません。教えていただけると嬉しいです。

VBA
1.Initialize
 (1)コンボボックス1リスト設定:データ2
 (2)コンボボックス2~21(20個のコンボボックス)リスト設定
               :データ数80
2.コンボボックス1_Change
 (1)コンボボックス22リスト設定:データ数80

現象
 (1)コンボボックス22を▼でなく入力し、保存すると強制終了
 (2)上記現象発生後、コンボボックス1の▼押下で強制終了
 (3)複数のPCで試したが、性能の良いPCでもたまに起こる。
  性能が悪いPCの場合、確実に起きる。
 (4)他のフォームはいくらやってもこの現象は発生しない。
  但し、コンボボックス2~21のような大量なコンボボックスはない

考えること
 (1)コンボボックスのリストの限界等はあるのでしょうか。
 (2)メモリ等の関係で発生するのでしょうか。
 (3)コンボボックスに入力不可とするか、テキストでNoを入力
  させる方法をとった方がよいでしょうか。

長々とすみません。
よろしくお願いいたします。

   

こんにちは。
エクセルVBAでいくつかのフォームを作成しているのですが、
常にではないのですが、「問題が発生したため・・・」のメッセージで
強制終了させられてしまいます。
恐らく、コンボボックスが原因かと思われるのですが。。。
申し訳ありません。教えていただけると嬉しいです。

VBA
1.Initialize
 (1)コンボボックス1リスト設定:データ2
 (2)コンボボックス2~21(20個のコンボボックス)リスト設定
               :データ数80
2.コンボボックス1_Change
 (1)コンボ...続きを読む

Aベストアンサー

こんにちは。

>VBAを組んだのは2007で今、それを動かしているのは2002です。
>こんなことをしているのが悪いのでしょうか・・・。

一般論なのですが、VBAの場合は、下位互換は期待しないほうがよい、ということです。下のバージョンでは、テキストコード(.bas)で、エクスポート・インポートをしたほうが良いかもしれません。特に、2007と2003では、ファイルフォーマットが違いますからね。

>自分で設定しない限りは、Add-inの機能はエクセルに入ってないという認識でよいでしょうか?

今、私は、「自分で設定しない限り」だったか、ちょっとはっきり答えられません。これは、当面、そのままにしておきます。

Qコンボボックスにレコードセットでリストをセットする

【Access2013/VBA】

■テーブル構成
【分析テーブル】
・分析ID(主キー)
・依頼ID(外部キー)
・会社ID

【会社管理テーブル】
・会社ID(主キー)
・会社名

■コード

  Dim Rst As DAO.Recordset
  Dim Db As DAO.Database
  Dim SQL As String
  Dim lngID As Long
  Dim FlgWinLoad As Boolean
  
  Me.FlgWinLoad = modPub.FlgWindowLoading
  
  lngID = modPub.Selected依頼ID
  
  'コンボボックスの設定
  SQL = "SELECT DISTINCT [分析テーブル].[会社ID] as [会社ID1], "
  SQL = SQL & " [分析テーブル].[依頼ID], "
  SQL = SQL & " [会社管理テーブル].[会社ID] AS [会社ID2], "
  SQL = SQL & " [分析テーブル].[会社ID] AS [会社ID3], "
  SQL = SQL & " [会社管理テーブル].[会社名] "
  SQL = SQL & "FROM [分析テーブル] LEFT JOIN [会社管理テーブル] ON "
  SQL = SQL & " [分析テーブル].[会社ID] = [会社管理テーブル].[会社ID] "
  SQL = SQL & "where [依頼ID]=" & lngID & " "
  SQL = SQL & "ORDER BY [分析テーブル].[依頼ID] "

  Set Db = CurrentDb
  Set Rst = Db.OpenRecordset(SQL, dbOpenDynaset)
  If Rst.EOF = True And Rst.EOF = True Then
    GoTo errH
    
  End If
  
  Me.cmbo会社ID.ColumnCount = 5
  Me.cmbo会社ID.ColumnWidth = "1cm;1cm;1cm;3cm;3cm"
  Me.cmbo会社ID.RowSource = "会社ID1;依頼ID;会社ID2;会社ID3;会社名"
  Me.cmbo施工会社ID.RowSourceType = "テーブル/クエリ"
  
  Set Me.cmbo施工会社ID.Recordset = Rst.Clone
  
■コード の終わり

エラーになりませんが、画面でコンボボックスのリストが空になります。

解決方法を教えて頂きたいと思います。
よろしくお願いします。

【Access2013/VBA】

■テーブル構成
【分析テーブル】
・分析ID(主キー)
・依頼ID(外部キー)
・会社ID

【会社管理テーブル】
・会社ID(主キー)
・会社名

■コード

  Dim Rst As DAO.Recordset
  Dim Db As DAO.Database
  Dim SQL As String
  Dim lngID As Long
  Dim FlgWinLoad As Boolean
  
  Me.FlgWinLoad = modPub.FlgWindowLoading
  
  lngID = modPub.Selected依頼ID
  
  'コンボボックスの設定
  SQL = "SELECT DISTINCT [分析テーブル].[会社ID] as [会社ID1], "
...続きを読む

Aベストアンサー

Me.cmbo会社ID.RowSource = "会社ID1;依頼ID;会社ID2;会社ID3;会社名"
Me.cmbo施工会社ID.RowSourceType = "テーブル/クエリ"

"会社ID1;依頼ID;会社ID2;会社ID3;会社名"

少なくとも、これはテーブルでもクエリでもない。
次のサイトが参考になるかもです。

http://www.moug.net/tech/acvba/0060002.html


人気Q&Aランキング