Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1750 / 2272 ツリー ←次へ | 前へ→

【5436】帳票フォーム上のコンボボックスでのフィ... なおなお 05/6/20(月) 17:28 質問[未読]
【5439】Re:帳票フォーム上のコンボボックスでのフィ... クロ 05/6/21(火) 8:38 発言[未読]
【5442】Re:帳票フォーム上のコンボボックスでのフィ... なおなお 05/6/21(火) 11:35 発言[未読]
【5443】Re:帳票フォーム上のコンボボックスでのフィ... クロ 05/6/21(火) 11:47 回答[未読]
【5444】Re:帳票フォーム上のコンボボックスでのフィ... なおなお 05/6/21(火) 12:02 質問[未読]
【5445】Re:帳票フォーム上のコンボボックスでのフィ... クロ 05/6/21(火) 12:32 発言[未読]
【5446】Re:帳票フォーム上のコンボボックスでのフ... なおなお 05/6/21(火) 13:11 質問[未読]
【5447】Re:帳票フォーム上のコンボボックスでのフ... クロ 05/6/21(火) 13:41 発言[未読]
【5448】Re:帳票フォーム上のコンボボックスでのフ... なおなお 05/6/21(火) 14:09 質問[未読]
【5449】Re:帳票フォーム上のコンボボックスでのフ... クロ 05/6/21(火) 14:33 回答[未読]
【5450】Re:帳票フォーム上のコンボボックスでのフ... なおなお 05/6/21(火) 14:56 質問[未読]
【5451】Re:帳票フォーム上のコンボボックスでのフ... クロ 05/6/21(火) 15:14 回答[未読]
【5453】Re:帳票フォーム上のコンボボックスでのフ... なおなお 05/6/21(火) 16:20 質問[未読]
【5454】Re:チョット修正しました。 クロ 05/6/21(火) 16:48 回答[未読]
【5455】Re:帳票フォーム上のコンボボックスでのフ... なおなお 05/6/21(火) 16:52 質問[未読]
【5456】Re:帳票フォーム上のコンボボックスでのフ... クロ 05/6/21(火) 17:02 回答[未読]
【5458】Re:帳票フォーム上のコンボボックスでのフ... なおなお 05/6/21(火) 17:11 質問[未読]
【5457】Re:チョット修正しました。 なおなお 05/6/21(火) 17:07 質問[未読]
【5461】Re:チョット修正しました。 クロ 05/6/21(火) 17:41 発言[未読]
【5460】Re:左に寄ります。 クロ 05/6/21(火) 17:34 回答[未読]
【5462】Re:左に寄ります。 なおなお 05/6/21(火) 18:20 お礼[未読]
【5465】Re:左に寄ります。 クロ 05/6/21(火) 22:57 発言[未読]
【5468】Re:左に寄ります。 なおなお 05/6/22(水) 8:17 お礼[未読]

【5436】帳票フォーム上のコンボボックスでのフィ...
質問  なおなお  - 05/6/20(月) 17:28 -

引用なし
パスワード
   いつも、お世話になります。
環境はWindowsXP ProSP2、Access2000です。

帳票フォームでコンボボックスの項目(社員名)を
選択フィルタボタンを使ってリストを抽出し、
抽出された店舗数のカウントを取得したい考えております。

一応、コンボボックス以外(テキストボックス)の項目を選択フィルタで抽出した場合は
店舗数のカウントを取得することができましたが、
コンボボックスで選択フィルタを使って抽出した場合、
下記のエラーが出力されて店舗数のカウントを取得することが出来ません。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
実行時エラー'-2147217900 (80040e14)'
SQL ステートメントが正しくありません。'DELETE','INSERT','PROCEDURE',
'SELECT',または'UPDATE'を使用してください。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

そこで、作成されたSQLを表示するようにしてみたところ、
コンボボックスに選択フィルタを使うとwhereのところで
LOOKUP_SU2.社員名称="山田"
と言うようになっていました。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
SELECT Count(*) AS 完了予定数
FROM [select 完了予定.店舗 FROM 完了予定
where ((Lookup_SU2.社員名称="山田"))
GROUP BY 完了予定.店舗]. AS 完了予定;
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

