Program Aplikasi Perpustakaan dengan Delphi + Ms. Access 2007
Ahmad Rizal Abidin, M.Kom
4checks.com-Free Shipping and Handling on All Personal Checks with code DWF008
Karena project Prjpustaka sebelumnya sudah dibuat, pada modul 4. Membuat menu, maka pada kesempatan ini adalah melengkapi frmpinjam yaitu dengan cara:
1. Mengaktifkan Delphi 7.0 dengan cara, klik Start, Klik All Program, Klik Borland Delphi 7, Klik Delphi 7.
2. Klik menu File, klik Open Project, tentukan folder tempat anda menyimpan project PRjpustaka, lalu klik prjpustaka dan klik open
3. Klik Menu file, Klik New, klik form, ganti caption pada properties dengan Input Data Transaksi Peminjaman, dan pada name ketikkan frmpinjam.
4. Klik menu View, lalu klik forms dan double klik frmenu, klik Transaksi pada frmmenu, klik peminjaman dan ketikkan :
frmpinjam.show;
5. Klik menu View, lalu klik forms dan double klik frmpeminjam, lengkapi form tersebut seperti gambar berikut :
Gambar 1. Membuat form Transaksi Peminjaman Buku
Catatan :
Form diatas terdiri dari :
Palette DataControl : bblookupcombobox, DBedit
Palette standard : panel, Label, Edit, Button
Palette Additional : StringGrid
Palette ADO : Ado Connection dan ADOquery
Palette DataAcces : DataSource
Palette Win32 : DatetimePicker
6. Mengkoneksikan database dengan menggunakan Adoconnection
Klik ADOconnection pada Form, klik ConnectionString (…), klik Build, Klik Microsoft Office 12.0 Acces Database Engine OLEDB Provider (untuk office 2007) tetapi kalau menggunakan office XP dapat dipilih Microsoft jet OLEDB 4.0, test connection
Dan klik next, pada data source ketikkan : D:\perpustakaan\perpustakaan.accdb, dan yang terakhir klik test connection.
Gambar 2. mengkoneksikan Database M. Access
7. apabila test connection tampil keterangan tes connection succeeded, maka koneksinya sudah benar, tutup semua windows koneksi dengan cara klik OK. kembali ke frmpinjam.
8. Klik Adoquery1, klik Adoconnection pada proterties: lalu pilih ADOConnection1, dan klik SQL pada properties, lalu ketikkan :
select * From anggota
Dan Klik Active pada properties ganti false menjadi true.
9. Klik Adoquery2, klik Adoconnection pada proterties: lalu pilih ADOConnection1, dan klik SQL pada properties, lalu ketikkan :
select * From Buku
Dan Klik Active pada properties ganti false menjadi true.
Untuk Adoquery3 dan ADOquery4 hanya properties untuk Adoconnection : ADOConnection1.
10. Mengaktifkan DataSource1, yaitu dengan cara klik Datasource1 pada form pinjam, lalu klik Dataset pilih Adoquery1
11. Mengaktifkan DataSource2, yaitu dengan cara klik Datasource2 pada form pinjam, lalu klik Dataset pilih Adoquery2
12. Mengaktifkan DBLookupComboBox1, dengan cara klik DBLookupcombobox1, dan klik listssource : pilih DataSource1, ListField isi dengan IDAnggota, dan untuk keyfield isi dengan IDAnggota.
13. Mengaktifkan DBEdit1, dengan cara klik DBEdit1, lalu klik Datasource pada properties, lalu pilih datasource1 dan datafilednya nama
14. Mengaktifkan DBLookupComboBox2, dengan cara klik DBLookupcombobox2, dan klik listssource : pilih DataSource2, ListField isi dengan IDBuku, dan untuk keyfield isi dengan IDBuku
15. Mengaktifkan DBEdit2, dengan cara klik DBEdit2, lalu klik Datasource pada properties, pilih datasource2 dan datafilednya JudulBuku
16. Mengaktifkan DBEdit3, dengan cara klik DBEdit3, lalu klik Datasource pada properties, pilih datasource2 dan datafilednya Pengarang
17. Mengisi Edit2, dengan cara double klik Edit2 pada form pinjam, ganti events dengan OnKeypress, lalu ketik listing berikut :
procedure TFrmPinjam.Edit3KeyPress(Sender: TObject; var Key: Char); begin if not ((key >= '0') and (key <= '9') or (key=#8)) then begin key:=#0; Application.Messagebox('maaf hanya angka','Cek Input',mb_iconstop); end; end;
18. Mengisi Tombol Proses, dengan cara double klik tombol proses lalu ketik listing berikut :
procedure TFrmPinjam.Button1Click(Sender: TObject); var i,qty,tot:integer; begin sg.RowCount := sg.rowcount+1; sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text; sg.Cells[2,sg.RowCount-1]:=dbedit2.Text ; sg.Cells[3,sg.rowcount-1]:=dbedit3.Text ; qty:=strtoint(edit3.Text); sg.cells[4,sg.rowcount-1]:=edit3.text; tot:=0; for i:=1 to sg.RowCount-1 do begin tot := tot + strtoint(sg.Cells[4,i]); sg.Cells[0,i]:=inttostr(i); end; edit4.text := inttostr(tot); end;
19. Mengisi tombol Hapus, dengan cara double klik tombol hapus lalu ketik listing berikut :
procedure TFrmPinjam.Button5Click(Sender: TObject);
begin
sg.RowCount := sg.rowcount-1;
end;
20. Mengisi tombol Save, dengan cara double klik tombol save lalu ketik listing berikut :
procedure TFrmPinjam.Button2Click(Sender: TObject); var i :integer; begin if messagedlg('Yakin akan disimpan',mtinformation,[mbyes,mbno],0)=mryes then begin adoquery4.sql.Clear; adoquery4.sql.add ('insert into pinjam(id_pinjam,id_anggota,tgl_pinjam)values ("'+ edit1.Text +'","'+ dblookupcombobox1.Text +'","'+ datetostr(dt.date) +'")'); adoquery4.execsql; for i :=1 to sg.RowCount-1 do begin adoquery3.SQL.Clear; adoquery3.sql.add('insert into dpinjam(id_pinjam,id_buku,jumlah) values ("'+ edit1.Text +'","'+ sg.Cells[1,i] +'","'+ sg.cells[4,i] +'")'); adoquery3.ExecSQL ; end; end; end;
21. Membuat Koding program pada tombol close, double klik tombol close ketikkan listing berikut :
procedure TFrmpinjam.Button4Click(Sender: TObject);
begin
frmpinjam.Close;
end;
22. Pada form Create (OnCreate) ketik listing berikut :
procedure TFrmPinjam.FormCreate(Sender: TObject); begin edit2.text:=datetostr(dt.Date); edit6.Text:=datetostr(dt2.Date); sg.RowCount :=1; sg.ColCount:=5; sg.Cells[0,0]:='No'; sg.Cells[1,0]:='Kode Buku'; sg.Cells[2,0]:='Judul buku'; sg.Cells[3,0]:='Pengarang'; sg.Cells[4,0]:='Qty'; sg.ColWidths [0]:=40; sg.ColWidths [1]:=60; sg.ColWidths [2]:=80; sg.Colwidths[3]:=80; sg.colwidths[4]:=60; end;
@Ahmad
Selamat MEncOba…
Materi yang berhubungan :
Modul 1. Dasar Pemograman Delphi 7
Modul 2. Alur Program Delphi 7.0
Modul 3. Membuat Database dengan Menggunakan Microsoft Acces 2007
Modul 4. Membuat Menu Pada Delphi 7.0
Modul 5. Membuat Form Penerbit pada Delphi 7.0
Modul 6. Membuat Form Anggota pada Delphi 7.0
Modul 7. Membuat Form Buku pada Delphi 7.0
Modul 8. Membuat Form Transaksi Peminjaman Buku pada Delphi 7.0
Modul 9. Membuat Form Transaksi Pengembalian Buku pada Delphi 7.0 + MS. Access 2007
Modul 10. Membuat Nomor peminjaman secara otomatis pada Form Transaksi Peminjaman Buku pada Delphi 7.0 + MS. Access 2007
Modul 11. Membuat Report dengan Rave
Modul 12. Membuat Report dengan Rave + Delphi 7
1. Delphi Programming 1. Transaction Processing Application Programs Sales of Goods
2. Delphi Programming 2. Product Sales Transaction Processing Application (Form Product)
3. Delphi Programming 3. Product Sales Transaction Processing Application (Form Costumer)
4. Delphi Programming 4.Aplikasi Pengolahan Transaksi Penjualan Barang (Form Transaksi)
5. Delphi Programming 5. Aplikasi Pengolahan Transaksi Penjualan Barang (Form Distributor)
6. Delphi Programming 6. Aplikasi Pengolahan Transaksi Penjualan Barang (Form Transaksi Pembelian Barang)
7. Delphi Programming 7. Pembuatan Laporan Daftar Barang dengan menggunakan Rave
8. Delphi Programming 8. Pembuatan Laporan Daftar Pelanggan dengan menggunakan Rave
9. Delphi Programming 9. Pembuatan Laporan Transaksi Pembelian Barang dengan menggunakan Rave (Master/Detail)
10. Delphi Programming 10. Pembuatan Laporan Transaksi PerTanggal dan PerPeriode dengan Menggunakan Rave (Tanggal + datetimePicker)
Filed under: Delphi |
mo nanya pak, beda fungsi pemakaian antara DBGrid sama StringGrid dimana pak? kemudian, pemakaian bbrp buah adoquery di dlm satu form apa disesuaikan dg jlh tabel yg berhubungan atau seperti apa ya pak?
triims b4
Kalau DBGrid menampilkan data dari Database, jadi data yang ditampilkan pada DBGrid adalah data yang sudah tersimpan di dalam Database.
sedangkan StringGrid untuk menampung data dari input kedalam bentuk tabel… jika data sudah benar baru kita simpan ke dalam Database.
Di dalam satu form bisa menggunakan beberapa adoquery. dan begitupula dalam satu adoquery bisa menselect lebih dari satu tabel…
moga membantu
pak mau tanya
berapa maksimum baris yang bisa terecord oleh string grid??
terima kasih.
Malam Pak, coding delphi untuk lama inap otomatis caranya gimana ya pak…misalkan tanggal datang kita inputkan, tanggal kembali juga diinputkan, jadi lama inap nya berdasarkan tanggal tersebut.
Klik aja di sini Modul 9. bagian e…
anda sesuaikan dengan punya anda
lama_inap = tgl_keluar – tgl_masuk;
modul yg ok nih pak,
bisa dijelaskan listing berikut pak?
sg.RowCount := sg.rowcount+1;
sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text;
sg.Cells[2,sg.RowCount-1]:=dbedit2.Text ;
sg.Cells[3,sg.rowcount-1]:=dbedit3.Text ;
qty:=strtoint(edit3.Text);
sg.cells[4,sg.rowcount-1]:=edit3.text;
tot:=0;
for i:=1 to sg.RowCount-1 do
begin
tot := tot + strtoint(sg.Cells[4,i]);
sg.Cells[0,i]:=inttostr(i);
cara membaca program diatas bgmn ya pak?
sg.rowcount + 1 ==> maksudnya?
sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text; ==> ?
dan berikutnya?
harap maklum ya pak, katrok sih.. 😀
perintah ini digunakan untuk menampilkan data pada sg(String Grid) setiap kali menekan tombol proses. pada saat id buku diisi dan strsnya… terus tekan tombol proses maka data akan diletakkan pd brs berikutnya, jika data sudah benar baru tekan tombol save.
kira-kira seperti itu….
makasih…
nilai default sg.rowcount =0;
sg.rowcount + 1 ==> maksudnya sg.rowcount bernilai 1 (baris ke satu)
sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text, maksudnya meletakkan data id buku pada kolom 1, baris ke 0 (1-1)…
sg.cells[2,sg.RowCount-1] berarti kolom 2 baris 0…
dst…
maaf pak,..mo nanya,…klo menghapus record yg ad pd StringGrid ,..gmn???
trm’s sblmnya,..
slam kenal pak,,,,
mau tanya nihh,,, itu kan artikl dngan databasenya ACCES kalu menggunakan padarox gmna…
saya mau minta bantuannya,,, gmna listing untuk pencarian (pakai “%”) yang menggunakan QUERy bukan ADOQUERY… soalnya saya lagi baut aplilkasi pakai PARADOX…
slam knal pak,,,
klo buate pake delphi sama mysql kodingnya gimana yha pak?????
trima kacih
koding di delhpinya sama aja, tetapi yang akan membedakan pada saat koneksi ke database di langkah ke 6. kalau dengan Mysql harus dibuatkan DSN di ODBC
Salam Pak,
Jika data pada primary key sudah ada dalam database lalu mw menampilkan pesan pada user [Msgdialog]
bagaimana listing programnya pak?, masih dengan Delphi + Ms. Access.
salam pak,
cara memberi jumlah maksimal pinjam buku, bagaimana pak? misal, ada anggota akan pinjam 3 buku, tapi jmlah maksimal pinjam hanya 2 buku/ eksemplar….
masih dengan delphi + Ms.Access?
pak bagaimana menghapus data pada baris tertentu di stringgrid? sesuai dengan posisi kursor yang kita tentukan.
Mungkin ini kali ya….
procedure TFrmPinjam.Button5Click(Sender: TObject);
begin
sg.RowCount := sg.rowcount-1;
end;
pak, pertanyaan q koq ndak dijawab tow…
mohon jawabannya….
terima kasih.
Oh.. ya…
tambahkan aja di Tombol Proses, logika di dalam perulangan For i….
if i > 2 then
begin
msgdilog(….)
exit
end;
Maaf nih pak, mw tanya, listing di atas kan utk kasus peminjaman buku, jadi untuk input detail buku yg dipinjamnya di input satu per satu berdasarkan kode buku, nah saya lg bikin sistem informasi nilai bwt sekolah, untuk input nilainya gmn ya pak biar di string grid nya itu otomatis menampilkan semua mata pelajaran yg akan diinput nilainya tanpa hrs menginput kode pelajaran satu per satu, jd nantinya tinggal input kolom nilainya aja.
ditunggu jawabannya pak
Terima kasih…
Untuk Nilai pertama anda harus membuat databasenya dengan benar, terus gunakan DBGrid bukan string grid, karena data diload dari database, konsepnya tetap memasukkan kode pelajaran beserta semesternya tetapi dengan secara otomatis tampil siswa yang mengambil matapelajarannya dan tersedia kolom nilai, tentunya ada proses siswa yang mengambil mata pelajaran tertentu terlebih dahulu…
moga membantu…
Assalamu’alaikum
Salam kenal Pak. Berapa judul buku yang bisa disimpan dalam database MS Access?
Gimana cara menghitungnya?
Terima kasih…
Jumlahnya gak tau pasti ya… tapi lebih dari 150000 record
cobaaja dengan koding dibawah ini :
buat project dan form baru dgn delphi, lalu tambahkan adoconnection dan adoquery, trs 2 buah button dan satu edit, jangan lupa koneksikan ke database dengan fieldnya (id autonumber, dan nama text) lalu ketik listing berikut :
untuk melihat jumlah total record :
malam pak,mw nanya dan minta bantuannya
tolong bantuin ya pak
saya punya matriks dalam stringGread
0 40 0 60
0 10 40 20
50 0 10 0
10 20 70 0
saya mw mnandai 0 dalam matriks (4*4) tersebut,yang paling banyak ditandai lebih dahulu.
ilusinya :
yang ditandai pertama, kolom 1. yang ke 2 boleh baris 3 dan 4
satu nilai 0 tidak boleh ditantai 2 kali
jumlah tanda harus sama dengan ordo matriks (4)
diatas kita cuma punya 3 tanda (kolom1,baris3,baris4)
di cell 31 dan 41 berarti dilewati 2 kali tanda. untuk mendeteksi itu gimana?? tolong…pakkkkkk
kolom yang dilewati 2 kali tanda nanti mw di pakai valeuny
gimana ya pak caranya..
aduh… rumit juga yach… logikanya tapi saran saya coba uji dulu dengan pascal….
terus hitung aja dulu jumlah nol yang ada di setiap kolomnya, terus baru hitung jumlah nol yang ada di setiap baris, pada saat menghitung jumlah nol pada baris, berikan aja logika jika pada kolom 1 tidak sama dengan nol, maka hitung jumlah nol… mungkin ini sedikit koding untuk uji coba dengan pascal …
makasih ya pak..
kalo mw ngecek nilai terbesar tiap cellnya gimana pak??
perintah untuk mengecek nilai minimum tiap baris kecuali NOL…gimana pak ya..
yang di cek duluan baris yang mempunyai nilai not terbanyak
mohon bantuannya pak..
maksudnya NOL terbanyak..yang cell-nya dicek duluan
kalau cari max or min jadikan aja kodingnya seperti dibawah ini ….
kalau…. yang dicek duluan baris yang mempunyai nol terbanyak….
kayaknya gak ada pengaruhnya kan udah ketahuan tu baris mana yang nol nya banyak dan min maxnya….
good luck
program ahmd;
uses crt;
const
matrik:array[1..4,1..4] of integer=((0,40,0,60),(60,0,40,20),(0,0,10,0),(10,20,70,0));
var
min,max,i,j,k,r,bi,ji,x,y,dumm:integer;
dummy: array[1..2] of integer;
dummy2: array[1..4,1..4] of integer;
hit : string;
//tampung1 : array[1..4] of integer;
//tampung2 : array[1..4] of integer;
temp1:integer;
begin
clrscr;
dumm:= 0;
dummy[1]:=0;
dummy[2]:=0;
k:=0;
r:=0;
for i := 1 to 4 do
begin
for j := 1 to 4 do
begin
write(‘ ‘,matrik[i,j]);
if matrik[j,i]=0 then
k:=k+1;
end;
if dumm < K then
begin
dumm:= K;
dummy[1]:= i;
end;
writeln('kolom',i, '= ', k);
writeln(‘jumlah:’ ,dumm);
writeln(‘x:’ ,dumm[1]);
writeln(‘y:’ ,dumm[2]);
k:=0;
min:=1000;
max:=0;
end;
for bi:= 1 to 4 do
begin
for ji:= 1 to 4 do
begin
write(' ',matrik[bi,ji]);
if matrik[bi,1] 0 then
if matrik[ji,bi]=0 then
k:= k + 1;
end;
//tampung1[bi] := bi;
//tampung2[bi] := k;
writeln(‘baris’,bi,’= ‘, k);
//writeln(‘cara nampung data….:’,tampung1[bi],’ ‘,tampung2[bi]);
k:=0;
end;
i:= dummy[1];
begin
for j := 1 to 4 do
begin
if matrik[i,j] > max then
max := matrik[i,j];
if (min = 0) and (matrik[i,j] 0> then
min:= matrik [i,j];
if matrik[i,j] 0 then
min := matrik [i,j];
dummy[2] := j;
end;
end;
//writeln(‘Nilai Max baris ‘,i, ‘ ‘,max);
writeln(‘Nilai Min baris ‘,i, ‘ ‘,min);
min:= 0;
end;
x := 1;
y := 1;
for i:= 1 to 4 do
begin
if i dummy[1] then
begin
for j := 1 to 4 do
begin
if j dummy[2] then
begin
dummy2[x,y] := matrik[i,j];
inc(y);
end;
end;
inc(x);
end;
end;
readln;
end.
Koding diatas niatnya mw mencari nilai terkecil (yang bukan NOL) dari baris yang memiliki NOL terbanyak terlebih dahulu.
Misalnya
0 40 0 60 jumlah NOL= 2
60 0 40 20 jumlah NOL= 1
0 0 10 0 jumlah NOL= 3
10 20 70 0 jumlah NOL= 1
Yang terpilih 10 pada (3,3) maka matriknya menjadi:
0 40 60
60 0 20
10 20 0
Selanjutnya 40 pada (1,2) maka matriknya menjadi
60 20
10 0
Selanjutnya 10 pada(2,1) maka metriksnya menjadi
20
Tolong bantuannya lagi pak..koding diatas kok nggak ada outputnya juga nggak ada errornya
pak….
help me..
Mantap gand…
minta syntax permainan jumanji dong….bntuin,,,,,pusing
Mas untuk mengetahui posisi kursor pada baris ke sekian d stringgrid caranya gmn ya ?
untuk mengetahui baris yang aktif oleh kursor gmn caranya
source code menggunakan date time picker peminjaman dengan pengembalian bagai mana omm???
siang pak,
mau tanya….
gimana cara menyimpan data pada tabel yang mempunyai tipe data double dengan ADOQUERY,
saya menggunakan DBEDIT yg mana datasource dan data fieldnya sudah diarahkan,
saya udah coba konversi ke floatto str tpi tetep hasilnya nol semua,
mohon pencerahannya yaa paa…??
salam… 🙂
Pak, saya mau tanya.gimana sih cara menghitung hari keterlambatan pengembalian buku. bgmn listingnya?
pada modul 9 ada….
logikanya
jika tanggal kembali melebihi tanggal tempo maka
denda = tanggal kembali – tanggal tempo
pak mo nanya ne klo penjadwalan lapangan futsal menggunakan algo semut gmn ya?
soalnya saya ga ngerti nerapin ke delphi nya
keep posting ya pak
pak mau nanya ne klo mau buat report tapi hasil dari stringgrid gmn caranya ya ?
pak mau tanya neh dt2.datenya kok undeclared identifier pak?
masih belum ada tanggapan