|
|
 |
|
|
Delphi ile ADO Kullanımı Veri tabanlarına erişim için delphi üzerinden TTable ya da TQuery bileşenlerinden uzun zamandır faydalanmaktayız. Delphi 5 ile gelen ADO teknolojisi hali hazırda sadece Delphi’nin Enterprise edition tarafindan desteklenmektedir. Aşağıda anlatmaya çalışacağım yöntem sayesinde Delphi’nin ADO bileşenlerine ihtiyaç duymadan nasıl kullanılabileceği anlatılmaktadır. Ado’nun RecordSet objesinden faydalanarak veri tabanlarına erişebilmemiz mümkün, ancak bu iş için özellikle bir dll’den yararlanmamız gerekmekte. “msado15.dll”. Bu Dll bilgisayarınızın “C:\Program Files\Common Files\System\ado” yolunda bulunması gerekmektedir. Yazının sonunda size verilecek olan .zip uzantılı dosyada bu Dll dosyasına erişmenizi sağlayacak unit dosyası verilecektir. Tek yapmanız gereken şey bu unit dosyasını ” C:\Program Files\Borland\Delphi5\Lib” klasörüne kopyalamanızdır. Gelelim şimdi erişimin nasıl sağlanacağına. Aşagıda ki örnek program bir access veri tabanına OLE ve Variant tekniklerini kullanarak erişmemizi sağlamaktadır.
Kod: interface uses Windows, Messages, SysUtils,Classes, Graphics, Controls,Forms, Dialogs, StdCtrls, ComObj, Grids, ADODB_TLB,ExtCtrls; const SQLSTRING = ‘SELECT * FROM full_lex Where PHON='’bone”’; //Data Source’de belirtilen dosya program ile ayni klasörde bulunmakta, aksi helde yol tanimi yapmamiz gerekmektedir. DSN = ‘Provider=Microsoft.Jet.OLEDB.4.0;Data Source=full_lex.mdb’; type TForm1 = class(TForm) StringGrid1: TStringGrid; Panel1: TPanel; VariantBtn: TButton; OleBtn: TButton; UpdateBtn: TButton; Edit1: TEdit; procedure VariantBtnClick(Sender: TObject); procedure OleBtnClick(Sender: TObject); procedure UpdateBtnClick(Sender: TObject); procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean); private procedure Display(RecordSet: _RecordSet); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses ActiveX; {$R *.DFM} procedure TForm1.VariantBtnClick(Sender: TObject); var RecordSet: OleVariant; // Obje tanimlaniyor y, art: Integer; begin // Bos recordset objesini olustur: RecordSet := CreateOleObject(’ADODB.Recordset’); // recordset objesini doldur. RecordSet.Open(SQLSTRING, DSN); // verileri görüntüle Y := 1; repeat for art := 0 to 4 do StringGrid1.Cells[art, Y] := RecordSet.Fields[art].Value; //veri tabanindaki field sayisi RecordSet.Move(1); Inc(Y); until RecordSet.EOF; end; procedure TForm1.Display(RecordSet: _RecordSet); var Y,arti: Integer; begin Y := 1; repeat for art := 0 to 4 do //veri tabanindaki field sayisi StringGrid1.Cells[art, Y] := RecordSet.Fields[art].Value; RecordSet.Move(1, EmptyParam); Inc(Y); until RecordSet.EOF; end; procedure TForm1.OleBtnClick(Sender: TObject); var RecordSet: _RecordSet; // Obje tanimlaniyor begin // Bos recordset objesini olustur: OleCheck(CoCreateInstance(CLASS_RecordSet, nil, CLSCTX_ALL, IID__RecordSet, RecordSet)); // recordset objesini doldur. RecordSet.Open(SQLString, DSN, adOpenForwardOnly, adLockReadOnly, adCmdUnspecified); // verileri görüntüle Display(RecordSet); UpdateBtn.Enabled := True; end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin Edit1.Text := StringGrid1.Cells[ACOl, ARow]; end; end.
alıntıdır..
|