コンボボックスの内容は、社員名称が表示されているんですが、
社員テーブルと言うものが別にありまして、
社員CD、社員名称、所属という項目になっています。
その社員テーブルとコンボボックスがリンク?されて社員名称が表示されるようになっています。

帳票フォームのコンボボックスをコントロールの種類の変更でテキストボックスにすると
選択フィルタは使えるようになって店舗数カウントも取得できるんですが、
社員CDが表示されるようになってしまい、誰だかわからなくなってしまいます・・・。

良いアイデアがありましたら、是非教えてください。
よろしくお願いします。

【5439】Re:帳票フォーム上のコンボボックスでのフ...
発言  クロ  - 05/6/21(火) 8:38 -

引用なし
パスワード
   >帳票フォームのコンボボックスをコントロールの種類の変更でテキストボックスに
>すると選択フィルタは使えるようになって店舗数カウントも取得できるんですが、

コンボボックスの値集合ソースを
SELECT 社員名称 FROM 社員テーブル;
として
列数:1
連結列:1
としてみてはどうでしょ?

【5442】Re:帳票フォーム上のコンボボックスでのフ...
発言  なおなお  - 05/6/21(火) 11:35 -

引用なし
パスワード
   クロ様

お返事ありがとうございます。

>コンボボックスの値集合ソースを
>SELECT 社員名称 FROM 社員テーブル;
>として
>列数:1
>連結列:1
>としてみてはどうでしょ?

教えていただいたように設定してみましたが、
社員CDの表示に変わりはありませんでした。

【5443】Re:帳票フォーム上のコンボボックスでのフ...
回答  クロ  - 05/6/21(火) 11:47 -

引用なし
パスワード
   そうですか?そのコンボのコントロールソースは何になってますか?
それと「Lookup_SU2」ってなんでしょ?

【5444】Re:帳票フォーム上のコンボボックスでのフ...
質問  なおなお  - 05/6/21(火) 12:02 -

引用なし
パスワード
   クロ様

>そうですか?そのコンボのコントロールソースは何になってますか?

そのコントロールソースは「SU2」です。

>それと「Lookup_SU2」ってなんでしょ?

「LOOKUP_SU2」と言うのは、帳票フォームのSU2と言うコンボボックスを
選択フィルタを使って抽出したときに、Me.Filterに代入されるSQL文です。

【5445】Re:帳票フォーム上のコンボボックスでのフ...
発言  クロ  - 05/6/21(火) 12:32 -

引用なし
パスワード
   う〜ん構成が見えない...
選択フィルタとはツールバー(あるいは右クリックで出るもの)の何れでしょうか?
VBAを利用しているのでしょうか?

フォームの既定のビュー
レコードソースとなるテーブル・クエリの構成
条件を入れるテキストボックスなどはフォームのどの位置にありますか?

Me.FilterにはSQL分の内、WHERE句以降しか入らないと思いますが?

【5446】Re:帳票フォーム上のコンボボックスでのフ...
質問  なおなお  - 05/6/21(火) 13:11 -

引用なし
パスワード
   クロ様

>う〜ん構成が見えない...

わかりづらい説明で申し訳ありません。

>選択フィルタとはツールバー(あるいは右クリックで出るもの)の何れでしょうか?
>VBAを利用しているのでしょうか?

選択フィルタは、ツールバーにある上戸に雷の様なマークのボタンの事です。
そのツールバーの選択フィルタを使って、VBAでSQL文のwhere句を作って
選択されたリストの店舗数をフォームヘッダのテキストボックスに
表示したいと考えております。

