Hai sobat delphiers, udah lama nih ane gak posting,,
just share aja nih coding buat MAKEOVER-nya DELPHI,,
procedure TForm1.FormPaint(Sender: TObject);
var Row, Ht: Word ;
begin
Ht := (ClientHeight + 255) div 256 ;
for Row := 0 to 255 do
with Canvas do begin
Brush.Color := RGB(255, 255, Row);
FillRect(Rect(0, Row * Ht,
ClientWidth, (Row + 1) * Ht)) ;
end;
end;
Kalo mau ganti warnanya, tinggal rubah aja angkanya dengan yang anda mau. pake sistem RGB Colour.
Oke sekian aja terimakasih telah berkunjung di giavano.blogspot.com
Salam Sobat delphiers ^_^
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, 20 November 2013
Rabu, 18 September 2013
DELPHI - Membedakan warna baris di DBGrid
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 ^^
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 ^^
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 :
Langganan:
Postingan (Atom)