掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
access操作したい (ID:11341)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以前作った、ADO接続のクラスです。 SQL Server用なので、AccessのProviderに直してください。 #例外処理を大幅にわざと削ってあります。 テストフォームは TEdit x 4 TMemo x 2 TDBGrid x 1 TButton x 4 割り当てはソース参照(ぉ ----- unit Unit2; interface uses SysUtils, ADODB; type TDB = class private { Private 宣言 } FProvider: STring; FConn: TADOConnection; FQuery: TADOQuery; //Provider生成用 FDBServer: String; FDBName: String; FUserName: String; FPassword: String; function GetStates: TObjectStates; public { Public 宣言 } property Provider: String read FProvider; property States: TObjectStates read GetStates; constructor Create(); destructor Destroy; override; procedure BeginTrans; procedure RollbackTrans; procedure CommitTrans; procedure Execute(SQL: String); function Select(SQL: String): TADOQuery; function Connect: Boolean; procedure Close; //Provider生成用 property DBServer: String read FDBServer write FDBServer; property DBName: String read FDBName write FDBName; property UserName: String read FUserName write FUserName; property Password: String read FPassword write FPassword; end; implementation { TDB } constructor TDB.Create(); begin //宣言 FConn := TADOConnection.Create(nil); FQuery := TADOQuery.Create(nil); end; function TDB.Connect: Boolean; begin //初期値 result := False; //FProvider FProvider := Format('Provider=SQLOLEDB.1; Persist Security Info=True; ' + 'Data Source=%s; Initial Catalog=%s;' + 'User ID=%s; Password=%s', [FDBServer, FDBName, FUserName, FPassword]); FConn.ConnectionString := FProvider; //DB接続 try self.Close; FConn.LoginPrompt := False; FConn.Open();//Option.UserName, Option.Password); FQuery.Connection := FConn; result := true; except on E:Exception do raise; end; end; destructor TDB.Destroy; begin FQuery.Close; FQuery.Free; Self.Close; FConn.Free; inherited Destroy; end; procedure TDB.BeginTrans; begin FConn.BeginTrans; end; procedure TDB.CommitTrans; begin FConn.CommitTrans; end; procedure TDB.Execute(SQL: String); begin FConn.Execute(SQL); end; procedure TDB.RollbackTrans; begin FConn.RollbackTrans; end; function TDB.GetStates: TObjectStates; begin result := FConn.State; end; function TDB.Select(SQL: String): TADOQuery; begin if FQuery.Active then FQuery.Active := False; FQuery.SQL.Text := SQL; FQuery.Active := True; result := FQuery; end; procedure TDB.Close; begin if FConn.State = [stOpen] then FConn.Close; end; end. ---テスト procedure TForm1.FormCreate(Sender: TObject); begin FDB := TDB.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FDB.Free; end; procedure TForm1.Button3Click(Sender: TObject); begin FDB.DBServer := Edit1.Text; FDB.DBName := Edit2.Text; FDB.UserName := Edit3.Text; FDB.Password := Edit4.Text; if FDB.Connect then ShowMessage('接続'); end; procedure TForm1.Button1Click(Sender: TObject); var tmpQuery: TADOQuery; tmpDataSource: TDataSource; begin tmpQuery := FDB.Select(Memo1.Text); tmpDataSource := TDataSource.Create(self); tmpDataSource.DataSet := tmpQuery; DBGrid1.DataSource := tmpDataSource; end; procedure TForm1.Button4Click(Sender: TObject); begin FDB.Close; end; procedure TForm1.Button2Click(Sender: TObject); begin FDB.Execute(Memo2.Text); end; -----
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.