Access VBA質問箱 IV

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

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


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

【3562】非連結のテキストボックスにテーブルから... キャッピー 04/9/22(水) 16:57 質問[未読]
【3565】Re:非連結のテキストボックスにテーブルから... こもれび 04/9/23(木) 9:05 回答[未読]
【3567】Re:非連結のテキストボックスにテーブルから... キャッピー 04/9/23(木) 15:39 発言[未読]
【3568】Re:非連結のテキストボックスにテーブルから... こもれび 04/9/23(木) 17:54 回答[未読]
【3569】Re:非連結のテキストボックスにテーブルから... キャッピー 04/9/23(木) 20:40 発言[未読]
【3570】Re:非連結のテキストボックスにテーブルから... こもれび 04/9/23(木) 22:30 回答[未読]
【3571】Re:非連結のテキストボックスにテーブルから... キャッピー 04/9/23(木) 23:10 質問[未読]
【3572】Re:非連結のテキストボックスにテーブルから... クロ 04/9/24(金) 8:25 回答[未読]
【3573】Re:非連結のテキストボックスにテーブルから... キャッピー 04/9/24(金) 9:09 お礼[未読]

【3562】非連結のテキストボックスにテーブルから...
質問  キャッピー  - 04/9/22(水) 16:57 -

引用なし
パスワード
   どうかお助けを〜
表形式のフォームを作成し、テキストボックスに非連結でテーブルのデータを持ってくるようにしましたが、最後に読み込んだデータが全レコードに入ってしまいます。読み込んだデータをそれぞれレコード別に入れていくにはどうしたらいいのでしょうか?

顧客コード





↑こうしたいのに
↓こうなってしまいます・・・

顧客コード





Dim recAdress As New ADODB.Recordset
Dim vntArray As Variant
Dim vntTemp As Variant
    
recAdress.Open "顧客マスタ", CurrentProject.Connection, adOpenKeyset,
vntArray = recAdress.GetRows(, , "顧客コード")
For Each vntTemp In vntArra
  Me.顧客コード = vntTemp
Next

全部同じ「Me.顧客コード」に入れちゃってるのでこうなる理由は分かるのですが、レコード別に「Me.顧客コード」を指定してやる書き方がわかりません。それとも考え方が根本的に間違ってるのでしょうか?
うまく説明もできてるかどうかわかりませんがよろしくお願いします。
Accessは2000です。

【3565】Re:非連結のテキストボックスにテーブルか...
回答  こもれび  - 04/9/23(木) 9:05 -

引用なし
パスワード
   こもれびです

次をお試しください

1.
フォーム上に配置した各テキストボックスの名前を規則化しておいて下さい
(例:Txt00,Txt01,Txt02,Txt03)
2.

  do Until recAdress.EOF
   Me("Txt" & Format(i, "00")).Value = recAdress!顧客コード
   I = I + 1
   recAdress.movenext
  loop

問いに記されたテキストボックスは4つで顧客コードも4つだけと
読めましたので、上の1の例はTxt00〜Txt03となっておりますが、
数に応じて適宜増やしてください。

ところで…Adressのスペルは本来Addressではないですか?

【3567】Re:非連結のテキストボックスにテーブルか...
発言  キャッピー  - 04/9/23(木) 15:39 -

引用なし
パスワード
   ▼こもれび さん:
レスありがとうございます。
しかしごめんなさい、やはり上手く状況が伝わってなかったようです。
テキストボックスは一つだけなんです。そしてデータは4つと限らずたくさんあります。表形式のフォームにしたんで、テキストボックスは一つで、それがデータに合わせて増えてくれるみたいなんですが。んー、またちゃんと伝わらないような・・・

【3568】Re:非連結のテキストボックスにテーブルか...
回答  こもれび  - 04/9/23(木) 17:54 -

引用なし
パスワード
   こもれびです

▼キャッピー さん:

> テキストボックスは一つで、それがデータに合わせて増えてくれるみたいなんですが。んー、またちゃんと伝わらないような・・・

