FireDACでCSVに接続する方法についてアドバイスを下さい。

354 views
Skip to first unread message

KSC

unread,
Feb 21, 2024, 10:08:25 PM2/21/24
to Japan RAD Studio User Group
こんにちは。

11.1+FireDACで社内で使用するDBアプリプログラムを作っています。

「SQL Server」「PostgreSQL」「Firebird」「Excel」への接続は何とか出来たのですが、
現在「CSV」への接続で困っています。

【準備】
 「ODBCデータソースアドミニストレーター」(64ビット)の「ユーザーDSN」に
 「Microsoft Access Text Driver(*.txt, *.csv)」で「CSVTXT Files」と言う名前でユーザーデータソースを追加。

FireDACのTFDConnrctionの接続エディタにおいて、下記のように設定したのですが、
接続エディタ.jpg
「Database」に操作したいCSVファイル名をフルパスで設定するのかと思っていたのですが、ファイルのパスを設定する事で、「FireDACエクスプローラ」では、接続成功してSQL文上でファイル名を「テーブル名」として指定する事でSQLは実行できたのですが、いざプログラムソースで同様にパスを設定して実行すると下記のようにエラーが発生しました。

【エラーメッセージ】
プロジェクト NewHanyouQuery.exe は例外クラス EODBCNativeException (メッセージ '[FireDAC][Phys][ODBC][Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。')を送出しました。

CSV接続にて「CSVファイル」はどのように設定すれば良いのでしょうか?

Hikaru Fukushi

unread,
Feb 22, 2024, 3:24:27 AM2/22/24
to radstu...@googlegroups.com
KSCさん、こんにちは。福士です。

手元の環境で試せない(Accessがない)ので当てずっぽうなのですが、
CSVファイルへは

CSVファイル
|
MS Access (Text driver)
|
ODBC
|
FireDAC
|
アプリケーション

という接続なんですよね?ODBC接続だとFDPhysODBCDriverLinkコンポーネントを
配置する必要があると思うんですが、どうでしょう?

その他FireDACのコンポーネントのどれを配置してどんなプロパティ設定に
なっているかがわかると、もうすこし意味のありそうなアドバイスができるかと。

---
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:fuk...@tts-inc.co.jp

KSC

unread,
Feb 22, 2024, 4:56:49 AM2/22/24
to Japan RAD Studio User Group
福士さん、こんにちは。KSCです。

アドバイスをありがとうございます。

「FDPhysODBCDriverLink」コンポーネントを配置しましたが同様の結果でした。

コンポーネントの配置と各プロパティ情報を添付ファイルとして送らせて頂きます。
他に設定情報があれば教えて頂けると助かります。

宜しくお願い致します。


2024年2月22日木曜日 17:24:27 UTC+9 Hikaru Fukushi:
設定情報.pdf

Hikaru Fukushi

unread,
Feb 22, 2024, 5:27:21 AM2/22/24
to radstu...@googlegroups.com
KSCさん、こんばんは。福士です。

> 「FDPhysODBCDriverLink」コンポーネントを配置しましたが同様の結果でした。

ダメでしたか。うーん。


DelphiのIDEのデータエクスプローラでは接続できているんですよね?
そうしたら、データエクスプローラでODBC Data Sourceの下にある
接続をそのままフォーム/データモジュール上にドラッグアンドドロップして、
それを使ったらどうですか?

再現のための最小限の構成として、

1.プロジェクトを新規作成
2.フォームにODBC Data Sourceの下に作った接続をドロップ(TFDConnection)
3.TFDConnectionのConnectedをTrueにする(接続できない場合はここでエラーに
なる)
4.TFDTableを配置してConnectionプロパティが↑のTFDConnectionになっている
ことを確認して、TableNameでCSVファイル名を指定
5.TFDTableのActiveをTrueに
6.TDataSourceを配置してDataSetプロパティに↑のTFDTableを指定
7.TDBGridを配置して、DataSourceに↑のTDataSourceを指定
8.DBGridにファイルの中身が表示されていることを確認
9.プロジェクトを保存して、Win32/Debugで実行
10.DBGridにデザイン時と同じように表示されることを確認

こんな風にしてみて、どこでうまくいかないか、その時のdfmファイルを
テキストで提示してみたら、なにかヒントがもらえるかもしれません。

KSC