フォームのレコード移動時のイベントに記述してある
VBAは下記のようになっています。
−−−−−−−−−−−−−−−−−−−−−−−−−−
  Dim obj As New ADODB.Recordset

  Dim db    As DAO.Database
  Dim QDef   As DAO.QueryDef
  Dim SQL    As String
  Dim SQLfilter As String

  Set db = CurrentDb
  
  SQL = ""
  SQLfilter = ""
  
  SQLfilter = Me.Filter
  
  SQL = "SELECT Count(*) AS 完了予定数"
  SQL = SQL & " FROM [select 完了予定.店舗"
  SQL = SQL & " FROM 完了予定"
  If SQLfilter <> "" Then
    SQL = SQL & " where " & SQLfilter
  End If
  SQL = SQL & " GROUP BY 完了予定.店舗]. AS 完了予定;"
  
  Set QDef = db.QueryDefs("完了予定クエリ")
  QDef.SQL = SQL
  Set QDef = Nothing
  Set db = Nothing
 
  obj.OPEN "完了予定クエリ", CurrentProject.Connection, adOpenStatic
  Me!text_店舗数 = obj!完了予定店舗数
  obj.Close
−−−−−−−−−−−−−−−−−−−−−−−−−−

>フォームの既定のビュー
>レコードソースとなるテーブル・クエリの構成

レコードソースとなるテーブルの構成は
ID|店舗|su1|su2|su3|・・・・
と言う具合になっておりまして、店舗には店舗名がテキストで
su1〜su3はコンボボックスで社員テーブルとリンクされております。
このsu1〜su3のコンボボックスで社員を選択フィルタで抽出し、その時の店舗を
グループ化した件数を取得したいと考えております。

>条件を入れるテキストボックスなどはフォームのどの位置にありますか?

条件を入れるテキストボックスは存在しておりません。
選択フィルタで選択されるのみの条件です。
あ、仮にSQL文を表示させるテキストボックスはフォームヘッダにあります。

【5447】Re:帳票フォーム上のコンボボックスでのフ...
発言  クロ  - 05/6/21(火) 13:41 -

引用なし
パスワード
   >レコードソースとなるテーブルの構成は
>ID|店舗|su1|su2|su3|・・・・
>と言う具合になっておりまして、店舗には店舗名がテキストで
>su1〜su3はコンボボックスで社員テーブルとリンクされております。

このsu1〜su3のデータ型とテーブルを開いたときに入っているもの
はどんなものになってますか?
ルックアップを指定しているようでしたらその詳細を教えてください。

【5448】Re:帳票フォーム上のコンボボックスでのフ...
質問  なおなお  - 05/6/21(火) 14:09 -

引用なし
パスワード
   クロ様

>このsu1〜su3のデータ型とテーブルを開いたときに入っているもの
>はどんなものになってますか?
>ルックアップを指定しているようでしたらその詳細を教えてください。

su1〜su3のデータ型はテキスト型でルックアップを指定しております。
もともとsu1〜su3には社員CD(4桁の数字)が入っており、
そこにルックアップで社員テーブルを設定しております。

ルックアップの指定は
値集合ソース「社員テーブル」
連結列「1」
列数「3」
列幅「0cm;2cm;2cm」
リスト行列「40」
リスト幅「自動」
になっております。

社員テーブルの構成は
社員CD|社員名称|所属
となっており、すべてテキスト型になっております。

【5449】Re:帳票フォーム上のコンボボックスでのフ...
回答  クロ  - 05/6/21(火) 14:33 -

引用なし
パスワード
   >ルックアップの指定は
>値集合ソース「社員テーブル」
>連結列「1」
>列数「3」
>列幅「0cm;2cm;2cm」
>リスト行列「40」
>リスト幅「自動」
>になっております。
>
>社員テーブルの構成は
>社員CD|社員名称|所属
>となっており、すべてテキスト型になっております。

ということはsu1〜su3に実際に格納されている値は
連結列が「1」となっているため、社員CDが入っています。
※見た目は社員名称が表示されています。

エラー直後のフォームをデザインビューで開いてプロパティの
フィルタを確認してください。
どの様になってますか?
社員CDのあるフィールドに対して社員名称をフィルタしろという風に
なっていませんか?
その所為だと思います。

レコード移動時のコードは捨てて
単にフォームヘッダのtext_店舗数のコントロールソースに
=Count(*)
ではダメなのでしょうか?

