Delphi Programming / Object Pascal
[掲載 2012年08月28日] [更新 2012年08月28日] Delphi サンプルプログラム集 |
569_ADO による dBASE データベース接続 |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro |
|
569_ADO_dBASE.zip [843 KB] 2012年08月28日版 (EXE 同梱) |
[dbGo] タブにある ADO 関係のコンポーネントを使用して,dBASE に接続する例です.
ADO 関係のコンポーネントを使用すると,[568_ADO による Paradox データベース接続] の図にあるように,接続文字列のプロバイダに Microsoft.Jet.OLEDB.4.0 を指定した接続ができます. |
以下は,サンプルプログラム集の ADO 関係の記事へのリンクです. |
|
図1
設計時画面
|
|
図2
実行画面
|
リスト1
ADO による dBASE データベース接続 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
Panel1: TPanel;
Button1: TButton;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
uses ShlObj;
{$R *.dfm}
//=============================================================================
// フォーム生成時の処理
// 配置コントロールは全てデフォルトのままなので,全てコードで設定
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Connected := False;
ADOConnection1.LoginPrompt := False;
ADOQuery1.Connection := ADOConnection1;
DataSource1.DataSet := ADOQuery1;
DBGrid1.DataSource := DataSource1;
end;
//=============================================================================
// フォームを閉じる時の処理
//=============================================================================
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
ADOQuery1.Close;
ADOConnection1.Connected := False;
end;
//=============================================================================
// ADOの接続文字列を作成して接続
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
//---------------------------------------------------------------------------
// 特殊フォルダのフルパスを取得する関数
// usesにShlObjが必要
//---------------------------------------------------------------------------
function GetSpecialFolderPath(IntCSIDL: Integer): String;
var
Buff : array[0..MAX_PATH] of Char;
begin
FillChar(Buff, SizeOf(Buff), #0);
SHGetSpecialFolderPath(0, Buff, IntCSIDL, False);
Result := String(Buff);
end;
//---------------------------------------------------------------------------
var
StrDBFile : String;
StrConnect : String;
begin
ADOQuery1.Close;
//dBASEデータベース(dBASEではフォルダがデータベース)の場所
//Delphi をデフォルトでインストールした場合は CodeGear Shared\Data または
//Borland Shared\Data にある
StrDBFile := GetSpecialFolderPath(CSIDL_PROGRAM_FILES_COMMON);
StrDBFile := IncludeTrailingPathDelimiter(StrDBFile) + 'CodeGear Shared\Data';
StrConnect := '';
//プロバイダ(当サイトのADO関係サンプルは全てJETプロバイダ
StrConnect := StrConnect + 'Provider=Microsoft.Jet.OLEDB.4.0;';
StrConnect := StrConnect + 'Data Source=' + StrDBFile + ';';
//User ID と Password は,デフォルトではなくてもOK
StrConnect := StrConnect + 'User ID=Admin;';
StrConnect := StrConnect + 'Jet OLEDB:Database Password="";';
//dBASE III または dBASE IV または dBASE 5.0
StrConnect := StrConnect + 'Extended Properties="dBASE 5.0";';
//接続文字列
ADOConnection1.ConnectionString := StrConnect;
ADOQuery1.ConnectionString := ADOConnection1.ConnectionString;
//表名を指定して接続
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from holdings.dbf');
ADOQuery1.Open;
end;
end.
|