2018年2月8日木曜日

Access2010のadpとおさらば(4)

テーブル、 フォーム、 レポート、 マクロ、モジュールをすべて読み込み、欠けているクエリを再作成すれば終わりかというと、さにあらず。ゴールにはもうひと作業。
読み込んだフォーム、レポートにかく格納されているモジュールがそのまま動くとは限らない。

ひとつは、コードに記述する関数などに互換性がない場合がある。これらをaccdb側で動くように置き換えねばならない。

もう一つは、 コード記述内にある テーブル名の修正だ。

実は SQLにODBC接続すると、リンクしたテーブル名の頭に 「dbo_] が付いてしまうのだ。
ここで悩む。
テーブル名をdboを残したまま コードを書き換えるか、テーブル名からdboを削除するか、どっちかにするしかない。
テーブル数が一つや2つなら 手作業にて deleteしてもいいが、数は20を超える。
社保雇保統合データベース
 会社名テーブル 
 社保適用事業所テーブル 
 雇用保険適用事業所テーブル 
 社保被保険者テーブル
 雇用保険保険被保険者テーブル 
 被扶養者テーブル 
 標準報酬テーブル 
 住所変更テーブル 
 電子申請送信済みテーブル
 などなど このほか多数・・・・・

プロジェクト管理データベース
 電話受信簿テーブル
 プロジェクトテーブル
 プロジェクト明細テーブル
 など・・・・

このほか 
労働保険事務組合データベース
FAX受信データベース
給与計算データべース
請求管理データベース、
送付書管理データベース、
職員スキル管理データベース
等々に それぞれ多数のテーブルがある。


結局、dbo削除を選択したのだが、世の中よくしたもので、同じ悩みを抱えている人がいらして、
一括削除のFunctionを作成公開してくれてる、ありがたい人がいるのだ。

ほんの数行のコードで おかげさまで ワンタッチで削除できた。
感謝を込めて ご紹介かたがた掲載

http://mmf.cocolog-nifty.com/fpc/2005/05/sqlserverdbo__c25f.html
Function f_RenameTableName()
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Set dbs = CurrentDb   
    For Each tdf In dbs.TableDefs       
        If Left(tdf.Name, 4) = "dbo_" Then
            tdf.Name = Mid(tdf.Name, 5)
        End If       
    Next
Ext:
    Set tdf = Nothing
    Set dbs = Nothing
End Function






0 件のコメント:

コメントを投稿