あっ、テキストボックスって表形式のテキストボックスのことですか…(*o*;
ということは、単にレコードセットをフォームに表示しなさいってことですね
(デザインモードの「詳細」に並んでいるテキストボックスということですね)

それでしたら…
Dim recAdress As New ADODB.Recordset
Dim cn As New ADODB.Connection

  Set cn = CurrentProject.Connection    

  recAdress.Open "顧客マスタ", cn, adOpenKeyset,adLockOptimistic

  Set Me.Recordset = recAdress

サブフォームを使っていらっしゃらないのでしたら、これでいけるはずです。

【3569】Re:非連結のテキストボックスにテーブルか...
発言  キャッピー  - 04/9/23(木) 20:40 -

引用なし
パスワード
   ▼こもれび さん:
たびたび申し訳ありません。

Set Me.Recordset = recAdress
は、どういう意味をもってるのでしょうか・・・?

vntArray = recAdress.GetRows(, , "顧客コード")
を使うことでデータは間違いなく順番に読み込まれてきます。
テキストボックスは「デザインモードの「詳細」に並んでいるテキストボックス」ということです。
これが「Me.顧客コード」って訳なんですが、読み込まれたデータをどうやって、列ごとに分けてセットしてやればいいのかわかりません。
データ1は一列目の「Me.顧客コード」、データ2は二列目の「Me.顧客コード」・・・
「Me.顧客コード」に順番とかつけることってできるんでしょうか?
初心者なんで、なにとぞよろしくお願い致します。

【3570】Re:非連結のテキストボックスにテーブルか...
回答  こもれび  - 04/9/23(木) 22:30 -

引用なし
パスワード
   こもれびです

やっと話が見えてきましたけど、フォームの詳細に入れるレコードは
基本的に1レコードのみです。
複数のレコードは入りません。

もしかして、最終的にキャッピーさんが作られたい物は「クロス集計クエリー」
ではないでしょうか?

○ クロス集計クエリー(例)

    | 顧客1  顧客2  顧客3  顧客4  顧客5
-----------------------------------------------------------
製品A |
製品B |
製品C |<--------- 金額、データ数、その他 -------->
製品D |
製品E |

もし、これだとしますと作り方は全く違いますよ。

>Set Me.Recordset = recAdress
>は、どういう意味をもってるのでしょうか・・・?

これは、レコードセットをフォームにそのまま表示するだけです。

【3571】Re:非連結のテキストボックスにテーブルか...
質問  キャッピー  - 04/9/23(木) 23:10 -

引用なし
パスワード
   ▼こもれび さん:
何度もありがとうございます。
こもれびさんのおっしゃるとおりでしょうか?

顧客 氏名 住所 TEL
0001 ○○ ○○ xxx-xxx-xxxx
0002 ○○ ○○ xxx-xxx-xxxx
0003 ○○ ○○ xxx-xxx-xxxx
:  :  :    :

フォームヘッダー
顧客 氏名 住所 TEL ←ラベル
----------------------------------------
詳細
Me.顧客コード Me.氏名 Me.住所 Me.TEL ←非連結のテキストボックス
----------------------------------------
フォームフッター

こんな感じにしたいと思ってました。
テキストボックスのコントロールソースで、顧客マスタと連結(?)させれば、問題なく表示はなるのですが、マスタのデータを直接いじることになっちゃうみたいなので、非連結でやりたいなと、思ったんですが、他にどんな方法あるんでしょうか?本当にたびたび申し訳ありません。時間があったらレスお願いします。

【3572】Re:非連結のテキストボックスにテーブルか...
回答  クロ  - 04/9/24(金) 8:25 -

引用なし
パスワード
   非連結フォームに複数のレコードを持ってくるのは不可能かと思います。
ワークテーブル(仮テーブル)を作成し、そちらに必要なレコードをセットして
現在の非連結フォームのレコードソースにワークテーブルを指定しては如何ですか?

【3573】Re:非連結のテキストボックスにテーブルか...
お礼  キャッピー  - 04/9/24(金) 9:09 -

引用なし
パスワード
   ▼クロ さん:
>非連結フォームに複数のレコードを持ってくるのは不可能かと思います。
>ワークテーブル(仮テーブル)を作成し、そちらに必要なレコードをセットして
>現在の非連結フォームのレコードソースにワークテーブルを指定しては如何ですか?

やはりそうですか。
そうですね、仮テーブルを作る方向で考えていきたいとおもいます。
こもれびさん、クロさん、ありがとうございました。
今後もどうぞよろしくお願いします。

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