Access VBA質問箱 IV

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

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


428 / 500 ページ ←次へ | 前へ→

【4624】自力で解決するにあたり。。。
発言  情シス初心者  - 05/3/17(木) 10:14 -

引用なし
パスワード
   なんとか自力で解決できそうです。
アプリケーションにIDナンバーを振り、クエリでナンバーを入力すると、
該当するPC Noを抽出する方法にしました。

クロさん>以前、お教えいただきましたユニオンクエリで縦方向にアプリ名とPC名を出すというものですが、同時にそのアプリ名に対応したアプリIDを抽出するには、どうすればよろしいのでしょうか?さらにもう1つクエリを作り、ユニオンクエリとアプリIDを一緒にしようとすると「テーブルと、そのテーブルを基にしたクエリのフィールドを選択した可能性があります」というエラーが出て出来ません。

テーブルA
  アプリ名 アプリID
  ------------------
  Aソフト   1 
  Bソフト   2
  Cソフト   3
  Dソフト   4

テーブルB
  PC名  1    2    3
  ----------------------------
  PC1 Aソフト Dソフト
  PC2 Cソフト Dソフト
  PC3 Aソフト Bソフト Cソフト

ユニオンクエリ1
  PC名  アプリ名
  PC1   Aソフト
  PC1   Dソフト
  PC2   Cソフト
  PC2   Dソフト
  PC3   Aソフト
  PC3   Bソフト
  PC3   Cソフト

よろしくお願いします。
・ツリー全体表示

【4623】Re:LOOKUPみたいな関数ありませんか?
回答  小僧  - 05/3/17(木) 10:13 -

引用なし
パスワード
   ▼CONDOR さん:
おはようございます。
先のテーブルをAテーブル、
後のテーブルをBテーブル、
フィールド名を[F1],[F2]として

パターンA:
SELECT Aテーブル.F1, IIf([Aテーブル]![F2]=0 Or [Aテーブル]![F2] Is Null,DLookUp("F2","Bテーブル","F1='" & [F1] & "'"),[Aテーブル]![F2]) AS F2
FROM Aテーブル;

パターンB:
SELECT Aテーブル.F1, IIf(Aテーブル!F2=0 Or Aテーブル!F2 Is Null,Bテーブル!F2,Aテーブル!F2) AS F2
FROM Aテーブル LEFT JOIN Bテーブル ON Aテーブル.F1 = Bテーブル.F1;

どちらも新規クエリのSQLビューに貼り付けてお試し下さい。
お好きな方を♪
・ツリー全体表示

【4622】Re:質問の仕方が悪いのでしょうか?
発言  クロ  - 05/3/17(木) 8:38 -

引用なし
パスワード
   > ひとつのコンボボックスではできるのですが、

これはどうのようにおこなってますか?

> これを複数(できれば5個)のコンボで商品と量の組み合わせで
> 絞り込んでサブフォームに表示させたいのです。

事例をあげてみてはどうでしょうか?
※思い浮かばないので...
・ツリー全体表示

【4621】Re:質問の仕方が悪いのでしょうか?
質問  Andy  - 05/3/17(木) 4:52 -

引用なし
パスワード
   >以下のようなテーブルがあります。
>
>顧客ID  商品ID  個数
>1    1    5 
>1    2    10
>1    3    3
>1    4    1
>1    5    20
>2    1    10
>2    2    2
>3    6    100
>・    ・    ・
>・    ・    ・
>・    ・    ・
>
>
>顧客数は6000、商品は2000ほど。上の例では省略していますが、各顧客向けの商品数は、10〜30種類ほどあります。
>フォーム上で、コンボボックスで商品とある数量以上(任意の数量を入れて)の購入顧客をサブフォームに表示させています。
>
>ひとつのコンボボックスではできるのですが、これを複数(できれば5個)のコンボで商品と量の組み合わせで絞り込んでサブフォームに表示させたいのです。
>
>よろしくお願いします。


質問の仕方が悪いのでしょうか? 再度、よろしくお願いします。
・ツリー全体表示

【4620】LOOKUPみたいな関数ありませんか?
質問  CONDOR  - 05/3/16(水) 18:13 -

引用なし
パスワード
   お世話してください!