【5450】Re:帳票フォーム上のコンボボックスでのフ...
質問  なおなお  - 05/6/21(火) 14:56 -

引用なし
パスワード
   クロ様

>エラー直後のフォームをデザインビューで開いてプロパティの
>フィルタを確認してください。
>どの様になってますか?

((Lookup_SU2.社員名称="山田"))
クロ様の言われるとおり、社員CDに対し社員名称でフィルタをかけようとしています。

>レコード移動時のコードは捨てて
>単にフォームヘッダのtext_店舗数のコントロールソースに
>=Count(*)
>ではダメなのでしょうか?

これですと、選択フィルタによって抽出されたレコード数になってしまいます。
抽出された店舗には同名の物があり、複数の場合でも1つとして数えたいのです。
なので、選択フィルタによって抽出されたリストの中に、店舗が何店舗あるかを
取得したいのです。

【5451】Re:帳票フォーム上のコンボボックスでのフ...
回答  クロ  - 05/6/21(火) 15:14 -

引用なし
パスワード
   ▼なおなお さん:
>これですと、選択フィルタによって抽出されたレコード数になってしまいます。
>抽出された店舗には同名の物があり、複数の場合でも1つとして数えたいのです。
>なので、選択フィルタによって抽出されたリストの中に、店舗が何店舗あるかを
>取得したいのです。

では、テーブルのsu1〜su3には表示されている値(社員名称)を実際に格納するしか
ないかと...
※Filterはフォームの見た目(社員名称)を充てようとするので

テーブルのルックアップを指定で「連結列」を「2」に、同様にフォーム各コントロ
ールの連結列も「2」にしてください。
但し、テーブルのルックアップを指定を変更した段階で既に入っている値は社員CDと
なってますので「社員名称」に変える必要があります。

それとコード最後の方での
Me!text_店舗数 = obj!完了予定店舗数
の「完了予定店舗数」は「完了予定数」だと思います。

また、LOOKUPという名のフォーム名は止めた方がいいです。
同名の関数がありますので…
※参照URL
 http://ww3.tiki.ne.jp/~kaya/Ac_tips.html#Tips0_001

【5453】Re:帳票フォーム上のコンボボックスでのフ...
質問  なおなお  - 05/6/21(火) 16:20 -

引用なし
パスワード
   ▼クロ様:

>但し、テーブルのルックアップを指定を変更した段階で既に入っている値は社員CDと
>なってますので「社員名称」に変える必要があります。

申し訳ありません。
連結列はそれぞれ「2」に設定しました。
「社員名称」にするにはどうすれば良いのでしょうか。

>Me!text_店舗数 = obj!完了予定店舗数
>の「完了予定店舗数」は「完了予定数」だと思います。

ご指摘ありがとうございます。
修正いたしました。

>また、LOOKUPという名のフォーム名は止めた方がいいです。

このLOOKUP_SU2の「LOOKUP_」なんですが、
ツールバーの選択フィルタを「SU2」に使用するとwhere句に
自動的に「LOOKUP_SU2」という名前になってしまいます。

【5454】Re:チョット修正しました。
回答  クロ  - 05/6/21(火) 16:48 -

引用なし
パスワード
   ▼なおなお さん:
>申し訳ありません。
>連結列はそれぞれ「2」に設定しました。
>「社員名称」にするにはどうすれば良いのでしょうか。

テーブルのルックアップを変更後に
フォームを開いてみてどうなってますか?su1〜su3に社員CDが入ってますか?
また、フォームの方の各コントロール連結列はどうなってますか?

>このLOOKUP_SU2の「LOOKUP_」なんですが、
>ツールバーの選択フィルタを「SU2」に使用するとwhere句に
>自動的に「LOOKUP_SU2」という名前になってしまいます。

そうですか?
通常はフォームのレコードソース名が付くと思いますが...

【5455】Re:帳票フォーム上のコンボボックスでのフ...
質問  なおなお  - 05/6/21(火) 16:52 -

引用なし
パスワード
   ▼クロ様:

