Recent Posts
Selamat datang di Coding Delphi Land Weblog kumpulan source code pemogram delphi
(Bukan maksud untuk menggurui tetapi marilah kita berbagi ilmu tuk perkembangan kemajuan teknologi kita
Tampilkan postingan dengan label Database Programming. Tampilkan semua postingan
Tampilkan postingan dengan label Database Programming. Tampilkan semua postingan
Selasa, 17 November 2009
Read Acces Using Ado
unit uMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, Buttons;
type
TfrmMain = class(TForm)
DSUsers: TDataSource;
DBGridUsers: TDBGrid;
BitBtn1: TBitBtn;
OpenDialog1: TOpenDialog;
TUsers: TADOTable;
procedure FormCreate(Sender: TObject);
procedure ValidateAccessDB;
function CheckIfAccessDB(lDBPathName: string): boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
const
DBNAME = 'ADODemo.MDB';
DBPASSWORD = '123'; // Access DB Password Protected
implementation
{$R *.DFM}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
validateAccessDB;
end;
procedure TfrmMain.ValidateAccessDB;
var
lDBpathName : String;
lDBcheck : boolean;
begin
if FileExists(ExtractFileDir(Application.ExeName) + '\' + DBNAME) then
lDBPathName := ExtractFileDir(Application.ExeName) + '\' + DBNAME
else if OpenDialog1.Execute then
// Set the OpenDialog Filter for ADOdemo.mdb only
lDBPathName := OpenDialog1.FileName;
lDBCheck := False;
if Trim(lDBPathName) <> '' then
lDBCheck := CheckIfAccessDB(lDBPathName);
if lDBCheck = True then
begin
// ADO Connection String to the MS-ACCESS DB
TUsers.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' + lDBPathName + ';' +
'Persist Security Info=False;' +
'Jet OLEDB:Database Password=' + DBPASSWORD;
TUsers.TableName := 'Users';
TUsers.Active := True;
end
else
frmMain.Free;
end;
// Check if it is a valid ACCESS DB File Before opening it.
function TfrmMain.CheckIfAccessDB(lDBPathName: string): Boolean;
var
UnTypedFile: file of byte;
Buffer: array[0..19] of byte;
NumRecsRead: Integer;
i: Integer;
MyString: string;
begin
AssignFile(UnTypedFile, lDBPathName);
reset(UnTypedFile);
BlockRead(UnTypedFile, Buffer, High(Buffer), NumRecsRead);
CloseFile(UnTypedFile);
for i := 1 to High(Buffer) do
MyString := MyString + Trim(Chr(Ord(Buffer[i])));
Result := False;
if Mystring = 'StandardJetDB' then
Result := True;
if Result = False then
MessageDlg('Invalid Access Database', mtInformation, [mbOK], 0);
end;
end.
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, Buttons;
type
TfrmMain = class(TForm)
DSUsers: TDataSource;
DBGridUsers: TDBGrid;
BitBtn1: TBitBtn;
OpenDialog1: TOpenDialog;
TUsers: TADOTable;
procedure FormCreate(Sender: TObject);
procedure ValidateAccessDB;
function CheckIfAccessDB(lDBPathName: string): boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
const
DBNAME = 'ADODemo.MDB';
DBPASSWORD = '123'; // Access DB Password Protected
implementation
{$R *.DFM}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
validateAccessDB;
end;
procedure TfrmMain.ValidateAccessDB;
var
lDBpathName : String;
lDBcheck : boolean;
begin
if FileExists(ExtractFileDir(Application.ExeName) + '\' + DBNAME) then
lDBPathName := ExtractFileDir(Application.ExeName) + '\' + DBNAME
else if OpenDialog1.Execute then
// Set the OpenDialog Filter for ADOdemo.mdb only
lDBPathName := OpenDialog1.FileName;
lDBCheck := False;
if Trim(lDBPathName) <> '' then
lDBCheck := CheckIfAccessDB(lDBPathName);
if lDBCheck = True then
begin
// ADO Connection String to the MS-ACCESS DB
TUsers.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' + lDBPathName + ';' +
'Persist Security Info=False;' +
'Jet OLEDB:Database Password=' + DBPASSWORD;
TUsers.TableName := 'Users';
TUsers.Active := True;
end
else
frmMain.Free;
end;
// Check if it is a valid ACCESS DB File Before opening it.
function TfrmMain.CheckIfAccessDB(lDBPathName: string): Boolean;
var
UnTypedFile: file of byte;
Buffer: array[0..19] of byte;
NumRecsRead: Integer;
i: Integer;
MyString: string;
begin
AssignFile(UnTypedFile, lDBPathName);
reset(UnTypedFile);
BlockRead(UnTypedFile, Buffer, High(Buffer), NumRecsRead);
CloseFile(UnTypedFile);
for i := 1 to High(Buffer) do
MyString := MyString + Trim(Chr(Ord(Buffer[i])));
Result := False;
if Mystring = 'StandardJetDB' then
Result := True;
if Result = False then
MessageDlg('Invalid Access Database', mtInformation, [mbOK], 0);
end;
end.
Login
unit login;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;
type
TfrmLogin = class(TForm)
btnCancel: TButton;
pnLogin: TGroupBox;
edtHost: TEdit;
edtDatabase: TEdit;
edtLogin: TEdit;
edtPassword: TEdit;
lblHost: TLabel;
lblDatabase: TLabel;
lblPassword: TLabel;
lblLogin: TLabel;
edtPort: TEdit;
lblPort: TLabel;
btnOk: TButton;
cbxType: TComboBox;
lblType: TLabel;
cbRemember: TCheckBox;
procedure FormShow(Sender: TObject);
procedure cbxTypeChange(Sender: TObject);
procedure btnOkClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmLogin: TfrmLogin;
implementation
uses main, ZSqlScript, ZSqlTypes;
{$R *.DFM}
{ On form show event }
procedure TfrmLogin.FormShow(Sender: TObject);
begin
cbxType.ItemIndex := Ord(frmMain.DatabaseType);
cbxTypeChange(Self);
cbRemember.Checked:=frmMain.RememberPassword;
if edtHost.Text = '' then
ActiveControl := edtHost
else if edtPort.Text = '' then
ActiveControl := edtPort
else if edtDataBase.Text = '' then
ActiveControl := edtDataBase
else if edtLogin.Text = '' then
ActiveControl := edtLogin
else
ActiveControl := edtPassword;
end;
{ When Database Type Change }
procedure TfrmLogin.cbxTypeChange(Sender: TObject);
begin
case cbxType.ItemIndex of
0: begin
edtHost.Text := frmMain.MySqlHost;
edtDatabase.Text := frmMain.MySqlDatabase;
edtPort.Text := IntToStr(frmMain.MySqlPort);
edtLogin.Text := frmMain.MySqlLogin;
if frmMain.RememberPassword then
edtPassword.Text := frmMain.MySQLPassword;
end;
1: begin
edtHost.Text := frmMain.PgSqlHost;
edtDatabase.Text := frmMain.PgSqlDatabase;
edtPort.Text := IntToStr(frmMain.PgSqlPort);
edtLogin.Text := frmMain.PgSqlLogin;
if frmMain.RememberPassword then
edtPassword.Text := frmMain.PgSQLPassword;
end;
2: begin
edtHost.Text := frmMain.IbSqlHost;
edtDatabase.Text := frmMain.IbSqlDatabase;
edtPort.Text := '0';
edtLogin.Text := frmMain.IbSqlLogin;
if frmMain.RememberPassword then
edtPassword.Text := frmMain.IbSqlPassword;
end;
3: begin
edtHost.Text := frmMain.MsSqlHost;
edtDatabase.Text := frmMain.MsSqlDatabase;
edtPort.Text := '0';
edtLogin.Text := frmMain.MsSqlLogin;
if frmMain.RememberPassword then
edtPassword.Text := frmMain.MsSqlPassword;
end;
end;
edtPort.Enabled := (cbxType.ItemIndex <>end;
{ When apply updates }
procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
case cbxType.ItemIndex of
0: begin
frmMain.MySqlHost := edtHost.Text;
frmMain.MySqlDatabase := edtDatabase.Text;
frmMain.MySqlPort := StrToIntDef(edtPort.Text, 0);
frmMain.MySqlLogin := edtLogin.Text;
frmMain.MySqlPassword := edtPassword.Text;
end;
1: begin
frmMain.PgSqlHost := edtHost.Text;
frmMain.PgSqlDatabase := edtDatabase.Text;
frmMain.PgSqlPort := StrToIntDef(edtPort.Text, 0);
frmMain.PgSqlLogin := edtLogin.Text;
frmMain.PgSqlPassword := edtPassword.Text;
end;
2: begin
frmMain.IbSqlHost := edtHost.Text;
frmMain.IbSqlDatabase := edtDatabase.Text;
frmMain.IbSqlLogin := edtLogin.Text;
frmMain.IbSqlPassword := edtPassword.Text;
end;
3: begin
frmMain.MsSqlHost := edtHost.Text;
frmMain.MsSqlDatabase := edtDatabase.Text;
frmMain.MsSqlLogin := edtLogin.Text;
frmMain.MsSqlPassword := edtPassword.Text;
end;
end;
frmMain.DatabaseType := TDatabaseType(cbxType.ItemIndex);
frmMain.RememberPassword := cbRemember.Checked;
frmMain.SaveOptions;
end;
end.
Senin, 16 November 2009
Mewarnai Colom Yang Dipilih pada DBGrid
procedure TDBGridForm.DBGrid1DrawColumnCell(
Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumn;
State: TGridDrawState) ;
begin
if NOT DBGrid1.Focused then
begin
if (gdSelected in State) then
begin
with DBGrid1.Canvas do
begin
Brush.Color := clHighlight;
Font.Style := Font.Style + [fsBold];
Font.Color := clHighlightText;
end;
end;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end;
Warna Colom Pada DBGrid
procedure TGridForm.DBGridDrawColumnCell(
Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumn;
State: TGridDrawState) ;
var
grid : TDBGrid;
row : integer;
begin
grid := sender as TDBGrid;
row := grid.DataSource.DataSet.RecNo;
if Odd(row) then
grid.Canvas.Brush.Color := clSilver
else
grid.Canvas.Brush.Color := clDkGray;
grid.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end; (* DBGrid OnDrawColumnCell *)
Warna Cel Pada DBGrid
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Table1.FieldByName(nama field table').AsCurrency>40000 then
begin
DBGrid1.Canvas.Font.Color:=clWhite;
DBGrid1.Canvas.Brush.Color:=clBlack;
end;
if DataCol = 4 then //4 th column is 'Salary'
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
Warna Baris Pada DBgrid
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Table1.FieldByName(Nama field table).AsCurrency>36000 then
DBGrid1.Canvas.Font.Color:=clMaroon;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
Minggu, 15 November 2009
DBgrid to StringGrid
procedure Tform1.dbgirdtostring(db:tdbgrid;str:tstringgrid) ;
var tdb : tdataset;
a,b : integer;
begin
tdb := db.DataSource.DataSet;
if tdb.Filtered then
tdbFindFirst
else
tdb.First;
b:=0;
str.rowcount :=1;
str.fixedcols:=0;
str.ColCount:= db.Columns.Count;
for a:=0 to db.Columns.Count-1 do
begin
str.Cells[a,0]:= db.Columns.Items[a].FieldName;
end;
while not ta.Eof do
begin
b:=b+1;
str.RowCount:=str.RowCount+1;
for i:=0 to db.Columns.Count-1 do
str.Cells[a,b]:=db.Columns.Grid.Fields[a].AsString;
tdb.Next;
end;
if str.RowCount>1 then str.FixedRows:=1
end;
Export Database To Excel pada Delphi
Uses .........,excel97;
var
Form1: TForm1;
excel : variant;
excel1 : variant;
procedure Tform1.dbgirdtostring(db:tdbgrid;str:tstringgrid) ;
var ta : tdataset;
i,j : integer;
begin
ta := db.DataSource.DataSet;
if ta.Filtered then
ta.FindFirst
else
ta.First;
j:=0;
str.rowcount :=1;
str.fixedcols:=0;
str.ColCount:= db.Columns.Count;
for i:=0 to db.Columns.Count-1 do
begin
str.Cells[i,0]:= db.Columns.Items[i].FieldName;
end;
while not ta.Eof do
begin
j:=j+1;
str.RowCount:=str.RowCount+1;
for i:=0 to db.Columns.Count-1 do
str.Cells[i,j]:=db.Columns.Grid.Fields[i].AsString;
ta.Next;
end;
if str.RowCount>1 then str.FixedRows:=1
end;
procedure TForm1.exporttoexcel;
var i,j,jums,jumlahdata: integer;
proy, model : string;
begin
adoquery1.Active := false;
adoquery1.SQL.Clear;
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * '+'from table1');
ExecSQL;
Open;
end;
Excel := CreateOleObject('Excel.Application');
excel.workbooks.Open(File Excel); // file excel contoh : c:\\coba.xls
excel.Visible := true;
dbgirdtostring(DBGrid1, StringGrid1);
jumlahdata := adoquery1.RecordCount;
for i := 0 to jumlahdata+1 do
begin
for j := 1 to 9 do
begin
excel.activesheet.Cells[i + 2, 5].Value := StringGrid5.Cells[1, i+1];
end;
end;
end;
Creating Reports with Delphi and ADO
procedure TForm1.rsysPrint(Sender: TObject);
begin
with Sender as TBaseReport do begin
SetFont('Arial', 15);
NewLine;
SetFont('Arial',18);
FontColor := clRed;
Print('Welcome to Code Based Reporting in Rave');
NewLine;
NewLine;
ClearTabs;
SetTab(0.2, pjLeft, 0.4, 0, 0, 0);
SetTab(0.4, pjRight, 2.1, 0, 0, 0);
SetTab(2.1, pjRight, 3.0, 0, 0, 0);
SetTab(3.0, pjRight, 4.0, 0, 0, 0);
SetFont('Arial', 10);
Bold := True;
PrintTab('Name');
PrintTab('Surname');
PrintTab('Age');
PrintTab('Occupation');
Bold := False;
NewLine;
q1.Open;
q1.first;
while not q1.Eof do begin
Printtab(q1.FieldByName('name').Text);
Printtab(q1.FieldByName('surname').Text);
Printtab(q1.FieldByName('age').Text);
Printtab(q1.FieldByName('occupation').Text);
newline;
q1.Next;
if (LinesLeft <>
NewPage;
end;
if q1.Eof then begin
q1.ClearFields;
end;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
q1.Close;
q1.SQL.Add(memo1.lines.text);
q1.Parameters.ParamByName('sname').value:=edit1.Text;
q1.Open;
RSys.Execute;
end;
Membuka File MS Excel pada Delphi
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,comobj, Grids, ComCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
StringGrid1: TStringGrid;
Label1: TLabel;
Edit1: TEdit;
UpDown1: TUpDown;
Label2: TLabel;
Label3: TLabel;
Bevel1: TBevel;
BitBtn1: TBitBtn;
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure sh1(SheetIndex:integer);
Var
Xlapp1, Sheet:Variant ;
MaxRow, MaxCol,X, Y:integer ;
str:string;
begin
Str:=trim(form1.OpenDialog1.FileName);
XLApp1 := createoleobject('excel.application'); //Microsoft Excel 4.0 worksheet (*.xls)
XLApp1.Workbooks.open(Str) ;
form1.UpDown1.Max:=strtoint(XLApp1.WorkSheets.count);
form1.Label3.Caption:= XLApp1.WorkSheets.count;
Sheet := XLApp1.WorkSheets[SheetIndex] ;
MaxRow := Sheet.Usedrange.EntireRow.count ;
MaxCol := sheet.Usedrange.EntireColumn.count;
form1.StringGrid1.RowCount:=maxRow+1;
form1.StringGrid1.ColCount:=maxCol+1;
for x:=1 to maxCol do
for y:=1 to maxRow do
form1.stringgrid1.Cells[x,y]:=sheet.cells.item[y,x].value;
XLApp1.Workbooks.close;
end;
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
sh1(strtoint(edit1.Text));
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
stringgrid1.Visible:=true;
edit1.Enabled:=true;
edit1.Text:='1';
label1.Enabled:=true;
label2.Enabled:=true;
label3.Enabled:=true;
updown1.Enabled:=true;
sh1(1);
end;
end;
end.
Copy Table Database
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst, DB, ADODB, ComCtrls;
type
TfrmMain = class(TForm)
txtFrom: TEdit;
lblFrom: TLabel;
clbTableList: TCheckListBox;
txtTo: TEdit;
lblTo: TLabel;
btnFrom: TButton;
btnTo: TButton;
opendlgFrom: TOpenDialog;
opendlgTo: TOpenDialog;
dbFrom: TADOConnection;
dbTo: TADOConnection;
qryFrom: TADOQuery;
btnProcess: TButton;
tblInsert: TADOTable;
pbProcess: TProgressBar;
btnSelectAll: TButton;
btnDiselectAll: TButton;
memoProcess: TMemo;
procedure btnFromClick(Sender: TObject);
procedure btnToClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnProcessClick(Sender: TObject);
procedure btnSelectAllClick(Sender: TObject);
procedure btnDiselectAllClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnDiselectAllClick(Sender: TObject);
var
x:integer;
begin
for x:=0 to clbTableList.Items.Count-1 do
clbTableList.Checked[x] := False;
end;
procedure TfrmMain.btnFromClick(Sender: TObject);
begin
if opendlgFrom.Execute then
begin
txtFrom.Text := opendlgFrom.FileName;
//set connection to database
dbFrom.Close;
dbFrom.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+
txtFrom.Text +';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";'+
'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";'+
'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;'+
'Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;'+
'Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;'+
'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;'+
'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
dbFrom.Open;
//Read table inside database and put in clbTableList
clbTableList.Clear;
dbFrom.GetTableNames(clbTableList.Items,false);
end;
end;
procedure TfrmMain.btnProcessClick(Sender: TObject);
var
tableListRecord,QryFromRecord,tblInsertRecord:integer;
begin
memoProcess.Clear;
for tableListRecord:=0 to clbTableList.Items.Count-1 do
begin
if clbTableList.Checked[tableListRecord] then
begin
QryFrom.Close;
QryFrom.SQL.Text := 'SELECT * FROM '+clbTableList.Items.Strings[tableListRecord];
QryFrom.Open;
tblInsert.Close;
tblInsert.TableName := clbTableList.Items.Strings[tableListRecord];
tblInsert.Open;
pbProcess.Max := QryFrom.RecordCount;
QryFrom.First;
for QryFromRecord:=1 to QryFrom.RecordCount do
begin
pbProcess.Position := QryFromRecord;
tblInsert.Append;
for tblInsertRecord:= 1 to tblInsert.Fields.Count do
begin
tblInsert.Fields[tblInsertRecord-1].AsString:=QryFrom.Fields[tblInsertRecord-1].AsString;
end;
tblInsert.Post;
QryFrom.Next;
application.ProcessMessages;
end;
clbTableList.Checked[tableListRecord]:=False;
memoProcess.Lines.Text := 'Done - '+ tblInsert.TableName +' ( '+ inttostr(tblInsert.Fields.Count)+' Row )';
end;
end;
showmessage('Proses Completed');
pbProcess.Position :=0;
end;
procedure TfrmMain.btnSelectAllClick(Sender: TObject);
var
x:integer;
begin
for x:=0 to clbTableList.Items.Count-1 do
clbTableList.Checked[x] := True;
end;
procedure TfrmMain.btnToClick(Sender: TObject);
begin
if opendlgTo.Execute then
begin
txtTo.Text := opendlgTo.FileName;
//set connection to database
dbTo.Close;
dbTo.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+
txtTo.Text +';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";'+
'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";'+
'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;'+
'Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;'+
'Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;'+
'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;'+
'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
dbTo.Open;
end;
end;
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dbFrom.Close;
dbTo.Close;
end;
end.
Add field to table at runtime
procedure TForm1.Button1Click(Sender: TObject);
var
Field: TField;
i: Integer;
begin
Table1.Active:=False;
for i:=0 to Table1.FieldDefs.Count-1 do
Field:=Table1.FieldDefs[i].CreateField(Table1);
Field:=TStringField.Create(Table1);
with Field do
begin
FieldName:='New Field';
Calculated:=True;
DataSet:=Table1;
end;
Table1.Active:=True;
end;
var
Field: TField;
i: Integer;
begin
Table1.Active:=False;
for i:=0 to Table1.FieldDefs.Count-1 do
Field:=Table1.FieldDefs[i].CreateField(Table1);
Field:=TStringField.Create(Table1);
with Field do
begin
FieldName:='New Field';
Calculated:=True;
DataSet:=Table1;
end;
Table1.Active:=True;
end;
Memilih Data Secara Random
procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
Table1.First;
Table1.MoveBy(Random(Table1.RecordCount));
end;
begin
Randomize;
Table1.First;
Table1.MoveBy(Random(Table1.RecordCount));
end;
Memilih Field Pada TDBgrid
function GridSelectAll(Grid: TDBGrid): Longint;
begin
Result := 0;
Grid.SelectedRows.Clear;
with Grid.DataSource.DataSet do
begin
First;
DisableControls;
try
while not EOF do
begin
Grid.SelectedRows.CurrentRowSelected := True;
Inc(Result);
Next;
end;
finally
EnableControls;
end;
end;
end;
begin
Result := 0;
Grid.SelectedRows.Clear;
with Grid.DataSource.DataSet do
begin
First;
DisableControls;
try
while not EOF do
begin
Grid.SelectedRows.CurrentRowSelected := True;
Inc(Result);
Next;
end;
finally
EnableControls;
end;
end;
end;
Coloring TDBGrid
procedure TForm1.ColorGrid(dbgIn: TDBGrid; qryIn: TQuery; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
iValue: LongInt;
begin
if (DataCol = 0) then
begin
iValue := qryIn.FieldByName('HINWEIS_COLOR').AsInteger;
case iValue of
1: dbgIn.Canvas.Brush.Color := clGreen;
2: dbgIn.Canvas.Brush.Color := clLime;
3: dbgIn.Canvas.Brush.Color := clYellow;
4: dbgIn.Canvas.Brush.Color := clRed;
end;
dbgIn.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
ColorGrid(DBGrid1, Query1, Rect, DataCol, Column, State);
end;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
iValue: LongInt;
begin
if (DataCol = 0) then
begin
iValue := qryIn.FieldByName('HINWEIS_COLOR').AsInteger;
case iValue of
1: dbgIn.Canvas.Brush.Color := clGreen;
2: dbgIn.Canvas.Brush.Color := clLime;
3: dbgIn.Canvas.Brush.Color := clYellow;
4: dbgIn.Canvas.Brush.Color := clRed;
end;
dbgIn.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
ColorGrid(DBGrid1, Query1, Rect, DataCol, Column, State);
end;
Create a table including an AutoInc field
uses AdoDB;
var
q: TAdoQuery;
db: TAdoConnection;
begin
q := TADOQuery.Create(nil);
q.Connection := db;
q.Close;
q.SQL.Clear;
q.SQL.Add('Create Table TABLENAME (ID COUNTER PRIMARY KEY, MYTEXT1 String, MYTEXT2 String);');
q.Prepared := True;
try
q.ExecSQL;
except
end;
q.Free;
end;
var
q: TAdoQuery;
db: TAdoConnection;
begin
q := TADOQuery.Create(nil);
q.Connection := db;
q.Close;
q.SQL.Clear;
q.SQL.Add('Create Table TABLENAME (ID COUNTER PRIMARY KEY, MYTEXT1 String, MYTEXT2 String);');
q.Prepared := True;
try
q.ExecSQL;
except
end;
q.Free;
end;
Membuat Ado Database Pada Delphi
Ado adalah salah satu object yang mampu menghubunkan database MS Acces dengan bahasa pemoggraman Delphi. Banyak hal yang berhubungan dengan database bias dikoneksikan dengan Ado tersebut

Untuk memulai membuatkoneksi databasedengan ado pada delphi pertama-tama silahkan buat terlebih dahulu databasenya pada microsoft acces kemudian kasih nama database1.mdb.
Buat field no,nama,tgl, dan jenis pada table1 di database1.mdb tersebut

Source Code Delphi
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Mask, DBCtrls, DB, ADODB;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
GroupBox1: TGroupBox;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
GroupBox2: TGroupBox;
DBGrid1: TDBGrid;
GroupBox3: TGroupBox;
Button4: TButton;
Label4: TLabel;
Button5: TButton;
DBEdit5: TDBEdit;
Label5: TLabel;
ADOQuery1: TADOQuery;
Edit1: TEdit;
DataSource2: TDataSource;
DBEdit4: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
VAR lDBPathName: STRING;
begin
lDBPathName := ExtractFileDir(Application.ExeName) +'\database1.mdb';
ADOConnection1.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' + lDBPathName + ';' +
'Persist Security Info=False;' +
'Jet OLEDB:Database Password=' + 'dengxiang';
ADOConnection1.Connected:=true;
adotable1.Active:=true;
end;
procedure TForm1.Button1Click(Sender: TObject); // tambah Data
var a: integer;
begin
adotable1.Append;
a:= adotable1.RecordCount;
a:=a+1;
dbedit5.Text:=inttostr(a);
end;
procedure TForm1.Button5Click(Sender: TObject); // simpan data
begin
Adotable1.Post;
end;
procedure TForm1.Button3Click(Sender: TObject); // delete data
var a: integer;
begin
a:= adotable1.RecordCount;
if a>1 then Adotable1.Delete;
end;
procedure TForm1.Button4Click(Sender: TObject); //cari data
var a: string;
begin
a:= edit1.Text;
adoquery1.Active:=false;
adoquery1.SQL.Clear;
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.Add('select *'+'from table1 where (nama='''+a+''')');
ExecSQL;
Open;
end;
adoquery1.Active:=true;
end;
end.