unread,
Feb 22, 2024, 8:39:12 PM2/22/24
to Japan RAD Studio User Group
福士さん、おはようございます。KSCです。

アドバイスをありがとうございます。

> DelphiのIDEのデータエクスプローラでは接続できているんですよね?
はい。
TFDConnectionもドラッグアンドドロップしたものです。

> 3.TFDConnectionのConnectedをTrueにする(接続できない場合はここでエラーに
なる)
エラーは出ていません。

> 再現のための最小限の構成として、
TFDTableの代わりにTFDQueryに変えましたが、アドバイスで書いて頂いた通り構成にしてあります。

IDE上でActive=Trueにした状態ではエラーは発生しません。

で、ここまでアドバイスして頂いていて私の説明不足に気づきました。

現在、私は社内向けの「SQL Viewer」のようなツールを作成中です。

CSVファイルをIDE上のコンポーネントのプロパティで設定して表示させると言うよりは
下記の画面イメージの「ファイル名」で任意に指定したCSVファイルを「設定」ボタンを
押して、動的に「TFDConnection」に設定したいのです。
Tool.jpg
IDE上でActive=Trueにした状態ではエラーは発生しないと言う事は、
「設定」ボタンを押した時の「TFDConnection」に対する設定の仕方がまずかったと言う事ですね。

例.「C:\TEST\Data.csv」と言うファイル名を指定したとします。
「設定」ボタンを押した時のソースの一部抜粋(「TFDConnection」に対する設定の部分)
    Value := 'C:\TEST\Data.csv';
      if DM1.txtConnection.Connected then
        DM1.txtConnection.Connected := False;

      DM1.txtConnection.Params.Database := ExtractFilePath( Value );  // 指定したファイルのパスを設定。

      DM1.txtConnection.Connected := True; ← ここでエラー発生。

どのように設定する事で正しく設定されますでしょうか?
そもそも動的に設定する事は無理なのでしょうか?
2024年2月22日木曜日 19:27:21 UTC+9 Hikaru Fukushi:

Hikaru Fukushi

unread,
Feb 23, 2024, 2:11:48 AM2/23/24
to radstu...@googlegroups.com
KSCさん、こんにちは。福士です。

> TFDTableの代わりにTFDQueryに変えましたが、アドバイスで書いて頂いた通り構成にしてあります。

確認したいのですが、

> 再現のための最小限の構成として、

は最後(10.)までうまくいったのでしょうか?うまくいかないときは
問題を切り分ける意味でも、他の人に説明するためにも、再現のための
最小限の構成でうまく動くようにして、それを実際のプログラムに
反映する、ということが必要かと思います。

# 再現をしようと思って切り分けたらうまく動いて、実は関係ない部分が
# 問題だったり、逆に怪しいと思っていた部分がやはり本命だった、という
# こともありますから。それにソースを見せてください、ってなときに
# プログラムのコード全部を見せるわけにはいかない and 見せられても
# 困る、ということもありますし。


> 「設定」ボタンを押した時のソースの一部抜粋(「TFDConnection」に対する設定の部分)
> Value := 'C:\TEST\Data.csv';
> if DM1.txtConnection.Connected then
> DM1.txtConnection.Connected := False;
>
> DM1.txtConnection.Params.Database := ExtractFilePath( Value ); // 指定したファイルのパスを設定。
>
> DM1.txtConnection.Connected := True; ← ここでエラー発生。
>
> どのように設定する事で正しく設定されますでしょうか?

コードは基本的にこれでよいと思います。


> そもそも動的に設定する事は無理なのでしょうか?

そんなことはないと思います。IDE上でできているので。

設計時(うまく動いている)は、DelphiのIDE上でIDE→FireDAC→ODBC→
Access→CSVファイルときちんとつながっていて、実行時(いまのところ
うまく動いていない)は、プログラム→FireDAC→ODBC→Access→CSV
ファイルのどこかがうまくつなかっていない、ということかと思います
ので、どこがうまくないのかを順に調べていく、という方向で考えて
いく感じですね。


# 手元にMicrosoft Accessがあって実際に試せるかたからのアドバイスも
# ほしいところですね…

KSC

unread,
Feb 24, 2024, 9:06:07 PM2/24/24
to Japan RAD Studio User Group
福士さん、こんにちは。KSCです。

アドバイスをありがとうございます。

