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






2018年2月7日水曜日

Access2010のadpとおさらば(3)

さて、これまでのことで、SQLへの移行がテーブル、フォーム、レポートについては完了。
しかし、これで完全ではない。
クエリー(系)が まだだ。

系、とかいたのは、ADPとACCDBとで、クエリーが異なるからだ。

ADPでは、 View 、ストアドプロシージャ、関数 と3つを使い分けるが、ACCDBでは、「クエリー」一本。

何が違うか。
変数の渡し方にADP側は 少々癖がある。
Viewでは 変数を渡せない。accde側は Viewに相当するのが「選択クエリ」。
「選択クエリ」では 変数を直接書けるが、Viewでは そのような記述はできない。

たとえば、会社名や電話番号が項目(field)としたテーブルがあったとして、
子にテーブルの対し 市外局番が 033 である会社を抽出せよ、ということに関しては Viewも選択クエリも記述可能だが、 「フォーム上にあるテキストボックスに入力された市外局番」の会社を抽出せよという記述は 選択クエリにおいては可能だが、Viewでは不可能。

したがって adpの場合、どうするかというと、VBA上で SQL構文を記述して そこに 変数を 入れ、viewを作成することとなる。

SQL構文で 抽出等を記述しているものは、フォームやレポートの移動にともなって一緒にインポートできるのだが、ACCESS覚えたての頃は こうした芸当はできず、単独のクエリとして記述してあって これが、 システムのあちこちに残っている。

adpからAccdbへの移行作業の大半は 実は これ。単独(独立)クエリをあらためて作ろ直すか、あるいはまた これを機会に SQL構文化するかだ。

移行作業がほぼ終わったというのは これを意味する。


 




2018年2月6日火曜日

Access2010のadpとおさらば(2)

adpとおさらばに際してもう一つの課題が。

SQLの世代が古すぎる。現在はどうやら2014が最新かな。
sp版を数えなくとも4世代前となる。

SQLは 無料なので その意味ではいつでも移行可能なのだが、毎日動いているものだし、何より移行トラブルが嫌なので、明日やろう明日やろう、、、がすでに十数年。

どうやら移行方法は2つあるらしい。
ひとつは、
オーソドックス(かな?)な デタッチ、アタッチ方式。
旧サーバ側で移行させたいデータベースをまずデタッチし、しかるのち、所定のエリアにある、当該データベースのファイル2つ(*.mdf *.ldf)をコピーし、あらかじめ作成しておいたsqlサーバ側の所定のフォルダへペーストする。
そして 新サーバ側でアタッチ作業をする。

もうひとつは、
1 access2013で、旧サーバのデータベースへodbc接続をする。
2 すべてのテーブルをローカルテーブルに変換する。
3 このローカルテーブルを新SQLサーバ側の新データベースを作成し移動させる(アップサイズ)

要する時間は 後者だと、テーブルの大きさにもよるが そうとう大きくなる。てすとしてみると、
最大レコード400,000近いものがあり、このテーブルは 1時間では移動できなかった。
対して、前者は 時間が短いが、、、素人目には あんな大きいデータ集団が この2つのファイルだけ?という驚きをかくせず、もし、コピーペに何らかの障害が起きたら大変なことになるなあ、との不安ぬぐいえず、デタッチアタッチがたは あまり触りたくない。

なお、後者の ローカルテーブル変換後アップサイズ型は、2010ではダメみたい。


2018年2月5日月曜日

Access2010のadpとおさらば。

マイクロソフトが、Access2013から、SQLへの接続方式、ADPをやめてしまってすでに何年かたった。
事務所のシステムがADPで動いているため、Access2010から別れられず、Aceessをバージョンアップできないでいる。Pcを新調したときも2010が必要となるのだが、ところがどっこい、一般には市販されなくなっており、中古市場に求めざるを得ない状況だ。

なんとしたものか、と思いつつ、また、ODBC接続すればSQLデータベースとのやり取りが可能だということはわかっていても、 これまでのADP資産をどうやって移行させる?がダイモンダイナノダ。

1、テーブル。これはODBC方式にすればいいだけだから 簡単に移行できる

2、クエリ、フォーム、レポート、VBAコードの移行ができない。
Access側に、他のAccessから「インポート」方式があるので これを「利用できないかと、
Access2013側から2010のadpを読もうとすると、ダメよ!と怒られる。

3、テーブルの設計は どこで、どうやるんだろ、、
ODBC接続となると、リンクとなるのでAccess側からは テーブル設計や変更ができない。
SSMS(Sql Server Management System)で、できるのはわかったが、生産性?が悪いよなあ。
また、SQL構文で Create NewTablなんたらと 発行すれば出来ることはわっかても、やっぱり生産性が。
従来のADPがわから グラフィカルに操作してきた身には とっても つ・ら・い。


ところが、ところが。
(今となってみればなんてことはないが)
フォーム・レポート等のインポートを Access2013でやったから悪いのであって、2010で実行するとできることがわかったので俄然ヤル気が起きてきた。
すなわち、Access2010で ローカルDB(というのかな?) のaccdbファイルを作成し、そこへadp上のフォーム等を読み込めばいいのだ。ついで テーブルをODBC接続すれば移行完了。その
2010のaccdbを あらためて2013で開けばよい。

