実現したいこと
テーブルから値を取り出し、変数に入れ条件に合うデータをSQLServerから取り出さそうとしたのですが、
テーブルの値が複数ある場合全てのレコードを取り出すことができません。
条件に合う複数のデータを取り出し、別の条件に組み込めたいです。
発生している問題・分からないこと
テーブルとして見積、見積作業、明細マスターというのがあり見積の主キーである「見積番号」を見積作業に記入することで「親子データ」の関係にしております。
また明細マスターの主キーである「明細ID」は見積作業テーブルの中にもあり、該当の明細マスターのデータを取り出すことをしています。
st3 = Me.[見積番号]
st4 = DLookup("明細ID", "見積作業", "見積番号 = " & st3 & "")
'サーバーのデータをローカルに出力する
st = dbsCls.CopyLocal_fromSvr("明細マスター", "select * from 明細マスター where 明細ID like '" & st4 & "'", False, 0)
見積にある見積番号と、見積作業にある見積番号を一致させ、
さらに見積作業にある明細IDと、明細マスターにある明細IDを一致させSQLServerにある明細マスターの値をローカルへ取り出さそうとしました。
しかし、dlookupの場合見積作業テーブルに同じ見積番号がある場合明細マスターの値が一つしか結果が返ってこないです。
最終的には複数の明細IDを取り出し変数に組み込めるようにすることで、明細マスターのレコードを一度に複数ローカルへと出力したいです。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Dim st As Boolean
Dim st3 As String
st3 = Me.[明細ID]
st = dbsCls.CopyLocal_fromSvr("明細マスター", "select * from 明細マスター where 明細ID like '" & st3 & "'", False, 0)
ローカルにデータがない状況で作成しているため、フォームにある明細IDと同じ明細IDを出力するという処理をしても明細マスターに値がないため結果が返ってこないです。
明細マスターのデータをすべてローカルへ保存することはできますが、量が多く処理に膨大な時間がかかってしまいます。
補足
・データはSQLサーバーとリンクしており別のツールを使いaccessを起動しています。
その関係上、ローカルにテーブルを基本入れず毎度欲しいデータのみサーバーから出力している形になります。
フォームを開いた段階で、該当の見積番号のレコードが出力されます。ただしマスターだけは、見積番号がないため出力されない状況です。
・見積と見積作業は「親子データ」の関係のため、「見積リスト」というフォームに見積作業のデータを入れています。
テーブル
メインフォーム
名前 見積
フィールド名(データ型) 見積番号(int)
サブフォーム
名前 見積作業
フィールド名(データ型) 見積作業ID(int),見積番号(int),明細ID(string)
明細マスター
フィールド名(データ型) 明細ID(string),作業名(String)
(例)
見積 見積番号 1
見積作業 見積作業ID 100,見積番号 1,明細ID A1
見積作業ID 200,見積番号 1,明細ID B1
明細マスター 明細ID A1,作業名 サンプル1
明細ID B1,作業名 サンプル2
明細マスターにある明細ID A1と明細ID B1をSQL Serverからローカルへと取り出したい。
・windows11 home、64ビット
・Microsoft access2021
テーブルはSQL serverとリンクしておりdbsheetclientという別のツールを使っています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/10/23 02:10