Anda di halaman 1dari 8

Assalammu'alaikum wr wb

Selamat malam....
Bismillahirrahmanirrahim
Ini Kulgram materi ke-2
Dengan Judul Materi Mysql :: StringGrid Sesi III 8 Juni 2017

sudah siap project Sesi II kemaren?


kita akan ngebut
oke ke ufrmUtama
kita sedikit revisi di FormCreate nya
monggo direvisi
^tahun maksimal sampai tahun berjalan aja..kan ndak mungkin absen untuk tahun yg akan dating
Coba di run
oke...ada tambahan di uOverride di class TStringGrid

sekarang ke implement SetTimes


skrg ke ufrmUtama lagi
langsung aja kita timpa dengan ini
https://pastebin.com/Jrqv9HVY atau
procedure TfrmUtama.cbBulanChange(Sender: TObject);
var
cnt: Integer; //jumlah hari dalam bulan;
bln: Integer;
thn: Integer;
str: String;
iii: Integer;
jjj: Integer;
sid: String;
begin
//cek bulan dan tahun tidak kosong;
bln := cbBulan.ItemIndex;
thn := cbTahun.TextInt;

if (bln < 1) or (thn < 1) then exit;

//setting kolom grid sesuai jumlah hari;


cnt := DayOf(EndOfTheMonth(EncodeDate(thn, bln, 1)));

Grid.ColCount := (cnt * 2) + 3;

for iii := 1 to cnt do


begin
Grid.Cells[iii * 2 + 1, 0] := format('%d', [iii]);
Grid.Cells[iii * 2 + 1, 1] := 'Masuk';
Grid.Cells[iii * 2 + 2, 1] := 'Pulang';
end;

//load data siswa;


str := 'select * from siswa order by siswa_nis';
qry.SQL.Text := str;

try
qry.Open;
except
ShowMessage('Error query....Load Data Siswa');
exit;
end;

//load data absensi;


str := format('select ab.*, concat(ab.siswa_id, "-", DAY(absensi_tgl), '
+ '"-", absensi_jenis) as kode from absensi ab, siswa si '
+ 'where ab.siswa_id=si.siswa_id and Month(absensi_tgl)=%d '
+ 'and year(absensi_tgl)=%d order by siswa_nis, absensi_tgl',
[bln, thn]);
qrz.SQL.Text := str;

try
qrz.Open;
except
ShowMessage('Error query....Load Data Absensi');
exit;
end;

Grid.RowCount := qry.RecordCount + 2;
iii := 2;
while not qry.Eof do
begin
sid := qry.AsString['siswa_id'];

Grid.Cells[0, iii] := format('%d', [iii - 1]);


Grid.Cells[1, iii] := sid;
Grid.Cells[2, iii] := qry.AsString['siswa_fullname'];

for jjj := 1 to cnt do


begin
qrz.Locate('kode', format('%s-%d-masuk', [sid, jjj]), []);
Grid.Times[jjj * 2 + 1, iii] := qrz.AsTime['absensi_jam'];

qrz.Locate('kode', format('%s-%d-pulang', [sid, jjj]), []);


Grid.Times[jjj * 2 + 2, iii] := qrz.AsTime['absensi_jam'];
end;

inc(iii);
qry.Next;
end;

terus terus di run


ada yang kurang copy qry trus kasih nama qrz

oke...
skrg new -> unit
save as 'uZeos'

isi nya timpa ama ini


https://pastebin.com/YaxUm573 atau
unit uZeos;

interface

uses
ZDataset;

type
TZQuery = class(ZDataset.TZQuery)
private
function GetString(AField: String): String;
procedure SetString(AField, AStr: String);
function GetInteger(AField: String): Integer;
procedure SetInteger(AField: String; AInt: Integer);
function GetTime(AField: String): TTime;
procedure SetTime(AField: String; ATime: TTime);
public
property AsString[AField: String]: String read GetString write SetString;
property AsInteger[AField: String]: Integer read GetInteger write SetInteger;
property AsTime[AField: String]: TTime read GetTime write SetTime;
end;

implementation

uses
System.SysUtils;
function TZQuery.GetTime(AField: String): TTime;
begin
result := frac(FieldByName(AField).AsDateTime);
end;

procedure TZQuery.SetTime(AField: String; ATime: TTime);


begin
FieldByName(AField).AsDateTime := ATime;
end;

function TZQuery.GetString(AField: String): String;


begin
result := FieldByName(AField).AsString;
end;

procedure TZQuery.SetString(AField, AStr: String);


begin
FieldByName(AField).AsString := AStr;
end;

function TZQuery.GetInteger(AField: String): Integer;


begin
result := StrToIntDef(GetString(AField), 0);
end;

procedure TZQuery.SetInteger(AField: String; AInt: Integer);


begin
SetString(AField, IntToStr(AInt));
end;

end.

ke ufrmUtama ambahkan uses yang di atas, uZeos


lalu run
nah besok disesi IV dari materi yg sama
nanti kita coba merapikan StringGrid
biar header nya bisa mergerCell
bisa bold
dan bisa center

saya pamit dulu dr kulgram

wassalamu’alaikum wr wb

Anda mungkin juga menyukai