> は最後(10.)までうまくいったのでしょうか?うまくいかないときは
> 問題を切り分ける意味でも、他の人に説明するためにも、再現のための
> 最小限の構成でうまく動くようにして、それを実際のプログラムに
> 反映する、ということが必要かと思います。

すいません。変にスキップしてしましました。

教えて頂いた最小構成①~⑩を実行してみました。
・①~⑦までは問題なし。
・⑧で実行したい際にエラーが発生しました。
 error.jpg
 「プロジェクト NewHanyouQuery.exe は例外クラス EODBCNativeException (メッセージ '[FireDAC][Phys][ODBC][Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。')を送出しました。」

これはFireDACが「ODBC」のドライバー情報を認識できていないと言う事でしょうか?

確かにアプリ起動時にアプリ実行ファイルと同一フォルダ内に「FDConnectionDefs.ini」起動時に生成しています。

そのファイル内での設定情報が正しくないと言う事でしょうか?

【設定内容】
      lst.Add( '[CSVTXTFile]' );
      lst.Add( 'ODBCDriver={Microsoft Text Driver (*.txt; *.csv)}' );
      lst.Add( 'Database=' );
      lst.Add( 'User_Name=' );
      lst.Add( 'Password=' );
      lst.Add( 'DataSource=CSVTXT Files' );
      lst.Add( 'DriverID=ODBC' );

もし、上記の設定情報のミスの場合、どのような設定内容が正しいのでしょうか?
2024年2月23日金曜日 16:11:48 UTC+9 Hikaru Fukushi:

赤推

unread,
Feb 24, 2024, 10:15:24 PM2/24/24
to radstu...@googlegroups.com
KSCさん、こんにちは。赤推です。

エラーを出しているのはデバッグモードで実行しているアプリでしょうか?それ
ともリリースモードの32ビットあるいは64ビットのアプリでしょうか?
ODBCデータソースアドミニストレーターの設定は、32ビットと64ビットの両方を
やっておみえでしょうか?最初の質問に64ビットとあるのですが、IDE上は32ビ
ットの設定が必要になります。そのあたりは適切に設定されていますか?
64ビットアプリがターゲットで、IDEで開発・デバッグをするなら、両方のドラ
イバとデータソースが必要ですが、この問題はそういったことではないのでしょ
うか?

外していたら申し訳ありません。

赤推


>福士さん、こんにちは。KSCです。
>
>アドバイスをありがとうございます。
>
>> は最後(10.)までうまくいったのでしょうか?うまくいかないときは
>> 問題を切り分ける意味でも、他の人に説明するためにも、再現のための
>> 最小限の構成でうまく動くようにして、それを実際のプログラムに
>> 反映する、ということが必要かと思います。
>
>すいません。変にスキップしてしましました。
>
>教えて頂いた最小構成①~⑩を実行してみました。
>・①~⑦までは問題なし。
>・⑧で実行したい際にエラーが発生しました。
> [img:error.jpg]
>--
>このメールは Google グループのグループ「Japan RAD Studio User Group」に登録し
>ているユーザーに送られています。
>このグループから退会し、グループからのメールの配信を停止するには radstudio-jp
>+unsub...@googlegroups.com にメールを送信してください。
>このディスカッションをウェブ上で閲覧するには [a:https://groups.google.com/d/
>msgid/radstudio-jp/76077f1f-be65-492d-b13b-eb90fdf5301fn%40googlegroups.com?
>utm_medium=email&utm_source=footer]https://groups.google.com/d/msgid/
>radstudio-jp/76077f1f-be65-492d-b13b-eb90fdf5301fn%40googlegroups.com にアク
>セスしてください。

KSC

unread,
Feb 24, 2024, 11:57:12 PM2/24/24
to Japan RAD Studio User Group
赤推さん、こんにちは。KSCです。

アドバイスをありがとうございます。

> エラーを出しているのはデバッグモードで実行しているアプリでしょうか?それ
> ともリリースモードの32ビットあるいは64ビットのアプリでしょうか?

デバッグモードで64ビットのアプリです。
(尚、リリースモードで実行しても同様のエラーでした。)

> ODBCデータソースアドミニストレーターの設定は、32ビットと64ビットの両方を
> やっておみえでしょうか?最初の質問に64ビットとあるのですが、IDE上は32ビ
> ットの設定が必要になります。そのあたりは適切に設定されていますか?