>テーブルのルックアップを変更後に
>フォームを開いてみてどうなってますか?su1〜su3に社員CDが入ってますか?
>また、フォームの方の各コントロール連結列はどうなってますか?

最初にテーブルのSU1〜SU3のコンボボックスの連結列を「1」→「2」に変更した後
フォームを開くと、SU1〜SU3はまだ社員名称が表示されていました。

次に、フォームのSU1〜SU3のコンボボックスの連結列を「1」→「2」に変更したところ
フォームのSU1〜SU3のコンボボックスに社員CDが表示されるようになりました。

【5456】Re:帳票フォーム上のコンボボックスでのフ...
回答  クロ  - 05/6/21(火) 17:02 -

引用なし
パスワード
   ▼なおなお さん:

>次に、フォームのSU1〜SU3のコンボボックスの連結列を「1」→「2」に変更したところ
>フォームのSU1〜SU3のコンボボックスに社員CDが表示されるようになりました。

フォームの方の値集合ソースと列幅はどうなってますか?

【5457】Re:チョット修正しました。
質問  なおなお  - 05/6/21(火) 17:07 -

引用なし
パスワード
   ▼クロ様:

>そうですか?
>通常はフォームのレコードソース名が付くと思いますが...

はい。SU1を例にしてご説明します。

本来、SU1はコンボボックスですが、コントロールの種類を変更して
テキストボックスにすると、そこには「社員CD」が表示されます。
そのテキストボックスの「SU1」に選択フィルタを使うと
「フォーム名.SU1="4566"」になるのですが、
コンボボックスのままで選択フィルタを行なった場合、
「LOOKUP_SU1.社員名称="山田"」となってしまうのです。

【5458】Re:帳票フォーム上のコンボボックスでのフ...
質問  なおなお  - 05/6/21(火) 17:11 -

引用なし
パスワード
   ▼クロ様:

>フォームの方の値集合ソースと列幅はどうなってますか?

値集合ソース「社員テーブル」
列数「3」
列幅「0cm;1.503cm;1.503cm」
連結列「2」
リスト行数「40」
リスト幅「3cm」
となっております。

【5460】Re:左に寄ります。
回答  クロ  - 05/6/21(火) 17:34 -

引用なし
パスワード
   >次に、フォームのSU1〜SU3のコンボボックスの連結列を「1」→「2」に変更した
>ところフォームのSU1〜SU3のコンボボックスに社員CDが表示されるようになりました。

この状態が実際のレコードの値だと思います。
コンボボックスで各値を社員名称に変えてみてください。
量が多いなら一度閉じて更新クエリが何かでやってもいいと思います。

【5461】Re:チョット修正しました。
発言  クロ  - 05/6/21(火) 17:41 -

引用なし
パスワード
   レスが長くなったので左に寄りました。掲示板で確認してください。

【5462】Re:左に寄ります。
お礼  なおなお  - 05/6/21(火) 18:20 -

引用なし
パスワード
   ▼クロ様:

>コンボボックスで各値を社員名称に変えてみてください。
>量が多いなら一度閉じて更新クエリが何かでやってもいいと思います。

更新クエリを使い、社員CDを社員名称に変更したところ
選択フィルタで抽出した時の店舗数のカウントを取得することができました。

クロ様に感謝感激の気持ちでいっぱいです。
長い時間、お付き合いくださいまして本当にありがとうございました。

【5465】Re:左に寄ります。
発言  クロ  - 05/6/21(火) 22:57 -

引用なし
パスワード
   お疲れさまでした。
私がもっと要領良くレス出来ればこんなに長くなることもなかったかもです。
明日は出かけるのでレス出来ないので解決出来てよかったです。

【5468】Re:左に寄ります。
お礼  なおなお  - 05/6/22(水) 8:17 -

引用なし
パスワード
   ▼クロ様:

>私がもっと要領良くレス出来ればこんなに長くなることもなかったかもです。

いえ、とんでもございません。
私のわかりにくい説明に、最後までお付き合い頂き感謝しております。
本当にありがとうございました。

1750 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078263
(SS)C-BOARD v3.8 is Free