見出し画像

EUCを作ろう!5

EUC(エンド・ユーザー・コンピューティング)で処理の効率化をはかるときに考えることは、正確で速い事だ。
Accessでテキストファイルを読み込む事は、あまり速くはない。
同じ内容のデータが、4つに分割されている場合と一つに纏められている場合では、一つに纏められている方を読み込む方が速い。
但し、それはデータ量にも因る。
例えば、合計400MBのファイルと、100MBを4個に分割されたテキストファイルを読み込む場合、Accessで取り込むなら、400MBを読み込む方が速い。
自動で4個のファイルを連続して読み込んでもだ。
分割された4個の100MBのファイルしかない場合、其れを結合する方法がある。
バッチファイルで結合のコマンドを書き込んで流せば、一瞬で結合できる。
「バッチファイルでテキストファイルを結合する」でネットを検索すれば、バッチファイルの作成方法も簡単に判る。
簡単なので、以下にバッチファイルについて説明する。
テキストファーマットはShift-JISフォーマットで以下のコマンドを打ち込んで保存する。

rem ファイル結合バッチ
@echo off
rem このバッチの説明
rem このバッチが格納されているフォルダ内のCSVファイルを総て「Ketsugou.csv」に結合する
rem このバッチが存在するフォルダをカレントに設定
pushd %0..
rem テキストファイルとして結合(/B)
rem バイナリファイルとして結合(/A)
for %%I in (*.csv) do copy Ketsugou.csv+%%I /B
Exit

※以下にバッチを起動した動画を添付した。



上記バッチををテキストファイルにしてアップする。
拡張子をtxt⇒batに偏向すれば動くハズ。
使用に関しては、自己責任で行う様にお願いする。

Accessに限らずシステム化の肝は、処理するソフトウェアの型にデータを変換することだ
処理するソフトウェアの型に変換さえしてしまえば、あとは処理するソフトウェアの機能をフル活用できるのだ。
Accessの場合、テーブルにデータを格納するImportは最も重要な処理でもある。
Accessにはインポート機能(ImportWizard)が用意されている。
Accessのインポート機能ではファイルをImportする場合、三種類の機能が用意されている。
一つ目は、ファイルを新たなテーブルを作成してAccessFile内にTableを作成する。
二つ目は、ファイルを既にAccessFile内に作成されているTableにImportする。
三つ目は、ファイルを外部Tableとしてハードリンクする。
以上三つの機能がある。
この機能はExcelのSheetをテキストファイルのように扱うことが出来る。
ExcelはAccessとの親和性が高い。
項目付きのExcelのシートは簡単にAccessで買うようできる。
但し、Excelの項目をセルの結合などで加工している場合は、単純な一覧表にしてから利用する方が良い。
セル番地の指定をした利用の仕方もあるが、今回は省く。
※項目付きのExcelのシートのImport機能を使う動画を掲載する。

Accessのインポート機能を使って、上手く行かない場合、ImportErrorテーブルが作成される。
このテーブルには、ImportErrorの内容がフィールド毎に記載されている。
こうしたテーブルが一つでも出たら、Importの設定の問題である。
Import設定の修正をしなければならない。
AccessでImportするExcelやCSVファイに項目名がない場合、Import先(テーブル)を設定せずにImportすると、Importするファイルの最初の行を設定しないと、Accessが勝手に項目名をフィールド1から認識した項目名の数だけ作成される。
可能であれば、項目を付けたファイルをImportした方が後々便利かも知れない。
また、AccessやExcelは最初の数行のデータ型を認識して、そのフィールドの型を判断する。
テキストファイルのデータ内容で、短いテキスト、長いテキスト、数値、日付にデータ型が割り振られる。
先に書いたが、最初の数行を読み込んでのデータ型の割り振りなので、後続のデータが型違いでエラーになる可能性もある。
Importという機能に慣れてくると、仮のImportをして、項目の設定やデータ型の設定をする様になる。
インポート機能で表示されるデータ表示で、文字化けが発生する場合がある。
Accessの文字コードがShift_JISになっているが、最近のウィンドウズのテキストフォーマットは、Unicodeとなっている。
文字化けがあった場合、設定で文字コードの設定をユニコードに変えれば、文字化けは修正される。
そして、その設定でImportできるように、Import時に設定でImport設定をImport定義として保存・登録できる。
そうすれば、ImportErrorが出にくいImport作業が可能になる。
因みに、このImport定義は別のAccessFileに移すことも可能である。
ImportErrorは重要なアラートでもある。
数年、運用してきたEUC(エンド・ユーザー・コンピューティング)Toolでも、ImportErrorが起きる事がある。
それは仕様の変更であったり、それに伴うデータの桁数とか型の変更だったりする。
そうした事も、ImportErrorというアラートが教えてくれるのだ。
VBAで大きなCSVファイルなどを複数、一期にImportすると、ImportErrorがでる場合がある。
原因は、Accessというソフトウェアのメモリ不足だ。
メモリ不足は思いがけないErrorを出す事があることを知っておくべきかも知れない。
VBAではDoEventsというコマンドでOSにメモリを戻すことで、ソフトウェアのメモリを再確保する方法がある。
Accessはデスクトップデータベースソフトウェアだ。
データが無ければ何も出来ない。
データを取り込むことがAccessでのEUC(エンド・ユーザー・コンピューティング)の一丁目一番地と言うことになる。

いいなと思ったら応援しよう!