gamen02.jpg
gamen01.jpg
32/64ビットの両方で設定できていると認識しています。

認識が間違っているようなら指摘して頂けると助かります。

2024年2月25日日曜日 12:15:24 UTC+9 赤推:

赤推

unread,
Feb 25, 2024, 12:49:10 AM2/25/24
to radstu...@googlegroups.com
KSCさん、こんにちは。赤推です。

>32/64ビットの両方で設定できていると認識しています。
私の心配は杞憂でした。失礼しました。
なにか思いついたらまた上げます。


赤推

>赤推さん、こんにちは。KSCです。
>
>アドバイスをありがとうございます。
>
>> エラーを出しているのはデバッグモードで実行しているアプリでしょうか?それ
>> ともリリースモードの32ビットあるいは64ビットのアプリでしょうか?
>
>デバッグモードで64ビットのアプリです。
>(尚、リリースモードで実行しても同様のエラーでした。)
>
>> ODBCデータソースアドミニストレーターの設定は、32ビットと64ビットの両方を
>> やっておみえでしょうか?最初の質問に64ビットとあるのですが、IDE上は32ビ
>> ットの設定が必要になります。そのあたりは適切に設定されていますか?
>
>[img:gamen02.jpg]
>[img:gamen01.jpg]
>> >msgid/radstudio-jp/76077f1f-be65-492d-b13b-eb90fdf5301fn%[a:http://
>> >40googlegroups.com]40googlegroups.com?
>> >utm_medium=email&utm_source=footer] https://groups.google.com/d/msgid/
>> >radstudio-jp/76077f1f-be65-492d-b13b-eb90fdf5301fn%[a:http://
>> >40googlegroups.com]40googlegroups.com にアク
>> >セスしてください。
>
>
>--
>このメールは Google グループのグループ「Japan RAD Studio User Group」に登録し
>ているユーザーに送られています。
>このグループから退会し、グループからのメールの配信を停止するには radstudio-jp
>+unsub...@googlegroups.com にメールを送信してください。
>このディスカッションをウェブ上で閲覧するには [a:https://groups.google.com/d/
>msgid/radstudio-jp/7882afb9-8c2e-4814-853c-3e452eaf43c3n%40googlegroups.com?
>utm_medium=email&utm_source=footer]https://groups.google.com/d/msgid/
>radstudio-jp/7882afb9-8c2e-4814-853c-3e452eaf43c3n%40googlegroups.com にアク
>セスしてください。

KSC

unread,
Feb 25, 2024, 10:43:25 PM2/25/24
to Japan RAD Studio User Group
赤推さん、こんにちは。KSCです。

> 私の心配は杞憂でした。失礼しました。

いえいえ。アドバイスして頂いた事に変わりありません。
ありがとうございます。

> なにか思いついたらまた上げます。

宜しくお願いします。
2024年2月25日日曜日 14:49:10 UTC+9 赤推:

KSC

unread,
Feb 26, 2024, 12:12:28 AM2/26/24
to Japan RAD Studio User Group
自己レスです。

福士さんに教えてもらった最小構成①~⑩だけのテストプログラムを作成した結果を報告します。

32ビットアプリとして実行した場合、デバック・リリース両モードで問題なく動作しました。

同一のプログラムで64ビットのプラットフォームを追加して実行すると質問させて頂いているエラーが発生しました。

64ビット版で実行する場合に何をすれば良いのでしょうか?

2024年2月26日月曜日 12:43:25 UTC+9 KSC:

Hikaru Fukushi

unread,
Feb 26, 2024, 2:14:27 AM2/26/24
to radstu...@googlegroups.com
KSCさん、こんにちは。福士です。

> 福士さんに教えてもらった最小構成①~⑩だけのテストプログラムを作成した結果を報告します。
> 32ビットアプリとして実行した場合、デバック・リリース両モードで問題なく動作しました。
> 同一のプログラムで64ビットのプラットフォームを追加して実行すると質問させて頂いているエラーが発生しました。
> 64ビット版で実行する場合に何をすれば良いのでしょうか?

なるほど。そうすると、32ビットではIDEも作ったプログラムも接続
できて、64ビットではうまくいかない、というところまで切り分けが
できた、ということですね。またODBCデータソースアドミニストレータの
ユーザDSNは32ビットも64ビットも設定できている、と。

