Sekarang kita akan memulai untuk proses pembuatannya, pertama kita siapkan terlebih dahulu rancangan database dimana
saya memberi nama databasenya db_vcd, saya tidak akan membuat aplikasi yang kompleks melainkan hanya sesuai dengan
topik yang dibahas, adapun rancangan database hanya melingkupi peminjaman saja, untuk barang dan lainnya akan saya buat
sebagai data statis. berikut ini adalah rancangannya tabelnya :
nah, selanjutnya kita membuat suatu form, disini untuk menyimpan data-data transaksi saya akan memakai TStringGrid,
berikut ini adalah rancangan formnya :
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 1/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Berbeda dengan tutorial sebelumnya, sekarang saya menggunakan Delphi 7 untuk praktiknya hal ini karena pertimbangan
saya masih banyak programmer delphi yang menggunakan versi 7 untuk belajar. seperti yang kita lihat rancangan form di atas
dalam koneksi dengan MySQL menggunakan Zeos dan sekali lagi bagi yang belum mengerti mengenai koneksi Aplikasi ke
MySQL dengan menggunakan zeos silahkan membaca tutorial saya yang sebelumnya, untuk rancangannya sendiri, file
rancangannya adalah sbb :
Karena akan terlalu banyak yang diterangkan, maka saya langsung kepada kode pada unitnya, tetapi jangan khawatir karena
saya telah menyertakan komentar-komentar supaya lebih mudah memahami maksud dalam setiap sintak yang ada
1 unit uMain;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, Grids, ExtCtrls, ComCtrls, ZConnection, DB,
8 ZAbstractRODataset, ZAbstractDataset, ZDataset;
9
10 type
11 TfrmMain = class(TForm)
12 Label1: TLabel;
13 dpPinjam: TDateTimePicker;
14 Label2: TLabel;
15 edNota: TEdit;
16 Label3: TLabel;
17 dpKembali: TDateTimePicker;
18 Label4: TLabel;
19 cbAnggota: TComboBox;
20 Panel1: TPanel;
21 sgData: TStringGrid;
22 Label5: TLabel;
23 cbBarang: TComboBox;
24 btnTambah: TButton;
25 btnSimpan: TButton;
26 btnBatal: TButton;
27 zConn: TZConnection;
28 qAct: TZQuery;
29 procedure FormCreate(Sender: TObject);
30 procedure btnBatalClick(Sender: TObject);
31 procedure btnTambahClick(Sender: TObject);
32 procedure dpPinjamChange(Sender: TObject);
33 procedure btnSimpanClick(Sender: TObject);
34 private
35 function GenCode: string; //fungsi auto no.nota
36 procedure RunSQL(_SQL: string ; isOpen: boolean = True);
37 { Private declarations }
38 public
39 { Public declarations }
40 end;
41 CONST
42 lama_pinjam_hari = 7; //lama pinjam adalah 7 hari
43 var
44 frmMain: TfrmMain;
45 iRow: integer; //variabel indikator jumlah baris
46
47 implementation
48
49 {$R *.dfm}
50
51 procedure TfrmMain.FormCreate(Sender: TObject);
52 var
53 ch: char;
54 begin
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 5/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
55 //variabel jumlah baris
56 iRow := 2;
57 //Pembuatan judul kolom grid
58 with sgData do
59 begin
60 Cells[0,0] := 'No. Nota';
61 Cells[1,0] := 'Nama Barang';
62 end;
63 //buat simulasi nama barang
64 for ch := 'A' to 'Z' do
65 begin
66 cbBarang.Items.Add('Barang - ' + ch);
67 end;
68
69 //set tanggal pinjam menjadi tanggal hari ini
70 dpPinjam.Date := NOW;
71
72 //set tanggal kembali secara default
73 dpKembali.Date := Now + lama_pinjam_hari;
74
75 //munculkan nota
76 edNota.Text := GenCode;
77 end;
78
79 function TfrmMain.GenCode: string;
80 CONST
81 zero = '0000';
82 var
83 strTemp: string;
84 begin
85 //Format Nota adalah N-0001
86
87 //liat no.nota terakhir dari tb_pinjam
88 RunSQL('SELECT idpinjam FROM tb_pinjam ORDER BY idpinjam DESC LIMIT 1');
89
90 //cek apakah udah ada data dalam tabel, kalo belum hasilkan nilai pertama seperti format
91 //pada contoh
92 if qAct.Eof then
93 begin
94 result := 'N-0001';
95 exit; //stop sampe disini saja perintahnya,
96 end;
97
98 //jika memasuki baris ini, maka berarti telah ada data dalam tabel dan saatnya untuk
99 //melakukan filtering
100 strTemp := Copy(qAct.FieldByName('idpinjam').AsString,3,4); //potong data yang ditemukan dari k
101 //karakter yg dipotong adalah 4 (sampai akhir format no.nota)
102
103 strTemp := IntToStr(StrToInt(strTemp) + 1);//dah ketemu nilai berikutnya
104
105 strTemp := 'N-' + Copy(zero,1,Length(zero) - Length(strTemp)) + strTemp;
106 result := strTemp;
107
108 end;
109
110 procedure TfrmMain.btnBatalClick(Sender: TObject);
111 begin
112 Application.Terminate;
113 end;
114
115 procedure TfrmMain.btnTambahClick(Sender: TObject);
116 begin
117 //validasi ketika pilihan kosong, maka abaikan perintah penambahan
118 if cbBarang.ItemIndex < 0 then
119 exit; //supaya tidak menjalankan perintah selanjutnya ketika tidak ada barang yg dipilih
120
121 //identifikasikan jumlah baris
122 sgData.RowCount := iRow;
123
124 //isikan data sesuai pilihan ke dalam grid
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 6/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
125 with sgData do
126 begin
127 Cells[0,RowCount - 1] := edNota.Text;
128 Cells[1,RowCount - 1] := cbBarang.Text;
129 end;
130
131 //bersihkan isi cbBarang
132 cbBarang.ItemIndex := -1; //karena style DropDownList, maka membersihkannya dengan cara seperti
133
134 //tambah jumlah baris
135 Inc(iRow,1);
136 end;
137
138 procedure TfrmMain.dpPinjamChange(Sender: TObject);
139 begin
140 //isikan secara default tanggal pengembalian, lama pinjam sesuai dengan konstanta yang telah di
141 dpKembali.Date := dpKembali.Date + lama_pinjam_hari;
142 end;
143
144 procedure TfrmMain.RunSQL(_SQL: string; isOpen: boolean);
145 begin
146 with qAct do
147 begin
148 Close;
149 SQL.Text := _SQL;
150 if isOpen then
151 Open
152 else
153 ExecSQL;
154 end;
155 end;
156
157 procedure TfrmMain.btnSimpanClick(Sender: TObject);
158 var
159 i: integer;
160 _SQL: string;
161 begin
162 try
163 //simpan ke tabel tb_detpinjam dlu ya
164 for i:=1 to sgData.RowCount - 1 do //ini nih cara nyimpen massal yang sederhana, pake looping
165 begin //jadi disimpen per baris gitu, inget mulai baris 1 pada st
166 _SQL := 'INSERT INTO tb_detpinjam(idpinjam,barang)VALUES(' + QuotedStr(sgData.Cells[0,i]) +
167 RunSQL(_SQL,False); //eksekusi SQL
168 end;
169
170 //setelah selesai, dah simpen di tabel tb_pinjam
171 _SQL := 'INSERT INTO tb_pinjam(idpinjam,anggota,tglpinjam,tglkembali)VALUES(' +
172 QuotedStr(edNota.Text) + ',' + QuotedStr(cbAnggota.Text) + ',' + QuotedStr(FormatDateTime(
173 ',' + QuotedStr(FormatDateTime('yyyy-mm-dd',dpKembali.Date)) + ')';
174 RunSQL(_SQL,False); //eksekusi SQL
175 Application.MessageBox('Data berhasil disimpan dengan sempurna!!!','Informasi',MB_OK or MB_ICON
176
177 //generate no.nota selanjutnya
178 edNota.Text := GenCode;
179
180 //bersih - bersih...
181 iRow := 2;
182 with sgData do
183 begin
184 RowCount := iRow;
185 Cells[0,1] := ''; Cells[1,1] := '';
186 end;
187
188 except
189 Application.MessageBox('Data gagal disimpan dengan sempurna!!!','Peringatan',MB_OK or MB_ICON
190 end;
191 end;
192
193 end.
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 7/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Untuk yang belum jelas atau berhasil silahkan download project jadi disini
Like this:
Like
Delphi data massal, data massal - delphi, database delphi, database mysql
http://www.tawvic.co.cc
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 8/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
VB
Balas
Balas
Balas
Balas
Balas
EditName.Text := FieldByName(namabarang).AsString;
end;
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 9/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Balas
Balas
Balas
Balas
Balas
Balas
Balas
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 10/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Balas
Balas
Balas
kemudian dari Database tersebut akan dapat ditampilkan oleh applikasi (gunakan DBGrid).
tetapi apabila hanya ingin monitoring biasa saja,bisa menggunakan stringgrid aja, saya rasa lebih mudah.
Balas
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 11/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Balas
Balas
Balas
Terima kasih
Balas
Balas
Terima Kasih
Balas
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 12/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
begin
ADOC1.Execute;
ADOQ2.Connection.CommitTrans;
ShowMessage(Data Telah Tersimpan.);
end;
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 13/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Balas
Balas
Balas
tbbarang.fieldbyname(Stok).value:=tbbarang.fieldbyname(stok).asinteger strtoint(Edit1.text);
Balas
if tbbaranf.locate(Stok,Editkodebrg.text,[]) then
begin
tbbarang.edit;
tbbarangStok.value:=tbbarangStok.asinteger strtoint(EditBanyakStok.text);
tbbtarang.post;
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 14/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
procedure TForm1.isipass;
begin
ADOPass1.Append;
case rgstatus.ItemIndex of
0:ADOPass1['status']:= A;
1: ADOPass1['status']:= T;
end;
ADOPass1['user_nama']:= edit1.Text;
ADOPass1['password']:=edit2.Text;
ADOPass1['tanggal']:=edit3.text;
ADOPass1['jam']:=edit4.text;
ADOPass1.post;
Balas
Balas
Balas
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 15/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
SQLProc.Execute;
Balas
Balas
Balas
Balas
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 16/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Balas
Balas
Balas
Balas
Balas
Balas
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 17/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Balas
Balas
Balas
Balas
Balas
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 18/19
5/14/13 [Delphi] Penyimpanan Data ke Database Secara Massal | Programming Learning
Balas
Balas
Balas
programminglearning.wordpress.com/2009/05/15/delphi-penyimpanan-data-ke-database-secara-massal/ 19/19