Delphi for Win32で、BDEを使用せずにネイティブな方法でdbfファイルを読み書きするにはどうすればよいですか?Webで利用できるコンポーネントがいくつかあることは知っていますが、それらを使用したことがないため、どれを選択すればよいかわかりません(ある場合)。
6 に答える
ADOを使用してDBFファイルにアクセスできます
サンプルコードを参照してください(TAdoConnection
およびTAdoDataSet
コンポーネントを使用)。
var
dbf_folder : string;
begin
dbf_folder:='c:\bdd';//set your dbf folder location here
ADOConnection1.LoginPrompt:=false;
ADOConnection1.ConnectionString:=Format('Provider=Microsoft.JET.OLEDB.4.0;Data Source=%s;Extended Properties=dBase IV;',[dbf_folder]);
try
ADOConnection1.Connected:=True;
ADODataSet1.CommandText:='Select * from file.dbf'; //make your SQL query using the name of the dbf file
ADODataSet1.Open;
while not ADODataSet1.eof do
begin
//do your stuff here
//ADODataSet1.FieldByName('').AsString
ADODataSet1.Next;
end;
except
on E : Exception do
ShowMessage(E.Message);
end;
end;
DBFファイル(一部のレガシーアプリ)をまだ使用していたときに、TDBFを使用していました。私は今でもあちこちでそれらのアプリのメンテナンスのためにそれを使用しています。それは無料で、多くの機能があり、うまく機能します。
Firebirdを使い始める前は、SoftwareScienceのTopazを何年も使用していました。それは常に優れた図書館であり、素晴らしいマニュアルと優れた技術サポートがありました。インデックスをサポートし、メモリ内オプションもあります。それは良い選択だと思います。
ADOは機能しませんでしたが、BDEを使用してdbfファイルを開くことができました。
データアクセス(またはBDE、Delphiのバージョンによって異なります)セクションから、TDataBaseおよびTTableコンポーネントを配置しました(必要に応じてTQueryを使用できます)。
TDataBaseコンポーネントをダブルクリックして、セットアップダイアログを開きました。[名前]フィールドに「db_name」(名前は任意)、ドライバー名=「STANDARD」、パラメーターフィールド:「PATH = C:\ Path \ To \DBF_FILES\」を入力しました。次に、Connected=Trueを設定します。
次に、TTableコンポーネントでDatabaseName='db_name'を設定します。これはTDataBaseコンポーネントで設定したものです。そして、TableNameプロパティは指定されたフォルダにある'DB_FILE.dbf'を設定しました。アクティブ=真。
あなたは次に何をすべきか知っています
インデックスが必要ない場合は、DBFファイルを読み取るのは難しくありません。形式は非常に単純です。固定サイズのレジスタの後に続くヘッダー。各レジスタには、削除されたかどうかを示すフラグがあります。私はあなたが望むことをするコンポーネントを探すことを提案します。TorryのDelphiページでいくつか見つけることができます。