で、こんなページがdocwikiにありました。

Microsoft Access データベースへの接続(FireDAC) - RAD Studio
https://docwiki.embarcadero.com/RADStudio/Alexandria/ja/Microsoft_Access_%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%EF%BC%88FireDAC%EF%BC%89

ここに、いくつか解決の糸口になりそうなポイントが書かれています。

> メモ: 別のアーキテクチャのランタイムが既にインストールされている
> ワークステーションに x86 または x64 Microsoft Access ランタイムを
> インストールするには、ランタイム インストーラのコマンド ラインで
> "/passive" を指定します。Delphi IDE は x86 アプリケーションであるため、
> x86 版の Access を開発用ワークステーションにインストールしなければ
> なりません。

> ドライバをリンクするには、以下のいずれかを行います。
> ・[ツール パレット]の[FireDAC Links]ページから TFDPhysMSAccessDriverLink コンポーネントをドロップします。
> ・uses 句に FireDAC.Phys.MSAcc ユニットを追加します。

このあたりを試してみてはいかがでしょう。

KSC

unread,
Feb 26, 2024, 10:09:40 PM2/26/24
to Japan RAD Studio User Group
自己レスです。

以前、 福士さんに頂いたアドバイスですが、

> メモ: 別のアーキテクチャのランタイムが既にインストールされている
> ワークステーションに x86 または x64 Microsoft Access ランタイムを
> インストールするには、ランタイム インストーラのコマンド ラインで
> "/passive" を指定します。Delphi IDE は x86 アプリケーションであるため、
> x86 版の Access を開発用ワークステーションにインストールしなければ
> なりません。

32/64bitの双方のランタイムのインストールを試みました。
Microsoft Access データベース エンジン 2016 再頒布可能コンポーネント
(32/64の両方をインストールする事が出来る「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント」は既に公開終了していた。
32bitと64bitの双方をインストールする際に"/passive"を指定して実行しようとしましたがインストールできなかったので、"/quiet"を指定して実行したらインストールできました。(たぶん)

下記がインストール後のODBCアドミニストレーターの画面です。
ODBC.jpg
尚、「CSVTXT Files」は一旦、削除し、再度、登録しました。

この状態で最小構成①~⑩だけを実装したテストプログラムを再コンパイルして実行した結果。
・32bitでは前回、同様に実行できました。
・64bitでは前回、同様にエラーが発生しました。
 error.jpg
 「プロジェクト Project1.exe は例外クラス EODBCNativeException (メッセージ '[FireDAC][Phys][ODBC][Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。')を送出しました。」

何がいけないのでしょうか?
2024年2月26日月曜日 16:14:27 UTC+9 Hikaru Fukushi:

梅澤智実

unread,
Feb 28, 2024, 6:44:56 AM2/28/24
to radstu...@googlegroups.com
こんにちは、梅澤と申します。

外している可能性が高いですが、一応書いてみます。

以下の2つがごっちゃになっている可能性はありませんか?
・Microsoft Text Driver
・Microsoft Access Text Driver

基本的に後者のもので話は進んでいると思うのですが、
以前のメールで以下のように前者を使っているような書込みがありましたので気になりました。


>【設定内容】
>       lst.Add( '[CSVTXTFile]' );
>       lst.Add( 'ODBCDriver={Microsoft Text Driver (*.txt; *.csv)}' );
>       lst.Add( 'Database=' );
>       lst.Add( 'User_Name=' );
>       lst.Add( 'Password=' );
>       lst.Add( 'DataSource=CSVTXT Files' );
>       lst.Add( 'DriverID=ODBC' );


ちなみに、検索で以下のような情報がありました。
(Delphiは関係無く、純粋にODBCでCSVファイルをどうするかという観点ですが)

前者のドライバーは、32bitでは動くが64bitではエラーになるような事が書かれています。

■ VBS ADO CSV のText Driver の64 bit Windows と32 Bit Windowsの違いと対応策
https://qiita.com/Q11Q/items/4220631d095599b4f127

■ 接続文字列一覧|OLEDB ODBC 32bit 64bitによって違います
https://access-skill.com/ado-connectionstring-list/#google_vignette

ただ、福士さんの提示された 1.~10. は動的設定は使わずにプロパティエディタ等で値を設定して
動かしたんですよね?

8.でエラーというのはDBGridへの接続、あるいはDBGridでの表示の時ということですよね。
うーん、なんでしょうね。
(動的に設定した時だけでなく、設計時に各種設定してもダメということですよね?)



※ 私はEntエディションではなく、Proエディションなので、FireDACのODBCプロバイダーがなくて
     近い環境で試せませんでした。
     ほとんど参考にはなりませんが、devart社のUniDACというコンポ、Delphi 10.4を使っていて一応、テストして
     みました。その環境では、問題なく32bit/64bitともに動きました。

    コンポが違うのであまり意味はありませんが、一応、ざっくりの設定を書いておきます。

    <ODBCデータソース アドミニストレータ (64 ビット)>
        ※ 以下のものは64bit側で作成するだけで、32bit側でも作成される。
              ・Microsoft Access Text Driver (*.txt, *.csv)を追加。名前をCSVTest2 とした。
              ・CSVTest2を[構成]ボタンを押して、[フォルダーの選択]で、CSVファイルの存在するフォルダを指示。

       ※ CSVファイルのファイル名はTEST.CSVとする

     <Delphi 10.4 (VCLアプリ)>
          1) 新規アプリを指示。とりあえず、ターゲットプラットフォームは32bitだけにしておく。
          2) フォームにTUniCounnectionをドロップ
          3) TUniConnectionのプロパティをオブジェクトインスペクタで設定
                  ProviderName: ODBC
                  Server: CSVTest2
          4) Connected プロパティをTrueに変えてみる → 問題なし。
              Falseに戻しておく
          5) フォームにTODBCUniProviderをドロップ
          6) フォームにTUniTableをドロップ
          7) TUniTable のConnectionプロパティが TUniConnection1であることを確認
          8) TUniTable のプロパティをオブジェクトインスペクタで設定
                 TableName: TEST.CSV  
          9) UniTable1.ActiveプロパティをTrueに変えてみる → 問題なし。
         10) フォームにTDataSourceをドロップ
         11) DataSource1.のプロパティを オブジェクトインスペクタで設定
                  DataSet:  UniTable1
         12) フォームにTDBGridをドロップ
         13) DBGrid1の プロパティを オブジェクトインスペクタで設定
                  DataSource: DataSource1  →  DBGrid内にCSVの内容が表示される。
         14) ビルド
         15) IDE内での実行 →  問題なし(この時点では32bit版)
         16) IDEでターゲットプラットフォームにWindows64bitを追加。64bitがカレントになっていることを確認
         17) ビルド
         18) IDE内での実行 →  問題なし(この時点では64bit版。タスクマネージャでみても64bit版として動いている)

以降、CSVファイル名を動的に設定するテスト(フォルダは、ODBCデータソースで設定したもの固定)

         19) オブジェクトインスペクタ で以下を設定
                     UniConnection1.ConnectedをFalseにする  →  DBGridが空になる
                     UniTabel1.TableNameを空にする
         20) フォームにTButtonをドロップ
         21) Button1のクリックイベントとして以下を設定。
         22) ビルド、実行→ DBGridにCSVの内容が表示される。

procedure TForm1.Button1Click(Sender: TObject);
begin
  UniTable1.TableName := 'TEST.CSV';

  UniConnection1.Connected := True;
  UniTable1.Active := True;
end;

以上です。

梅澤智実

unread,
Feb 28, 2024, 7:25:15 PM2/28/24
to radstu...@googlegroups.com
こんにちは、梅澤です。

DataSource, DBGridへの紐付けもコードでやってみたので、それも書いておきます。
こちらも問題ありませんでした。
(相変わらず、UniDACです。すみません)

7) までは同じ手順です。

<Delphi 10.4 (VCLアプリ)>
          1) 新規アプリを指示。とりあえず、ターゲットプラットフォームは32bitだけにしておく。
          2) フォームにTUniCounnectionをドロップ
          3) TUniConnectionのプロパティをオブジェクトインスペクタで設定
                  ProviderName: ODBC
                  Server: CSVTest2
          4) Connected プロパティをTrueに変えてみる → 問題なし。
              Falseに戻しておく
          5) フォームにTODBCUniProviderをドロップ
          6) フォームにTUniTableをドロップ
          7) TUniTable のConnectionプロパティが TUniConnection1であることを確認

          ---- ここまでは前回メールと同じ。ここ以降を変更 ----

          8) フォームにTDataSource, TDBGrid, TButtonをドロップ
          9) Button1のクリックイベントとして以下を設定。


