Selamat malam pemirsa... :D
maaf sudah lama gak spawn , sibuk nih hehe
oke gan langsung aja,
pernah liat DBGrid yang warna barisnya beda2? ganjil genap gitu :D
nih codingnya
procedure TfrmMenuUtama.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (ADOQuery1.RecNo mod 2)=0 then
DBGrid1.Canvas.Brush.Color := clSkyBlue
else
DBGrid1.Canvas.Brush.Color := $000080FF;
DBGrid1.DefaultDrawDataCell (Rect, Field, State);
end;
nah itu untuk yang bedakan ganjil genap, sedangkan untuk kriteria tertentu, bisa aja kasih keterangan di if nya.
contohnya untuk memberi warna MERAH pada nilai ujian yang kurang dari 70
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (ADOQuery1.FieldByName('NILAI').Value < 70 ) then
DBGrid1.Canvas.Brush.Color := clred
else
DBGrid1.Canvas.Brush.Color := clWhite;
DBGrid1.DefaultDrawDataCell (Rect, Field, State);
end;
Mudah kan? oke terimakasih telah berkunjung di giavano.blogspot.com ^^
My Journey, My Confusion, My Fault, My Correction. Never Stop Looking for the Perfection.. EON software developer :) Feel free to ask : 0899.707.1010 We provide the most suitable software for your business ..!! Thank You :)
Rabu, 18 September 2013
Selasa, 20 Agustus 2013
DELPHI - Menulis text kedalam sebuah File text .txt
Selamat malam pemirsa :D
kali ini saya bagikan cara untuk menulis ke dalam sebuah file melalui DELPHI..
oke langsung aja lah yah, ini codingnya
kali ini saya bagikan cara untuk menulis ke dalam sebuah file melalui DELPHI..
oke langsung aja lah yah, ini codingnya
procedure TForm1.tbSimpanClick(Sender: TObject);var TFile : TextFile;begin assignFile(TFile, 'C:\catatan.txt'); if FileExists('catatan.txt') then Append(TFile) else ReWrite(TFile); writeln(TFile,'INI TULISAN PERTAMA SAYA'); closeFile(TFile);end;
Coding itu bebas anda letakkan di tempat yang dibutuhkan. silahkan mencoba.
Terimakasih telah berkunjung di giavano.blogspot.com ^_^
Minggu, 11 Agustus 2013
DELPHI - Mengurangi stok secara otomatis menggunakan Trigger MySQL
Selamat siang pemirsa, :D
berhubung kemaren ada yang request jadi saya tempel di blog ini
oke langsung aja,
jadi trigger itu fungsinya untuk jadi pemicu, misalnya :
pas kita jual barang, stok harus berkurang....
pas kita beli barang, stok harus bertambah...
pas kita update penjualan, stok harus dikurangi yang lama dan ditambah yang baru...
nah itu lah yang gunanya trigger, kalo ga pake trigger juga bisa, tapi lambat dan codingnya ribet.
misalnya saya punya tabel penjualan (master & detail) seperti ini
//Master
CREATE TABLE `mjual` (
`NOMOR_JUAL` char(10) NOT NULL,
`TANGGAL` date NOT NULL,
`NOPLAT` varchar(10) default NULL,
`MOTOR` varchar(20) default NULL,
`BIAYA_PASANG` double default '0',
`JENIS_BAYAR` varchar(20) default 'TUNAI',
`STATUS` varchar(50) default 'LUNAS',
PRIMARY KEY (`NOMOR_JUAL`),
UNIQUE KEY `IDJual` (`NOMOR_JUAL`)
)
//detail
CREATE TABLE `djual` (
`NOMOR_JUAL` char(10) NOT NULL,
`ID_BARANG` varchar(20) NOT NULL,
`JUMLAH` int(11) default '0',
`HARGA_JUAL` double default '0',
`DISKON` double default '0',
KEY `IDJual` (`NOMOR_JUAL`),
KEY `IDBarang` (`ID_BARANG`),
CONSTRAINT `djual_fk` FOREIGN KEY (`NOMOR_JUAL`) REFERENCES `mjual` (`NOMOR_JUAL`) ON UPDATE CASCADE,
CONSTRAINT `djual_fk1` FOREIGN KEY (`ID_BARANG`) REFERENCES `barang` (`ID_BARANG`) ON UPDATE CASCADE
)
//tabel barang
CREATE TABLE `barang` (
`ID_BARANG` varchar(20) NOT NULL,
`NAMA_BARANG` varchar(75) default NULL,
`SATUAN` varchar(10) default NULL,
`HARGA_BELI` double default '0',
`HARGA_BARANG` double default '0',
`STOK` int(11) default '0',
`NAMA_SUPPLIER` varchar(30) default NULL,
PRIMARY KEY (`ID_BARANG`),
UNIQUE KEY `IDGuru` (`ID_BARANG`),
KEY `IDSupplier` (`NAMA_SUPPLIER`),
CONSTRAINT `barang_fk` FOREIGN KEY (`NAMA_SUPPLIER`) REFERENCES `supplier` (`NAMA_SUPPLIER`) ON UPDATE CASCADE
)
//tabel supplier
CREATE TABLE `supplier` (
`NAMA_SUPPLIER` varchar(30) NOT NULL,
`ALAMAT` varchar(100) default NULL,
`TELEPON` varchar(30) default NULL,
`EMAIL` varchar(50) default NULL,
`NAMA_SALESMAN` varchar(30) default NULL,
`TELEPON_SALESMAN` varchar(30) default NULL,
`SISA_HUTANG` double default '0',
)
misalnya saya punya data tabel barang seperti ini
ID_BARANG | NAMA_BARANG | STOK | HARGA_BARANG
00000000001 | sabun colek | 100 | 3000
00000000002 | sabun mandi | 100 | 1500
nah nanti di tabel penjualan (detail) ketika kita masukin
kode 00000000001
jumlah penjualan 15,
maka stok 00000000001 harus menjadi 85. (inilah yang dimaksud trigger AFTER INSERT)
stok hanya akan berkurang, JIKA barang terjual (sesuai kodebarang yang diinput)
CREATE TRIGGER `djual_after_ins_tr` AFTER INSERT ON `djual`
FOR EACH ROW
BEGIN
UPDATE barang SET stok = stok - NEW.jumlah
WHERE ID_Barang = NEW.ID_Barang;
END;
nah gimana kalo ternyata salah input? trus jumlahnya bukan 15, tapi 20, kita tinggal update aja detail penjualannya, ganti si 15 jadi 20
kode 00000000001
jumlah penjualan 20,
maka stok 00000000001 harus menjadi 80. (inilah yang dimaksud trigger AFTER UPDATE)
CREATE TRIGGER `djual_after_upd_tr` AFTER UPDATE ON `djual`
FOR EACH ROW
BEGIN
UPDATE barang SET stok = stok - NEW.jumlah + OLD.jumlah
WHERE ID_Barang = OLD.ID_Barang;
END;
berhubung kemaren ada yang request jadi saya tempel di blog ini
oke langsung aja,
jadi trigger itu fungsinya untuk jadi pemicu, misalnya :
pas kita jual barang, stok harus berkurang....
pas kita beli barang, stok harus bertambah...
pas kita update penjualan, stok harus dikurangi yang lama dan ditambah yang baru...
nah itu lah yang gunanya trigger, kalo ga pake trigger juga bisa, tapi lambat dan codingnya ribet.
misalnya saya punya tabel penjualan (master & detail) seperti ini
//Master
CREATE TABLE `mjual` (
`NOMOR_JUAL` char(10) NOT NULL,
`TANGGAL` date NOT NULL,
`NOPLAT` varchar(10) default NULL,
`MOTOR` varchar(20) default NULL,
`BIAYA_PASANG` double default '0',
`JENIS_BAYAR` varchar(20) default 'TUNAI',
`STATUS` varchar(50) default 'LUNAS',
PRIMARY KEY (`NOMOR_JUAL`),
UNIQUE KEY `IDJual` (`NOMOR_JUAL`)
)
//detail
CREATE TABLE `djual` (
`NOMOR_JUAL` char(10) NOT NULL,
`ID_BARANG` varchar(20) NOT NULL,
`JUMLAH` int(11) default '0',
`HARGA_JUAL` double default '0',
`DISKON` double default '0',
KEY `IDJual` (`NOMOR_JUAL`),
KEY `IDBarang` (`ID_BARANG`),
CONSTRAINT `djual_fk` FOREIGN KEY (`NOMOR_JUAL`) REFERENCES `mjual` (`NOMOR_JUAL`) ON UPDATE CASCADE,
CONSTRAINT `djual_fk1` FOREIGN KEY (`ID_BARANG`) REFERENCES `barang` (`ID_BARANG`) ON UPDATE CASCADE
)
//tabel barang
CREATE TABLE `barang` (
`ID_BARANG` varchar(20) NOT NULL,
`NAMA_BARANG` varchar(75) default NULL,
`SATUAN` varchar(10) default NULL,
`HARGA_BELI` double default '0',
`HARGA_BARANG` double default '0',
`STOK` int(11) default '0',
`NAMA_SUPPLIER` varchar(30) default NULL,
PRIMARY KEY (`ID_BARANG`),
UNIQUE KEY `IDGuru` (`ID_BARANG`),
KEY `IDSupplier` (`NAMA_SUPPLIER`),
CONSTRAINT `barang_fk` FOREIGN KEY (`NAMA_SUPPLIER`) REFERENCES `supplier` (`NAMA_SUPPLIER`) ON UPDATE CASCADE
)
//tabel supplier
CREATE TABLE `supplier` (
`NAMA_SUPPLIER` varchar(30) NOT NULL,
`ALAMAT` varchar(100) default NULL,
`TELEPON` varchar(30) default NULL,
`EMAIL` varchar(50) default NULL,
`NAMA_SALESMAN` varchar(30) default NULL,
`TELEPON_SALESMAN` varchar(30) default NULL,
`SISA_HUTANG` double default '0',
)
misalnya saya punya data tabel barang seperti ini
ID_BARANG | NAMA_BARANG | STOK | HARGA_BARANG
00000000001 | sabun colek | 100 | 3000
00000000002 | sabun mandi | 100 | 1500
nah nanti di tabel penjualan (detail) ketika kita masukin
kode 00000000001
jumlah penjualan 15,
maka stok 00000000001 harus menjadi 85. (inilah yang dimaksud trigger AFTER INSERT)
stok hanya akan berkurang, JIKA barang terjual (sesuai kodebarang yang diinput)
CREATE TRIGGER `djual_after_ins_tr` AFTER INSERT ON `djual`
FOR EACH ROW
BEGIN
UPDATE barang SET stok = stok - NEW.jumlah
WHERE ID_Barang = NEW.ID_Barang;
END;
nah gimana kalo ternyata salah input? trus jumlahnya bukan 15, tapi 20, kita tinggal update aja detail penjualannya, ganti si 15 jadi 20
kode 00000000001
jumlah penjualan 20,
maka stok 00000000001 harus menjadi 80. (inilah yang dimaksud trigger AFTER UPDATE)
CREATE TRIGGER `djual_after_upd_tr` AFTER UPDATE ON `djual`
FOR EACH ROW
BEGIN
UPDATE barang SET stok = stok - NEW.jumlah + OLD.jumlah
WHERE ID_Barang = OLD.ID_Barang;
END;
nah gimana kalo salah? dan datanya harus dihapus?
contoh kode 00000000001 uda dimasukkin jumlah jualnya 15, trus mau dihapus karena salah, tentu stoknya harus kembali lagi kan jadi 100,
(inilah yang dimaksud trigger BEFORE DELETE)
jadi sebelum datanya dihapus, sistem otomatis kembalikan stok yang lama.
CREATE TRIGGER `djual_before_del_tr` BEFORE DELETE ON `djual`
FOR EACH ROW
BEGIN
UPDATE barang SET stok = stok + OLD.jumlah
WHERE ID_Barang = OLD.ID_Barang;
END;
yah silahkan anda coba di db engine masing2, sesuaikan sintaksnya dengan versi SQL yang dipakai :D
Semoga membantu,
thanks.
Kamis, 08 Agustus 2013
C# - Membuat Koneksi Dan Melakukan Operasi Database (SQLite embedded database)
Selamat Sore pemirsa setia :D
kali ini saya akan bagikan source code c# untuk membuat koneksi dengan embedded database SQLite
Oke langsung saja
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLite;
//.....//
public frm_department()
{
InitializeComponent();
}
//Tambahkan coding ini setelah constructor (constructor itu kira2 seperti diatas)
private SQLiteConnection conn;
private DataSet ds;
private SQLiteCommand cmd;
private SQLiteDataAdapter sda;
private SQLiteCommandBuilder cmdBuilder;
//Bagian Merah dibawah boleh diganti dengan nama database yang anda inginkan.. directorynya pun bebas terserah anda
private void exec(String query)
{
conn = new SQLiteConnection(@"Data Source=D:\School.sdb;
PRAGMA journal_mode = OFF;
PRAGMA synchronous = OFF;
PRAGMA locking_mode = EXCLUSIVE;
PRAGMA temp_store = MEMORY;
PRAGMA page_size = 4096;
PRAGMA cache_size = 10000;");
conn.Open();
ds = new DataSet();
cmd = conn.CreateCommand();
string sql = query;
sda = new SQLiteDataAdapter(sql, conn);
cmdBuilder = new SQLiteCommandBuilder(sda);
sda.Fill(ds);
}
Nah coding diatas untuk Procedure, sedangkan untuk mengisi Query seperti ini :
//Pembuatan Embedded database
exec("CREATE TABLE [Departments] ( " +
"[Department_ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
"[Faculty_ID] INTEGER NOT NULL," +
"[Employee_ID] INTEGER NOT NULL," +
"[Title] TEXT NOT NULL," +
"[Description] TEXT NOT NULL," +
"[Address] TEXT NOT NULL," +
"[Phone] TEXT NOT NULL," +
"[Date_Register] datetime NOT NULL" +
");");
//Operasi Input Data
exec("insert into departments(faculty_id,employee_id, title, description, address, phone, date_register)"+
"values ("+
"'" + g_faculty_ID.SelectedItem + "',"+
"'" + g_Personnel_Id.SelectedItem + "'," +
"'" + txt_Title.Text + "'," +
"'" + txt_Description.Text + "'," +
"'" + txt_Address.Text + "'," +
"'" + txt_Phone.Text + "'," +
"datetime('now','localtime') );");
MessageBox.Show("Done!");
Jangan lupa di bagian Reference tambahkan SQLite.dll (seperti menambahkan reference Mysqlconnector pada Database server)
Oke sekian dan terimakasih
Bila ada yang ingin ditanyakan silahkan Comment disini :
kali ini saya akan bagikan source code c# untuk membuat koneksi dengan embedded database SQLite
Oke langsung saja
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLite;
//.....//
public frm_department()
{
InitializeComponent();
}
//Tambahkan coding ini setelah constructor (constructor itu kira2 seperti diatas)
private SQLiteConnection conn;
private DataSet ds;
private SQLiteCommand cmd;
private SQLiteDataAdapter sda;
private SQLiteCommandBuilder cmdBuilder;
//Bagian Merah dibawah boleh diganti dengan nama database yang anda inginkan.. directorynya pun bebas terserah anda
private void exec(String query)
{
conn = new SQLiteConnection(@"Data Source=D:\School.sdb;
PRAGMA journal_mode = OFF;
PRAGMA synchronous = OFF;
PRAGMA locking_mode = EXCLUSIVE;
PRAGMA temp_store = MEMORY;
PRAGMA page_size = 4096;
PRAGMA cache_size = 10000;");
conn.Open();
ds = new DataSet();
cmd = conn.CreateCommand();
string sql = query;
sda = new SQLiteDataAdapter(sql, conn);
cmdBuilder = new SQLiteCommandBuilder(sda);
sda.Fill(ds);
}
Nah coding diatas untuk Procedure, sedangkan untuk mengisi Query seperti ini :
//Pembuatan Embedded database
exec("CREATE TABLE [Departments] ( " +
"[Department_ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
"[Faculty_ID] INTEGER NOT NULL," +
"[Employee_ID] INTEGER NOT NULL," +
"[Title] TEXT NOT NULL," +
"[Description] TEXT NOT NULL," +
"[Address] TEXT NOT NULL," +
"[Phone] TEXT NOT NULL," +
"[Date_Register] datetime NOT NULL" +
");");
//Operasi Input Data
exec("insert into departments(faculty_id,employee_id, title, description, address, phone, date_register)"+
"values ("+
"'" + g_faculty_ID.SelectedItem + "',"+
"'" + g_Personnel_Id.SelectedItem + "'," +
"'" + txt_Title.Text + "'," +
"'" + txt_Description.Text + "'," +
"'" + txt_Address.Text + "'," +
"'" + txt_Phone.Text + "'," +
"datetime('now','localtime') );");
MessageBox.Show("Done!");
Jangan lupa di bagian Reference tambahkan SQLite.dll (seperti menambahkan reference Mysqlconnector pada Database server)
Oke sekian dan terimakasih
Bila ada yang ingin ditanyakan silahkan Comment disini :
Sabtu, 03 Agustus 2013
DELPHI - Backup Restore MySQL di delphi dengan komponen Open dan Save Dialog
Malam Pemirsa setia :D
Good night...!
Here Coding to BackUp and Restore your Database with Delphi
for example :
Database : Bengkel ( colored Red, according to your own database - tergantung anda )
Password : 1234 ( colored Red, same, it totally based on your own password - tergantung anda )
Folder MySQL : C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\
(folder MySQL it depends on your directory - tergantung tempat anda install mysql)
add component SaveDialog and OpenDialog on your form
BackUp
SaveDialog1.Execute;
if SaveDIalog1.FileName<>'' then
begin
ShellExecute(self.Handle, PCHAR('open'),
PCHAR('C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump.exe'),
PCHAR('-uroot -p1234 -hlocalhost -R -r "'+ SaveDialog1.FileName+'.sql" bengkel'),
PCHAR('C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin'),SW_SHOW);
MessageDlg('Data Berhasil di Backup !!', mtInformation, [mbOK], 0);
end
else
MessageDlg('GAGAL. Harap Pilih Lokasi!!', mtInformation, [mbOK], 0);
Restore
OpenDialog1.Execute;
if OpenDialog1.FileName<>'' then
begin
ShellExecute(self.Handle,pchar('open'),
PCHAR('C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysql.exe'),
PCHAR('-uroot -p1234 -hlocalhost -e "drop database if exists bengkel; '+
'create database bengkel; use bengkel;\. '+OpenDialog1.FileName+'"'),nil,SW_HIDE);
MessageDlg('Data Berhasil di Restore !!', mtInformation, [mbOK], 0);
end
else
MessageDlg('GAGAL. Harap Pilih Lokasi !!!', mtInformation, [mbOK], 0);
end;
OK easy right?
thanks 4 ur attention and see the next Update at giavano.blogspot.com
Thank you
Good night...!
Here Coding to BackUp and Restore your Database with Delphi
for example :
Database : Bengkel ( colored Red, according to your own database - tergantung anda )
Password : 1234 ( colored Red, same, it totally based on your own password - tergantung anda )
Folder MySQL : C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\
(folder MySQL it depends on your directory - tergantung tempat anda install mysql)
add component SaveDialog and OpenDialog on your form
BackUp
SaveDialog1.Execute;
if SaveDIalog1.FileName<>'' then
begin
ShellExecute(self.Handle, PCHAR('open'),
PCHAR('C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump.exe'),
PCHAR('-uroot -p1234 -hlocalhost -R -r "'+ SaveDialog1.FileName+'.sql" bengkel'),
PCHAR('C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin'),SW_SHOW);
MessageDlg('Data Berhasil di Backup !!', mtInformation, [mbOK], 0);
end
else
MessageDlg('GAGAL. Harap Pilih Lokasi!!', mtInformation, [mbOK], 0);
Restore
OpenDialog1.Execute;
if OpenDialog1.FileName<>'' then
begin
ShellExecute(self.Handle,pchar('open'),
PCHAR('C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysql.exe'),
PCHAR('-uroot -p1234 -hlocalhost -e "drop database if exists bengkel; '+
'create database bengkel; use bengkel;\. '+OpenDialog1.FileName+'"'),nil,SW_HIDE);
MessageDlg('Data Berhasil di Restore !!', mtInformation, [mbOK], 0);
end
else
MessageDlg('GAGAL. Harap Pilih Lokasi !!!', mtInformation, [mbOK], 0);
end;
OK easy right?
thanks 4 ur attention and see the next Update at giavano.blogspot.com
Thank you
Langganan:
Postingan (Atom)