テーブル設計・変更はどうする?
2010のaccdbで ODBC接続したリンクテーブルを、ローカルテーブルに変更し(ワンクリックで可)
そうしたうえで テーブルの変更を行い、その後にSQLへアップサイズして、改めてODBC再接続をすればよい、、、、
多少、手順がありますが、これはそんなにストレスを感じないでやれる。
(しかし、2013では この方式=アップサイジング方式はない)。

ということで、 まもなく 移行作業が完了する。



2018年1月4日木曜日

2017年2月8日水曜日

国交省の建設総合統計をちょいと加工してみたら・・・・

国交省の建設総合統計、ここ
http://www.mlit.go.jp/report/press/joho04_hh_000649.html
にあります。
ちょいと加工して(改ざんして、じゃないよ)各県ごとの建設工事受注高一覧を
作ってみました。
一番古いのが H22年度でしたので、H27年度との対比です。

宮城・福島・岩手が突出してます。
Pref22年度27年度増分増加率
宮城県8,03424,29516,261202%
福島県6,14217,12710,985179%
岩手県5,32313,4668,143153%
茨城県9,17012,9993,82942%
沖縄県5,7188,0422,32441%
石川県3,9785,5071,52838%
香川県2,8753,9241,04836%
山形県3,3464,3841,03731%
千葉県17,11522,1575,04229%
岡山県4,9396,3501,41129%
北海道20,48926,2095,72028%
鳥取県1,7462,22047427%
長崎県3,9244,9601,03726%
埼玉県17,45321,9234,47026%
和歌山県3,7424,64189924%
群馬県6,4927,8251,33321%
愛知県24,83929,7924,95320%
愛媛県4,0714,84477319%
福岡県14,49417,1022,60818%
鹿児島県5,3726,30192917%
京都府7,0048,0721,06815%
長野県6,3867,34195515%
山口県4,5495,18964014%
兵庫県14,46016,3501,89013%
大阪府23,27126,1322,86112%
岐阜県6,7377,51377612%
徳島県2,4212,65223110%

22年から27年の全国単位での増加率は約18%ですので、
上表を、
各県とも 18%増として 再作成してみると、こんな感じ。

Pref22年度27年度増分増加率 平均増率で再計算推定減少率
宮城県8,03424,29516,261202% 1,446-14,81491%
福島県6,14217,12710,985179% 1,106-9,88090%
岩手県5,32313,4668,143153% 958-7,18588%
茨城県9,17012,9993,82942% 1,651-2,17857%
沖縄県5,7188,0422,32441% 1,029-1,29556%
石川県3,9785,5071,52838% 716-81253%
香川県2,8753,9241,04836% 518-53151%
山形県3,3464,3841,03731% 602-43542%
千葉県17,11522,1575,04229% 3,081-1,96139%
岡山県4,9396,3501,41129% 889-52337%
北海道20,48926,2095,72028% 3,688-2,03236%
鳥取県1,7462,22047427% 314-15934%
長崎県3,9244,9601,03726% 706-33032%
埼玉県17,45321,9234,47026% 3,142-1,32830%
和歌山県3,7424,64189924% 674-22525%
群馬県6,4927,8251,33321% 1,169-16412%
愛知県24,83929,7924,95320% 4,471-48210%
愛媛県4,0714,84477319% 733-405%
福岡県14,49417,1022,60818% 2,60910%
鹿児島県5,3726,30192917% 96738 

宮城・福島・岩手の社労士は 今後大変だよん。
たぶん 今 バブルでうかれてるでしょうが。


あ、全県は以下。
Pref22年度27年度増分増加率
北海道20,48926,2095,72028%
青森県5,7536,2274758%
岩手県5,32313,4668,143153%
宮城県8,03424,29516,261202%
秋田県3,8244,0932687%
山形県3,3464,3841,03731%
福島県6,14217,12710,985179%
茨城県9,17012,9993,82942%
栃木県6,9607,3363775%
群馬県6,4927,8251,33321%
埼玉県17,45321,9234,47026%
千葉県17,11522,1575,04229%
東京都65,20661,952-3,254-5%
神奈川県27,23728,0618233%
山梨県3,9733,799-173-4%
長野県6,3867,34195515%
新潟県11,50610,601-905-8%
富山県4,9585,2382796%
石川県3,9785,5071,52838%
福井県4,3324,4481163%
岐阜県6,7377,51377612%
静岡県14,48613,638-848-6%
愛知県24,83929,7924,95320%
三重県7,7047,765621%
近 畿56,31762,8956,57812%
滋賀県4,7384,638-100-2%
京都府7,0048,0721,06815%
大阪府23,27126,1322,86112%
兵庫県14,46016,3501,89013%
奈良県3,1013,061-39-1%
和歌山県3,7424,64189924%
鳥取県1,7462,22047427%
島根県3,7403,736-40%
岡山県4,9396,3501,41129%
広島県8,0158,6986839%
山口県4,5495,18964014%
徳島県2,4212,65223110%
香川県2,8753,9241,04836%
愛媛県4,0714,84477319%
高知県2,6752,9042299%
福岡県14,49417,1022,60818%
佐賀県3,3343,415812%
長崎県3,9244,9601,03726%
熊本県5,5275,569421%
大分県4,1163,952-164-4%    
宮崎県4,0334,3913589%
鹿児島県5,3726,30192917%
沖縄県5,7188,0422,32441%