procedure TForm1.Button1Click(Sender: TObject);
begin
  UniTable1.TableName := 'TEST.CSV';
  UniTable1.Active := True;

  DataSource1.DataSet := UniTable1;

  DBGrid1.DataSource := DataSource1;
end;

         10) ビルド
         11) IDE内での実行 →  問題なし(ボタンを押したら、グリッドに内容が表示される)
                               (この時点では32bit版)
         12) IDEでターゲットプラットフォームにWindows64bitを追加。64bitがカレントになっていることを確認
         13) ビルド
         14) IDE内での実行 →  問題なし(ボタンを押したら、グリッドに内容が表示される)
                              (この時点では64bit版。タスクマネージャでみても64bit版として動いている)
         15) Release版としてビルド
         16) 作成された64bit版Release exeを単独(IDEの外で)実行
                          → 問題なし(ボタンを押したら、グリッドに内容が表示される)

KSC

unread,
Mar 2, 2024, 9:01:26 PM3/2/24
to Japan RAD Studio User Group
梅澤さん、こんにちは。KSCです。

アドバイスをありがとうございます。

> ただ、福士さんの提示された 1.~10. は動的設定は使わずにプロパティエディタ等で値を設定して
> 動かしたんですよね?

> 8.でエラーというのはDBGridへの接続、あるいはDBGridでの表示の時ということですよね。
> うーん、なんでしょうね。
> (動的に設定した時だけでなく、設計時に各種設定してもダメということですよね?)

 1.~10. だけのテストプログラムを作り、「静的」でエラー発生せずに実行できたので、
その後、動的設定を追加したのですが「32bit」は正常に動作し、
「64bit」は「静的」も「動的」もエラー発生と言う状態です。

ただ以前のメールでランタイムのインストールを試しましたと書かせて頂きました。
- ここから -
32/64bitの双方のランタイムのインストールを試みました。
Microsoft Access データベース エンジン 2016 再頒布可能コンポーネント
(32/64の両方をインストールする事が出来る「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント」は既に公開終了していた。
32bitと64bitの双方をインストールする際に"/passive"を指定して実行しようとしましたがインストールできなかったので、"/quiet"を指定して実行したらインストールできました。(たぶん)
- ここまで -
導入の手続きがマズかったのか今まで動いていた基幹システム内でCSV出力の過程でエラーが発生するようになった為、
一旦、ランタイムはMicrosoft Access データベース エンジン 2016 再頒布可能コンポーネント」の64bitのみにしてあります。
尚、この状態で上記のテストプログラムの状態は「32bit=OK」「64bit=NG」と結果に変動はありません。

> 以下の2つがごっちゃになっている可能性はありませんか?
> ・Microsoft Text Driver
> ・Microsoft Access Text Driver

これも梅澤さんに指摘されているように上記を理解できていないにも関わらず不用意に行った結果と反省しています。

ですが、「CSV・TXT」の部分は32bitアプリとして作成し、本体アプリから起動するようにしようと思います。
(急遽、社内にて「CSV・TXT」読込と本体アプリとの連携が必要な案件が発生してしまったため

尚、梅澤さんから頂いた情報を見ながらテストは繰り返していこうと考えています。
2024年2月28日水曜日 20:44:56 UTC+9 梅澤智実:

KSC

unread,
Mar 15, 2024, 11:29:46 PM3/15/24
to Japan RAD Studio User Group
自己レスです。

> ですが、「CSV・TXT」の部分は32bitアプリとして作成し、本体アプリから起動するようにしようと思います。
> (急遽、社内にて「CSV・TXT」読込と本体アプリとの連携が必要な案件が発生してしまったため

「CSV・TXT」の部分を切り取った32bitアプリの作成が無事、終わりました。
本体の64bitアプリから起動できるようにして当面をしのごうと思います。
クリップボード01.jpg
また個別に、あだちさんからアドバイス頂いた「FDBatch」でのテキスト読込も試してみようと思います

アドバイスをして頂いた皆さん、ありがとうございました。
2024年3月3日日曜日 11:01:26 UTC+9 KSC:
Reply all
Reply to author
Forward
0 new messages