今回の事案は初めてのケースだった。
ある事業で、顧客に対してある種の設計サービスを行っている。
住宅関連なのだが、ハウスメーカーが、こういう設計の住宅、といった図面をよこしてきて、その図面からうちの商材をパーツごとに必要な数を拾い出しして見積もりを行い、販売する、というものだ。
住宅、という事でまあ『物件』と称され、上記のサービスを実現しているのが『物件拾い出しシステム』と呼ばれている。
で、この『物件拾い出しシステム』、全物件のヘッダー情報はファイルサーバー上の.mdbファイルに保管されているのだが、どの商材をいくつ、あの商材をいくつ、という『拾い出し』した結果の明細情報が、物件の管理ナンバーをファイル名とした別の.mdbファイルに格納されている、という構造なんだ。
今回受けたオーダーは、この『物件拾い出しシステム』の情報を使って、SAPScriptで受注伝票を突っ込む、というもの。開発プラットフォームはAccess。
で、タイトルのとおりの事をしないといけない破目になった。
各物件別の明細情報はファイル名以外はテーブル構造やテーブル名は共通。ファイル名は先に書いたとおり物件管理番号で、配置されるディレクトリもルールで決まっている。
そこで、ヘッダーファイルから管理番号を選択すると、明細情報を呼び出すためにリンクテーブルの接続先ファイルを各明細別mdbファイルに切り替える、という処理をした。
具体的にはこう。
===========================================
Const conmyDbPath = "\\サーバー名\物件データ" '明細ファイルへのパス生成文字列
Const conmyTbName = "T_拾い数量合算" '明細情報へのリンクテーブル
Dim dbsSys As DAO.Database 'データベースオブジェクト
Dim myDb As DAO.Database '明細用データベース
Dim meisaiTb As DAO.TableDef 'テーブル(T_拾い数量合算)
Dim pKanriNo As String '物件管理ナンバー
pKanriNo = "012345678"
Set dbsSys = CurrentDb
Set meisaiTb = dbsSys.TableDefs(conmyTbName)
meisaiTb.Connect = ";DATABASE=" & conmyDbPath & "\" & pKanriNo & ".mdb;TABLE=" & conmyTbName
meisaiTb.RefreshLink
ある事業で、顧客に対してある種の設計サービスを行っている。
住宅関連なのだが、ハウスメーカーが、こういう設計の住宅、といった図面をよこしてきて、その図面からうちの商材をパーツごとに必要な数を拾い出しして見積もりを行い、販売する、というものだ。
住宅、という事でまあ『物件』と称され、上記のサービスを実現しているのが『物件拾い出しシステム』と呼ばれている。
で、この『物件拾い出しシステム』、全物件のヘッダー情報はファイルサーバー上の.mdbファイルに保管されているのだが、どの商材をいくつ、あの商材をいくつ、という『拾い出し』した結果の明細情報が、物件の管理ナンバーをファイル名とした別の.mdbファイルに格納されている、という構造なんだ。
今回受けたオーダーは、この『物件拾い出しシステム』の情報を使って、SAPScriptで受注伝票を突っ込む、というもの。開発プラットフォームはAccess。
で、タイトルのとおりの事をしないといけない破目になった。
各物件別の明細情報はファイル名以外はテーブル構造やテーブル名は共通。ファイル名は先に書いたとおり物件管理番号で、配置されるディレクトリもルールで決まっている。
そこで、ヘッダーファイルから管理番号を選択すると、明細情報を呼び出すためにリンクテーブルの接続先ファイルを各明細別mdbファイルに切り替える、という処理をした。
具体的にはこう。
===========================================
Const conmyDbPath = "\\サーバー名\物件データ" '明細ファイルへのパス生成文字列
Const conmyTbName = "T_拾い数量合算" '明細情報へのリンクテーブル
Dim dbsSys As DAO.Database 'データベースオブジェクト
Dim myDb As DAO.Database '明細用データベース
Dim meisaiTb As DAO.TableDef 'テーブル(T_拾い数量合算)
Dim pKanriNo As String '物件管理ナンバー
pKanriNo = "012345678"
Set dbsSys = CurrentDb
Set meisaiTb = dbsSys.TableDefs(conmyTbName)
meisaiTb.Connect = ";DATABASE=" & conmyDbPath & "\" & pKanriNo & ".mdb;TABLE=" & conmyTbName
meisaiTb.RefreshLink
===========================================
"T_拾い数量合算"というリンクテーブルがあって、明細情報を収めたmdbファイルが"\\サーバー名\物件データ\"というパスに、物件管理番号をファイル名として格納されているので、物件管理番号が与えられたら、"T_拾い数量合算"リンクテーブルのリンク先をその都度切り替える、という操作。
同じファイルの同じテーブルに、ちゃんとキーを与えて格納してくれれば、こんなこと必要ないんだけど…。でも、まあ勉強にはなった。
コメント
コメントを投稿