+62 812-1171-5379 Fast Respond

Tips dan Trik Delphi - Database

Buka tutup table Myquery / Database / Windows / Delphi 7 - XE


Function OpentableMy(Dataset: TMyQuery): Boolean;
begin
     if Dataset.Active = False then
     begin
          Dataset.Open;
     end;
end;

Function ClosetableMy(Dataset: TMyQuery): Boolean;
begin
     if Dataset.Active = True then
     begin
          Dataset.Close;
     end;
end;

Cara penghapusan data record melalui SQL / Database / Windows / Delphi 7 - XE


Function ExecQueryMy(Query: String; Dataset: TMyQuery): Boolean;
begin
     Result := False;
     Dataset.Close;
     Dataset.SQL.Clear;
     Dataset.SQL.Text := Query;
     Dataset.Execute;
     Result := True;
end;

SQL Pencarian dalam dataset / Database / Windows / Delphi 7 - XE


Function CariQueryMy(Query: String; Dataset: TMyQuery): Boolean;
begin
    Dataset.Close;
    Dataset.SQL.Clear;
    Dataset.SQL.Text := Query;
    Dataset.Open;
    if Not (Dataset.Eof or Dataset.IsEmpty) Then
    Begin
       Result:=true;
    end else
    begin
       Result:=False;
    end;
end;

Cara penggunaan

begin
    if cariquerymy('select * from t_pelanggan where kode_pelanggan=''%Andi%'' ', Myquery1) Then
    begin
        // isi statemen
    end; 
end;



Select all pada DBGrid / Database / Windows / Delphi 7 - XE


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;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GridSelectAll(DBGrid1);
end;


Memberi warna baris tertentu pada DBGrid / Database / Windows / Delphi 7 - XE


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 *)

Memanggil setting lebar DBGrid format file INI / Database / Windows / Delphi 7 - XE


procedure Load_Setting_DB_Grid(nama_dbgrid : Tdbgrid; nama_form : TForm; nama_file: String);
var i : byte;
    Namamemo : TMemo;
    inistr : String;
begin
     i := 0;
     myINI := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'Setting\' + nama_file);
     Namamemo := TMemo.Create(nama_form);
     Namamemo.Parent := nama_form;

     Namamemo.Lines.Clear;
     Namamemo.Lines.LoadFromFile(myINI.FileName);
     Namamemo.Visible := False;
     inistr := myINI.FileName;
     if FileExists(inistr)=true then
     begin
          For i := 0 to Namamemo.Lines.Count -2 do
          Begin
                nama_dbgrid.Columns[i].Width := StrToInt(myINI.ReadString(nama_dbgrid.Name, inttostr(i), Namamemo.Lines.Strings[i]));
          End;
     end;
     Namamemo.Free;
end;

Menyimpan setting lebar kolom DBGrid format file INI / Database / Windows / Delphi 7 - XE


procedure Save_Setting_DB_Grid(nama_dbgrid : Tdbgrid; nama_file: String);
var i : byte;
begin
     i := 0;
     myINI := TINIFile.Create(ExtractFilePath(Application.EXEName) + '\Setting\' + nama_file);
     for i := 0 to nama_dbgrid.Columns.Count -1 do
     Begin
          nama_dbgrid.Columns[1].Width;
          myINI.WriteString(nama_dbgrid.Name, inttostr(i), inttostr(nama_dbgrid.Columns[i].width));
     End;
End;

Autosize kolom DBGrid / Database / Windows / Delphi 7 - XE


procedure SetGridColumnWidths(Grid: Tdbgrid);
const
  DEFBORDER = 10;
var
  temp, n: Integer;
  lmax: array [0..30] of Integer;
begin
  with Grid do
  begin
    Canvas.Font := Font;
    for n := 0 to Columns.Count - 1 do
      //if columns[n].visible then
      lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER;
    grid.DataSource.DataSet.First;
    while not grid.DataSource.DataSet.EOF do 
    begin
      for n := 0 to Columns.Count - 1 do 
      begin
        //if columns[n].visible then begin
        temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER;
        if temp > lmax[n] then lmax[n] := temp;
        //end; { if }
      end; {for}
      grid.DataSource.DataSet.Next;
    end; { while }
    grid.DataSource.DataSet.First;
    for n := 0 to Columns.Count - 1 do
      if lmax[n] > 0 then
        Columns[n].Width := lmax[n];
  end; { With }
end; {SetGridColumnWidths  }

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetGridColumnWidths(dbgrid3);
end;



Scroll pada DBGrid / Database / Windows / Delphi 7 - XE


//...
private
  OldGridProc: TWndMethod;
  procedure GridWindowProc(var Message: TMessage);
//...

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldGridProc        := DBGrid1.WindowProc;
  DBGrid1.WindowProc := GridWindowProc;
end;

procedure TForm1.GridWindowProc(var Message: TMessage);
var
  Pos: SmallInt;
begin
  OldGridProc(Message);
  if Message.Msg = WM_VSCROLL then  //or WM_HSCROLL
  begin
    Pos          := Message.WParamHi;  //Scrollbox position
    Table1.RecNo := Pos;
  end;
end;


Menambahkan autonomor pada DBGrid / Database / Windows / Delphi 7 - XE


procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if DataSource1.DataSet.RecNo > 0 then
  begin
    if Column.Title.Caption = 'No' then
      DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource1.DataSet.RecNo));
  end;
end;