初歩的な質問と思いますが、どうにもわからなく、
ご教授のほどお願い致します。

まず、下記のようなテーブルがあって、C.D.Eの右が空白もしくは0になっています。
1.    2.
A    100
A    100
B    50
C    0
D    
A    100
B    50
E    
A    100
D    
C    0
D    
E    

別に、下記のようなテーブルがあります。
I    II
C    25
D    30

この二つのテーブルを使って
1.    2.
A    100
A    100
B    50
C    25
D    30
A    100
B    50
E    
A    100
D    30
C    25
D    30
E    

のようなテーブルを作りたいのですが、
IIF(1.=0 or "",
みたいにやるものなのでしょうか。
進まなくて困っています。
よろしくお願い申し上げます
・ツリー全体表示

【4619】テーブルからの検索
質問  情シス初心者  - 05/3/16(水) 14:03 -

引用なし
パスワード
   またまた分からない点が出ましたので、ご教授お願い致します。

テーブルA
  アプリ名
  --------
  Aソフト
  Bソフト
  Cソフト
  Dソフト

テーブルB
  PC名  1    2    3
  ----------------------------
  PC1 Aソフト Dソフト
  PC2 Cソフト Dソフト
  PC3 Aソフト Bソフト Cソフト

上のような構成で、ソフト名を検索すると、そのソフトがインストールされている
PC名を抽出したいのですが、どのようにすればよろしいでしょうか?
よろしくお願いします。
・ツリー全体表示

【4618】Re:コンボボックス内容の更新について
回答  小僧  - 05/3/16(水) 13:32 -

引用なし
パスワード
   ▼まーべらす さん:

ちょっと解りつらいところがありますので、
適当に想像しながらですが…

>画面表示
>TAN.担当者コード(テキスト)
 ⇒担当者コードテキスト
>BUSHO.部署名(コンボ)
 ⇒部署名コンボ
>TAN.担当者名(テキスト)

更新ボタンを押すと更新がかかるものとして…

Private Sub 更新ボタン_Click()
  Dim BushoCode As Integer
  Dim SQLCode As String
  BushoCode = DLookup("部署コード", "BUSHO", "部署名 = '" & Me.部署名コンボ & "'")
  
  SQLCode = "UPDATE TAN " _
      & "SET 部署コード = " & BushoCode _
      & " WHERE 担当者コード = '" & Me.担当者コードテキスト & "'"
  DoCmd.RunSQL SQLCode
  
End Sub

でどうでしょうか?
・ツリー全体表示

【4617】コンボボックス内容の更新について
質問  まーべらす E-MAIL  - 05/3/16(水) 11:41 -

引用なし
パスワード
   お世話になります。
初歩的な質問かも知れませんが、お願い致します。

-------------------------
担当者マスタ TAN
担当者コード、部署コード、担当者名
1 001,101,田中一郎
2 002,102,伊藤次郎

部署マスタ BUSHO
部署コード、部署名
1 101,営業部
2 102,技術部

画面表示
TAN.担当者コード(テキスト)
BUSHO.部署名(コンボ)
TAN.担当者名(テキスト)

例として、画面に
001
営業部(部署マスタの部署名を表示)
田中一郎
と表示して、更新をかけたとき
担当者マスタの部署コードを更新かけたいのですが、
クエリーで作成はどうやれば宜しいのでしょうか?

(この場合ですと、BUSHO.部署名も更新されてしまいます)
どなたかご教授をお願いします。
・ツリー全体表示

【4616】Re:SQLで非表示
お礼    - 05/3/16(水) 10:40 -

引用なし
パスワード
   ▼hatena さん:
>>もちろんそうです。
>>Accessに付属のフォームやレポートで書式を変更すれば
>>そのようなことは可能です。
>>ですが、サードパーティのレポートにはそのような機能を
>>持たないものも見受けられますので、
>>あえてSQL側でできないものかと試行錯誤しているのです。
>
>なるほど、そういうことでしたか。
>サードパーティ製でそのような機能のないレポートもあるんですね。
>ということはACCESSのレポート機能は以外と強力なんだ。
>
>
>グループ内での並び順を決定するキーフィールドがあれば、
>SQLでもできますね。
>とりあえず、
>グループ内で C フィールドに重複がなくそれの昇順という条件で
>SQLを作ると、
>
>SELECT
> IIf(A.C=(SELECT Min(T1.C) FROM A AS T1 WHERE T1.B=A.B),A.B,Null) AS B,
> A.C
>FROM A
>ORDER BY A.B, A.C;
>
>C フィールドに重複があったり、並び順が違う場合は、
>別に並び順を一意に決定するフィールドが別に必要になります。

管理フィールドはやっぱり必要なんですね。
そもそもこれがないと非表示フィールドがわけわかんなくなるし・・・

問題は解決しました。
これでレポートが作りやすくなります。
ありがとうございました。
・ツリー全体表示

【4615】Re:IMPORT時にCSVが勝手に変換さ...
お礼  バンドルデューケン  - 05/3/16(水) 10:28 -

引用なし
パスワード
   ありがとうございます””で該当のデータ部分をくくったらうまくいきました
・ツリー全体表示

【4614】うまくいきました
お礼  バンドルデューケン  - 05/3/16(水) 9:58 -

引用なし
パスワード
   おりがとうございます。
すみませんソース丸投げして
これからもよろしくお願いします。
・ツリー全体表示

【4613】Re:SQLで非表示
回答  hatena  - 05/3/16(水) 9:57 -

引用なし
パスワード
   >もちろんそうです。
>Accessに付属のフォームやレポートで書式を変更すれば
>そのようなことは可能です。
>ですが、サードパーティのレポートにはそのような機能を
>持たないものも見受けられますので、
>あえてSQL側でできないものかと試行錯誤しているのです。

なるほど、そういうことでしたか。
サードパーティ製でそのような機能のないレポートもあるんですね。
ということはACCESSのレポート機能は以外と強力なんだ。


グループ内での並び順を決定するキーフィールドがあれば、
SQLでもできますね。
とりあえず、
グループ内で C フィールドに重複がなくそれの昇順という条件で
SQLを作ると、

SELECT
IIf(A.C=(SELECT Min(T1.C) FROM A AS T1 WHERE T1.B=A.B),A.B,Null) AS B,
A.C
FROM A
ORDER BY A.B, A.C;

C フィールドに重複があったり、並び順が違う場合は、
別に並び順を一意に決定するフィールドが別に必要になります。
・ツリー全体表示

【4612】Re:DAOでテーブルから取得した情報を全...
回答  小僧  - 05/3/16(水) 9:11 -

引用なし
パスワード
   おはようございます。

>  MsgBox "DBへの接続を開始します。"
>  
>  '*********************************************************************
>  'Excel側でDAOへの参照設定が必要です。
>  'VBE画面の「ツール」−「参照設定」で、
>  'Microsoft DAO 3.6 Object Library にチェックをつけてください。
>  '無ければ、DAO 3.5 でも、大丈夫です。
>  '*********************************************************************
>
>  Dim mdb As DAO.Database
>  Dim rst As DAO.Recordset
>  Dim intCnt As Integer
>  Dim str As String
>  Dim data As String
>
>'  str = "C:\db1.mdb"
>  str = "D:\Documents and Settings\t-umemoto\デスクトップ\テーブル表示\DB\テーブル表示.mdb"
>  
>  Set mdb = OpenDatabase(str)
>  Set rst = mdb.OpenRecordset("コードマスタ")
>
  Do Until rst.EOF
>  For intCnt = 1 To rst.Fields.Count
>    
>      MsgBox rst.Fields(intCnt - 1).Value
>  Next
  rst.MoveNext
  Loop
>  MsgBox data & "終了!"
>  
>  rst.Close
>  mdb.Close
>  Set rst = Nothing
>  Set mdb = Nothing
>  
>  Exit Sub
>End Sub  

こんな感じでしょうか?
・ツリー全体表示

【4611】Re:dcount関数について
お礼  情シス初心者  - 05/3/16(水) 9:00 -

引用なし
パスワード
   小僧さん、有難うございます。
dcountでしか出来ないものなのかと思っていたんですが、
SQLを使えばどういう風にも出来る事が良く分かりました。
時間のある時に小僧さんの方法でも試してみようと思います。
・ツリー全体表示

【4610】Re:SQLで非表示
発言    - 05/3/16(水) 9:00 -

引用なし
パスワード
   ▼hatena さん:
>>これだと出力結果が
>>
>>B   C
>>----- -----
>>11111 22222
>>11111 33333
>>
>>となるのですが、これを
>>
>>B   C
>>----- -----
>>11111 22222
>>    33333
>>
>>としたいのです。
>
>これって見た目の問題ですよね。
>実際そのようなデータは、データとしては意味を持ちませんので。
>
>見た目だけなら、レポートで出力するときに
>重複データ非表示を「はい」にするだけです。
>
>フォームなら条件付き書式を使えば、ちょっと面倒で
>重い処理になりますができないことはないと思います。
>
>最終目的はレポートではないですか。
>それともフォーム上で編集もしたいですか。
>
>SQLで無ければならない理由が思いつかないですが。

もちろんそうです。
Accessに付属のフォームやレポートで書式を変更すれば
そのようなことは可能です。
ですが、サードパーティのレポートにはそのような機能を
持たないものも見受けられますので、
あえてSQL側でできないものかと試行錯誤しているのです。

以上を踏まえての質問なのですが、未だに方法が見つからないです。

どうか、よろしくお願いします。
・ツリー全体表示

【4609】Re:SQLで非表示
回答  hatena  - 05/3/16(水) 2:17 -

引用なし
パスワード
   >これだと出力結果が
>
>B   C
>----- -----
>11111 22222
>11111 33333
>
>となるのですが、これを
>
>B   C
>----- -----
>11111 22222
>    33333
>
>としたいのです。

これって見た目の問題ですよね。
実際そのようなデータは、データとしては意味を持ちませんので。

見た目だけなら、レポートで出力するときに
重複データ非表示を「はい」にするだけです。

フォームなら条件付き書式を使えば、ちょっと面倒で
重い処理になりますができないことはないと思います。

最終目的はレポートではないですか。
それともフォーム上で編集もしたいですか。

SQLで無ければならない理由が思いつかないですが。
・ツリー全体表示

【4608】Re:NULLと空白の違い
回答  Gin_II  - 05/3/16(水) 2:10 -

引用なし
パスワード
   >IS NULLと""の抽出データが違うのはなぜなのでしょうか?

抽出条件の "Is Null" と "Not Like "*"" の違いは何ですか?
http://support.microsoft.com/default.aspx?scid=kb;ja;883247

こちらを確認してみてください。
・ツリー全体表示

【4607】NULLと空白の違い
質問  初心者  - 05/3/16(水) 0:19 -

引用なし
パスワード
   はじめまして。ACCESS初心者です。
VBAだけに関わらす、クエリーなどでも戸惑ってしまうのですが、IS NULLと""の抽出データが違うのはなぜなのでしょうか?自分で調べて見たいですが、NULLは型の一致しない空白のレコード、""は長さが0の文字列とのことですが、意味はよく分かりません。ご指導よろしくお願いします。
・ツリー全体表示

【4606】Re:ループ
発言  ちゅう吉  - 05/3/15(火) 23:15 -

引用なし
パスワード
   掲載されたコードだと
テーブルの先頭の1レコード分のデータしか表示せず終了しています。

-----------------------------------
標準価格 価格コード
100000  AD-1012K  ←ここで終了
30000   AX-101
40000   AH-506I
70000   DC-0007P
-----------------------------------

ループさせ、次のレコードを読むようにさせなければなりません。
・ツリー全体表示

【4605】Re:dcount関数について
回答  小僧  - 05/3/15(火) 19:06 -

引用なし
パスワード
     あらら、帰宅したら解決してますね。

クロさん:

自分のSQLはテーブルBは表示してないので、
グループ化する必要はないかな…?

情シス初心者さん:

どのようにできなかったのが解りませんが…。
新規クエリでSQLビューを表示させて
(テーブルは表示させません)
そのままSQLを貼り付ければ表示される…はず。

一応お題のDCOUNTを使ったSQLも出しておきます。

SELECT テーブルA.アプリ名, CInt(DCount("*","テーブルB","[1] = '" & [アプリ名] & "' or [2] = '" & [アプリ名] & "' or [3] = '" & [アプリ名] & "'"))+[在庫数] AS 個数
FROM テーブルA;
・ツリー全体表示

428 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084744
(SS)C-BOARD v3.8 is Free