CSV読み込みODBCドライバー設定ではまる

 支援している多くの企業様では、Excelを活用して、様々な業務処理をこなしています。
そのような企業様の一つで、業見引き継ぎを依頼されました。Excelによる業務をそのまま引き継ぐことが最優先です。とは言え業務改善のプロセスに入ると、作成者の退職後にExcelを改善することは至難の業となります。そこで,事前対策として、ExcelをCSVファイルに変換して、データベース処理をすることにしました。その際、素直な処理体系を作成すると、Excelは、少し癖のあるCSVファイルを出力するので、うまく行かないこともあり、様々に気を遣う必要があります。例えば、セル内で改行してある場合、最後の行にデータの無いセルがある場合、半角スペースで区切られることがある……。そこで、今回は、癖の強いCSVファイル対策として、DelphiのDBGo(ADO)コンポーネントを使用して、ODBC接続を試みたところ、幾つかのトラブルを発生させてしまいました。

 Delphiをたちあげて、まず、フォームにDBGrid,DBNavigatorを貼り付けます。次にDataSourceを貼り付けます。
ここまでは、DBGo(ADO)コンポーネントを使用しなくても同様の処理になります。
ここで、DBGridとDBNavigatorのDataSourceプロパティに、双方ともに先ほどのDataSourceコンポーネントを指定します。

  ここで、DBGo(ADO)コンポーネントであるADOConnectionとADOQueryを貼り付けます。ADOConnectionのDatasetプロパティをADOQueryとします。さらに、SQLプロパティをSelect * from sample.csvとしました。
次いで、ADOConnectionのConnectionStringプロパティを設定していきます。
先ず、「接続文字列を使う」にチェックをいれて、ビルドを選択します。プロバイダーは「Microsoft OLE DB Provider for ODBC driver」を選択します。次に接続タブで、データーソース名を選択するで選べるのは、「dBASE・EXCEL・ACCESS」の3択です。取りあえず、EXCELを選びましたが、ADOConnectionのConnectedプロパティをTrueとするとエラー表示されます。データソースを変更してみても、エラーとなります。そこで、プロバイダーを様々に変更してみても、うまくいきません。半日以上を無駄に過ごすことになりました。

 色々調査を重ねるとACCESS Database Engineをインストールする必要があるようです。正式サイトからhttps://www.microsoft.com/ja-jp/download/details.aspx?id=13255
で、ACCESS2010のDatabaseEngineをインストールしてみました。
相変わらず、うまくいきません。(実際には、CSVファイル読み込みに、ACCESSDatabaseEngineは、不要でした。)
さらに調査を重ねると、個別にODBCセットアップをする必要があるようです。先ず、windows menu のそばにある検索迄にて、ODBCを検索します。するとODBCセットアップが表示されるので、クリックします。ODBCデーターソースアドミニストレーターで各種設定をします。ユーザー限定なら、ユーザーDSNタブを、システム全体に反映するならシステムDSNタブを選択します。他のPCで稼働する際は、ユーザーDSNタブを忘れずに設定します。DSNタブに表示されている追加をクリックします。すると様々な選択肢があるので、そこから「Microsoft Text Driver(*.txt,*.scv)」を選択します。さらなる設定はこちらのサイトを参考にしました。これで、事前準備が完了します。
 この際、重要なことは、システムデーターソース名を合わせることです。ただし、大文字と小文字との区別は不要です。

 この後に、ADOConnectionのConnectionStringプロパティを設定していきます。データーソース名に先ほど設定した、「Microsoft Text Driver(*.txt,*.scv)」用のデータース名が表示されているので、選択します。
これで、少し癖のあるExcelで出力した、CSVファイルの例外処理を記述する手間が省けます。
これで、Excel職人担当者の退職後も安心して、業務処理をできます。

 もし、Excel職人担当者の退職後の業務処理に不安を覚えたら是非ご相談ください
業務拡大でExce業務処理で時間が掛かりすぎて、なんとかしたいなら、Database化は、有効です。お問い合わせをお待ちしております
 

 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA