Menghilangkan Karakter Spasi di Excel

Menghilangkan Karakter Spasi di Excel


http://dkarimun.blogspot.co.id/2010/11/menghilangkan-karakter-spasi-di-excel.html


Spasi di excel kadang-kadang menjadi menyebalkan. Contoh kasusnya adalah apabila spasi itu terdapat pada kolom yang seharusnya bernilai angka. Ada beberapa trik untuk menghilangkan spasi di Excel.


4. Barusan nemuin kasus yang tidak dapat diselesaikan dengan tiga trik di atas. Kasusnya adalah ada dibelakang angka mengandung spasi dan parahnya yang harus di replace ada ratusan kolom, kalau menggunakan cara manual bisa seharian kali baru selesai. Setelah utak-atik akhirnya menemukan caranya sebagai berikut. =MID(A2,1, LEN(A2)-1).

1. Menggunakan fungsi TRIM. Contoh penggunaanya : =TRIM(A2)
2. Menggunakan fungsi SUBSTITUTE. Contoh penggunaannya : =SUBSTITUTE(A2, " ", "")
3. Menggunakan fitur pencarian (Find and Replace). Pada Find What isikan dengan spasi (tekan tombol spasi :) ) terus pada replace with dikosongkan saja kemudian tekan Replace.

semoga membantu.

combox dinamis chekbox combobox

https://select2.github.io/
http://achmatim.net/2013/07/15/jquery-multiple-select-combobox-untuk-tampilan-combobox-yang-lebih-baik/

       Using Select2 from a CDN

Select2 is hosted on both the cdnjs and jsDelivr CDNs, allowing you to quickly include Select2 on your website.

  1. Include the following lines of code in the <head> section of your HTML.
    <link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" />
    <script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js"></script>
    
    Immediately following a new release, it takes some time for CDNs to catch up and get the new versions live on the CDN.
  2. Initialize Select2 on the <select> element that you want to make awesome.
    <script type="text/javascript">
      $('select').select2();
    </script>
    
  3. Check out the examples page to start using the additional features of Select2.
  4.      




JQuery Multiple-Select Combobox untuk Tampilan Combobox yang Lebih Baik

http://achmatim.net/2013/07/15/jquery-multiple-select-combobox-untuk-tampilan-combobox-yang-lebih-baik/


Combobox atau Selecbox merupakan salah satu komponen penting dari form inputan. Melalui jenis inputan ini, normalnya pengguna dapat memilih satu pilihan yang ditampilkan dalam bentuk drop-down. Namun dengan menambahkan atribut multiple, maka pengguna juga dapat memilih lebih dari satu pilihan sekaligus. Pada jenis combobox dengan pilihan tunggal memang pengguna rata-rata cukup nyaman dengan bentuk dasarnya, namun pada bentuk jamak (multiple-select combobox), pengguna seringkali tidak terlalu nyaman karena dalam memilih beberapa pilihan sekaligus harus menekan tombol Ctrl. Sedangkan tidak semua pengguna memahami hal tersebut.

multi-select-04
Dalam tutorial ini, dibahas mengenai bagaimana memanfaatkan Plugin JQuery Multiple-Select untuk membuat penampilan combobox menjadi lebih nyaman dan lebih mudah dari sisi pengguna. Plugin Jquery Multiple-Select yang akan kita gunakan mengharuskan penggunaan library JQuery versi 1.7.0 ke atas. Plugin ini memiliki beberapa fitur unggulan (seperti dikutip dari situs resminya) sebagai berikut:
  • Secara default akan menampilkan pilihan combobox dalam bentuk checkbox.
  • Mendukung pilihan group (optgroup).
  • Dapat menampilkan beberapa item sekaligus dalam sebuah baris.
  • Terdapat pilihan “Select all”
  • Terdapat pilihan placeholder.
Plugin ini juga dapat dijalankan di berbagai browser modern, seperti IE 7+, Chrome 8+, Firefox 10+, Safari 3+ dan Opera 10.6+.

Download Library JQuery dan Plugin JQuery Multiple-Select

Sebelum mencoba contoh-contoh program dalam tutorial ini, kita harus mendownload library JQuery dan plugin Multiple-Select di link berikut ini:
  1. Download versi terakhir JQuery di laman http://code.jquery.com
  2. Download Plugin JQuery Multiple-Select di halaman http://wenzhixin.net.cn/p/multiple-select atau http://plugins.jquery.com/multiple.select/
input type number atau input type angka

input type number atau input type angka

http://stackoverflow.com/questions/8808590/html5-number-input-type-that-takes-only-integers

<input type="text" placeholder="024123456" class="form-control" name="tlp" value="" onkeypress="return isNumberKey(event);" maxlength="15" >    


The easy way using JavaScript:


<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" >
TRIGER

TRIGER

http://www.arachnoid.com/MySQL/relational_databases.html 

http://handalsoftware.com/kumpulan-tips-dan-trik/128-cara-membuat-trigger-update-saldo-stock-pada-sistem-persediaan-di-mysql.html

https://ndereklangkung.wordpress.com/2010/01/28/sql-menggunakan-trigger-sederhana-untuk-penjumlahan-data/

 http://bisakomputer.com/mencatat-perubahan-data-dengan-log-trigger-di-mysql/

Mencatat Perubahan Data dengan Log trigger di MySQL

Seorang Database Administrator (DBA) terkadang dihadapkan pada situasi dimana terdapat permintaan informasi mengenai perubahan data yang terjadi pada sistem database yang menjadi tanggung jawabnya.
Sistem database RDBMS telah menyediakan mekanisme pencatatan perubahan data untuk proses audit trail, namun terkadang mekanisme audit trail yang ada dirasa tidak mencukupi. Kita mungkin membutuhkan informasi mengenai data lama sebelum di update atau dihapus untuk mengetahui history perubahan data atau sering disebut sebagai Value-Based Auditing (VBA). Salah satu mekanisme VBA adalah dengan menggunakan trigger pada sistem database RDBMS untuk mencatat perubahan data atau dikenal sebagai Log trigger. Tulisan berikut berisi pengenalan Log trigger pada database MySQL beserta contoh implementasinya pada database referensi RKAKL DIPA.

Log trigger

Log trigger atau History trigger merupakan sebuah mekanisme otomatis untuk mencatat perubahan data pada sebuah tabel karena proses insert, update, atau delete dengan menggunakan fungsi trigger pada database.
Perubahan data akan tercatat pada tabel log (history) yang dapat memuat informasi mengenai proses perubahan (insert, update, atau delete), nilai (isi) data sebelum dan sesudah perubahan, komputer yang digunakan untuk melakukan perubahan dan waktu terjadinya perubahan.
Secara sederhana proses Log trigger dapat diilustrasikan sebagai berikut :
BisaKomputer - TriggerUser melakukan perubahan data (insert, update, delete) melalui antar muka aplikasi atau melalui akses langsung ke database (console). Proses tersebut akan mengirimkan perintah ke sistem database untuk melakukan perubahan data pada tabel. Proses perubahan data (insert, update, delete) pada tabel akan memicu trigger untuk menjalankan perintah yang akan mencatat perubahan data ke tabel history (log_table).
Proses pencatatan perubahan data ke tabel history (log_table) dapat dilakukan sebelum atau sesudah proses perubahan data terjadi pada tabel, hal ini ditentukan oleh pilihan trigger yang digunakan (after atau before).
Log_tabel sebagai tabel history dapat berada pada database yang sama dengan table (Database 1) atau pada database yang berbeda (Database 2) dalam satu server database. Penggunaan database yang terpisah lebih memberikan jaminan keamanan karena kewenangan dan hak akses terhadap tabel history dapat atur hanya dimiliki oleh administrator.
Adapun keunggulan penggunaan Log trigger adalah :
  • Sederhana dan mudah diimplementasikan;
  • Merupakan fitur standar yang tersedia hampir di semua RDBMS;
  • Bekerja secara otomatis, sekali Log trigger dibuat proses selanjutnya akan berjalan secara otomatis;
  • Tidak memerlukan perubahan struktur tabel pada tabel yang akan di-log, karena log data disimpan pada tabel yang berbeda;
  • Hanya bekerja pada proses insert, update, dan delete yang didefinisikan terlebih dahulu sehingga kebutuhan besarnya alokasi tabel history (log) dapat diperkirakan;
  • Dapat diimplementasikan pada beberapa tabel atau kolom tertentu saja, tidak harus pada seluruh tabel yang ada di database.
  • Mencatat seluruh perubahan data baik yang dilakukan melalui antar muka aplikasi maupun perubahan data yang dilakukan melalui akses langsung ke database.
Untuk dapat menggunakan Log trigger kita tidak dapat terlepas dari pemahaman mengenai trigger. Trigger merupakan kumpulan perintah yang secara otomatis akan dijalankan jika terjadi operasi tertentu pada sebuah tabel atau view. Trigger dapat menjalankan satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE, dan DELETE pada sebuah tabel.
Selain dapat digunakan untuk melakukan pencatatan perubahan pada sebuah tabel, trigger juga dapat digunakan untuk melakukan update data secara otomatis dan validasi/verifikasi data sebelum data disimpan di database.
Hampir seluruh database RDBMS memiliki trigger. MySQL menambahkan dukungan trigger sejak versi 5.0.2. Walaupun trigger di MySQL memiliki hampir seluruh fitur SQL, namun ada beberapa batasan yang tidak dapat dilakukan oleh trigger di MySQL, yaitu :
  • Tidak dapat menggunakan perintah : SHOW, LOAD DATA, LOAD TABLE, BACKUP DATABASE, RESTORE, FLUSH, dan RETURN;
  • Tidak dapat menggunakan perintah commit atau rollback baik secara implisit maupun eksplisit seperti : COMMIT, ROLLBACK, START TRANSCATION. LOCK/UNLOCK TABLES, ALTER, CREATE, DROP, RENAME;
  • Tidak dapat menggunakan perintah prepare statement seperti PREPARE dan EXECUTE;
  • Tidak dapat menggunakan dynamic SQL Statement;
  • Tidak dapat menjalankan store procedure atau store function melalui trigger.
Untuk membuat sebuah trigger di MySQL perintah umum yang dapat digunakan adalah :
?
1
2
3
4
CREATE TRIGGER triggername
[BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement
Keterangan :
triggername, nama trigger dengan ketentuan sebagaimana penamaan variabel atau identifier di MySQL;
[BEFORE|AFTER], digunakan untuk menentukan kapan proses secara otomatis akan di jalankan, sebelum atau sesudah terjadinya proses perubahan data;
[INSERT|UPDATE|DELETE], digunakan untuk menentukan proses (event) yang dijadikan trigger (pemicu) untuk menjalankan perintah dalam statement;
tablename, merupakan nama tabel dimana trigger berada;
statement, merupakan sekumpulan perintah SQL atau query yang secara otomatis akan dijalankan.
Statement atau perintah dalam trigger dapat berupa satu perintah SQL atau beberapa perintah SQL, jika terdapat beberapa perintah SQL dalam trigger maka gunakan perintah BEGIN dan END untuk mengawali dan mengakhiri perintah.
Di dalam statement kita dapat mengakses data (record) sebelum atau sesudah proses dengan menggunakan perintah NEW atau OLD. NEW digunakan untuk mendapatkan nilai record yang akan diproses (insert atau update), sedangkan OLD digunakan untuk mendapatkan nilai record yang sudah diproses (update atau delete).
Trigger pada database MySQL merupakan objek yang harus didefinisikan terlebih dahulu sebagaimana store procedure dan function. Saat mendefinisikan trigger perlu dicermati penggunaan titik koma (;) pada statement SQL. MySQL secara default menganggap titik koma (;) sebagai delimiter (pembatas akhir sebuah perintah) sehingga trigger yang memiliki beberapa statement tidak akan berjalan sempurna.
Untuk mengantisipasi masalah tersebut, delimiter pada trigger perlu diganti menjadi selain tanda titik koma (;). Penulis menggunakan tanda $$ untuk menggantikan delimiter titik koma (;). Untuk mengubah delimiter sebelum mendefinisikan objek (trigger) gunakan statement ‘DELIMITER” diikuti tanda pemisah baru. Pada akhir pendefinisian objek (trigger) delimiter harus dikembalikan ke tanda titik koma (;).
?
1
2
3
4
5
6
7
DELIMITER $$
CREATE TRIGGER t_wenang_i AFTER INSERT ON t_wenang FOR EACH ROW
BEGIN
//SQL statement
END;
$$
DELIMITER ;
Berikut adalah contoh implementasi Log trigger untuk mencatat perubahan data pada database referensi RKAKL DIPA.

Referensi RKAKL DIPA

Database referensi RKAKL DIPA merupakan database yang berisi seluruh tabel referensi yang digunakan secara bersama antara Direktorat Jenderal Anggaran (DJA) dan Direktorat Jenderal Perbendaharaan (DJPbn) sebagai acuan referensi proses perencanaan dan pelaksanaan anggaran. Perubahan data referensi akan berpengaruh pada dokumen dan laporan yang dihasilkan sehingga konsistensi dan kebenaran data referensi harus dapat diandalkan.
Perubahan data referensi dapat dilakukan baik oleh DJA ataupun DJPbn sesuai dengan kewenangan yang telah disepakati bersama melalui sistem aplikasi RKAKL DIPA Online. Perubahan data referensi secara langsung melalui akses database masih dimungkinkan untuk mengakomodir perubahan data dalam jumlah besar dengan waktu yang terbatas.
Catatan seluruh proses perubahan data (insert, update, delete) yang terjadi pada data referensi kedalam sebuah sistem log data diperlukan sebagai audit trail dimana proses log harus dapat mencatat seluruh perubahan yang terjadi baik yang dilakukan melalui antar muka aplikasi maupun perubahan yang dilakukan secara langsung melalui akses database.
Proses pencatatan perubahan data harus dapat berjalan secara otomatis saat terjadi perubahan data referensi, Log trigger merupakan jawaban atas kebutuhan ini.
Tahapan pembuatan Log trigger yang penulis lakukan adalah sebagai berikut :
Membuat database log.
Database log merupakan tempat dimana seluruh tabel log akan berada, sebagai contoh untuk log database referensi tahun 2014 (dbref2014) penulis menggunakan nama database : dblogref2014.
Berikut perintah untuk membuat database dblogref2014 melalui console mysql :
create database dblogref2014;
Membuat tabel log.
Tabel log digunakan untuk menampung informasi mengenai jenis proses, perubahan data (data sebelum dan sesudah perubahan), tanggal proses, dan komputer yang digunakan untuk proses perubahan data. Tabel log yang dibuat adalah sejumlah tabel referensi yang ada di database referensi RKAKL DIPA.
Untuk menjamin konsistensi antara nama tabel referensi dengan nama tabel log, penulis menggunakan pola penamaan tabel log : log_[namatabel] contoh : nama tabel log untuk tabel Unit Eselon I (t_unit) adalah : log_t_unit
NamaTabel Log_NamaTabel Keterangan
field a field_a Nama field ke 1
field b field_b Nama field ke 2
field c field_n Nama field ke … (n)

field_a0 Nama field ke 1 (data awal)

field_b0 Nama field ke 2 (data awal)

field_n0 Nama field ke … (data awal)

kd_ruh Kode R (rekam) U (ubah) H (hapus)

tgl_ruh Tanggal proses

com_ruh Nama/IP computer
Jumlah field pada tabel log adalah dua kali jumlah field pada tabel referensi (akhiran 0 pada setiap field tabel log menunjukkan informasi data setelah proses update) ditambah field untuk menampung kode proses , waktu proses, dan informasi komputer yang digunakan.
Tabel t_unit dengan struktur data :
?
1
2
3
4
5
6
7
8
9
10
11
Kddept        char(3)   Kode Departemen (Kementerian/Lembaga)
kdunit        char(2)   Kode Unit Eselon I
nmunit        char(200)Nama Unit Eselon I
jabatan1      char(200)Jabatan penanda tangan DIPA (header 1)
jabatan2      char(200)Jabatan penanda tangan DIPA (header 2)
nip           char(100)NIP/NRP
nama          char(150)Nama pejabat penanda tangan DIPA
kdupdate      char(1)   Kode update (antar muka aplikasi)
updater       char(50)  User ID update (antar muka aplikasi)
tglupdate     datetime  Tanggal update (antar muka aplikasi)
email         char(200)Alamat email Eselon I untuk notifikasi
Akan memiliki struktur data log (log_t_unit) sebagai berikut :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Kddept        char(3)   Kode Departemen (Kementerian/Lembaga)
kdunit        char(2)   Kode Unit Eselon I
nmunit        char(200)Nama Unit Eselon I
jabatan1      char(200)Jabatan penanda tangan DIPA (header 1)
jabatan2      char(200)Jabatan penanda tangan DIPA (header 2)
nip           char(100)NIP/NRP
nama          char(150)Nama pejabat penanda tangan DIPA
kdupdate      char(1)   Kode update (antar muka aplikasi)
updater       char(50)  User ID update (antar muka aplikasi)
tglupdate     datetime  Tanggal update (antar muka aplikasi)
email         char(200)Alamat email Eselon I untuk notifikasi
kd_ruh        char(1)   Kode update trigger
com_ruh       char(5)   IP/Nama komputer
tgl_ruh       datetime  Tanggal dan waktu proses update (trigger)
Kddept0       char(3)   Kode Departemen [data awal]
kdunit0       char(2)   Kode Unit Eselon I [data awal]
nmunit0       char(200)Nama Unit Eselon I [data awal]
jabatan10     char(200)Jabatan penanda tangan DIPA (header 1)[data awal]
jabatan20     char(200)Jabatan penanda tangan DIPA (header 2)[data awal]
nip0          char(100)NIP/NRP [data awal]
nama0         char(150)Nama pejabat penanda tangan DIPA [data awal]
kdupdate0     char(1)   Kode update (antar muka aplikasi)[data awal]
updater0      char(50)  User ID update (antar muka aplikasi)[data awal]
tglupdate0    datetime  Tanggal update (antar muka aplikasi)[data awal]
email         char(200)Alamat email Eselon I untuk notifikasi[data awal]
DDL (Data Definition Language) untuk membuat tabel t_unit :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE t_unit (
kddept char(3) NOT NULL,
kdunit char(2) NOT NULL,
nmunit char(200) NOT NULL,
jabatan1 char(200) NOT NULL,
jabatan2 char(200) NOT NULL,
nip char(100) NOT NULL,
nama char(150) NOT NULL,
kdupdate char(1) NOT NULL,
updater char(5) NOT NULL,
tglupdate datetime NOT NULL,
email char(200) DEFAULT NULL,
PRIMARY KEY (kddept,kdunit)
) ENGINE=MyISAM
DDL untuk membuat tabel log_t_unit :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE TABLE log_t_unit (
kd_ruh char(1) NOT NULL,
com_ruh char(50) NOT NULL,
tgl_ruh datetime NOT NULL,
kddept char(3) NOT NULL,
kdunit char(2) NOT NULL,
nmunit char(200) NOT NULL,
jabatan1 char(200) NOT NULL,
jabatan2 char(200) NOT NULL,
nip char(100) NOT NULL,
nama char(150) NOT NULL,
kdupdate char(1) NOT NULL,
updater char(5) NOT NULL,
tglupdate datetime NOT NULL,
email char(200) DEFAULT NULL,
kddept0 char(3) NOT NULL,
kdunit0 char(2) NOT NULL,
nmunit0 char(200) NOT NULL,
jabatan10 char(200) NOT NULL,
jabatan20 char(200) NOT NULL,
nip0 char(100) NOT NULL,
nama0 char(150) NOT NULL,
kdupdate0 char(1) NOT NULL,
updater0 char(5) NOT NULL,
tglupdate0 datetime NOT NULL,
email0 char(200) DEFAULT NULL,
PRIMARY KEY (kddept,kdunit)
) ENGINE=MyISAM
Untuk selanjutnya tulisan ini akan menggunakan tabel t_unit dan log_t_unit sebagai contoh implementasi Log trigger.
Membuat trigger
Karena database MySQL belum mendukung proses insert, update, dan delete dalam sebuah trigger maka untuk setiap proses (insert, update, dan delete) perlu dibuatkan masing-masing trigger sebagai berikut :
  1. Trigger insert
    Nama trigger insert : [NamaTabel]_i, contoh : t_unit_i
    Perintah untuk membuat trigger insert pada tabel t_unit :
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    </pre>
    DELIMITER $$
    DROP TRIGGER dbref2014.t_unit_i $$
    CREATE TRIGGER dbref2014.t_unit_i AFTER INSERT ON dbref2014.t_unit
    FOR EACH ROW BEGIN
    INSERT INTO dbLogRef2014.log_t_unit(kd_ruh,com_ruh,tgl_ruh,kddept,kdunit,
    nmunit,jabatan1,jabatan2,nip,nama,kdupdate,updater,tglupdate,email) values
    ('i', user(),now(),new.kddept,new.kdunit,new.nmunit,new.jabatan1,
    new.jabatan2,new.nip,new.nama,new.kdupdate,new.updater,new.tglupdate,
    new.email);
    END;
    $$
    DELIMITER ;
    <pre>
  2. Trigger update
    Nama trigger update : [NamaTabel]_u, contoh : t_unit_u
    Perintah untuk membuat trigger update pada tabel t_unit :
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    </pre>
    DELIMITER $$
    DROP TRIGGER dbref2014.t_unit_u $$
    CREATE TRIGGER dbref2014.t_unit_u AFTER UPDATE ON dbref2014.t_unit
    FOR EACH ROW BEGIN
       INSERT INTO dbLogRef2014.log_t_unit(kd_ruh, com_ruh, tgl_ruh,kddept,
       kdunit,nmunit,jabatan1,jabatan2,nip,nama,kdupdate,updater,tglupdate,
       email,kddept0,kdunit0,nmunit0,jabatan10,jabatan20,nip0,nama0,kdupdate0,
       updater0,tglupdate0,email0) values ('u', user(),now(),old.kddept,
       old.kdunit,old.nmunit,old.jabatan1,old.jabatan2,old.nip,old.nama,
       old.kdupdate,old.updater,old.tglupdate,old.email,new.kddept,new.kdunit,
       new.nmunit,new.jabatan1,new.jabatan2,new.nip,new.nama,new.kdupdate,
       new.updater,new.tglupdate,new.email);
    END;
    $$
    DELIMITER ;
    <pre>
  3. Trigger delete
    Pola nama trigger delete : [NamaTabel]_d, contoh : t_unit_d)
    Perintah untuk membuat trigger delete untuk tabel t_unit :
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    </pre>
    DELIMITER $$
    DROP TRIGGER dbref2014.t_unit_d $$
    CREATE TRIGGER dbref2014.t_unit_d AFTER DELETE ON dbref2014.t_unit
    FOR EACH ROW BEGIN
       INSERT INTO dbLogRef2014.log_t_unit(kd_ruh, com_ruh,tgl_ruh,kddept,
       kdunit,nmunit,jabatan1,jabatan2,nip,nama,kdupdate,updater,tglupdate,
       email) values ('d', user(),now(),old.kddept,old.kdunit,old.nmunit,
       old.jabatan1,old.jabatan2,old.nip,old.nama,old.kdupdate,old.updater,
       old.tglupdate,old.email);
    END;
    $$
    DELIMITER ;
    <pre>
Perintah DELIMITER $$ berfungsi untuk menggantikan titik koma (;) sebagai delimiter default MySQL menjadi $$.
Perintah DROP TRIGGER dbref2014.t_unit_i berfungsi untuk menghapus trigger t_unit_i pada database dbref2014 jika trigger dengan nama t_unit_i sudah ada pada tabel t_unit di database dbref2014. Delimiter $$ pada akhir baris menandakan bahwa baris perintah tersebut merupakan sebuah statement yang akan di jalankan.
Perintah CREATE TRIGGER dbref2014.t_unit_i berfungsi untuk membuat trigger dengan nama t_unit_i pada tabel t_unit di database dbref2014.
Perintah AFTER … merupakan action time yang menunjukkan kapan perintah akan dijalankan, pada trigger t_unit_i perintah akan dijalankan setelah proses delete pada tabel t_unit selesai dijalankan.
Perintah FOR EACH ROW merupakan trigger body yang berisi perintah-perintah yang akan dijalankan setiap kali trigger diaktifkan.
Perintah BEGIN menunjukkan awal statement SQL, dapat berupa satu atau beberapa baris perintah SQL.
Perintah INSERT INTO … merupakan statement SQL yang akan dijalankan oleh trigger. Dalam statement SQL nilai kd_ruh diisi sesuai dengan proses yang terjadi (r untuk rekam/insert, u untuk ubah/update, dan h untuk hapus/delete), user() digunakan untuk mendapatkan nilai IP atau nama komputer yang digunakan untuk melakukan proses, now() digunakan untuk mendapatkan nilai tanggal dan waktu proses.
new.[namafield] akan berisi nilai yang akan menggantikan isi nilai filed dan old.[namafield] akan berisi nilai yang akan digantikan dalam sebuah filed. new.[namafield] digunakan pada trigger insert dan update, untuk mendapatkan nilai saat proses perekaman dan perubahan data. old.[namafield] digunakan pada trigger delete untuk mendapatkan nilai data yang dihapus.
Pendefinisian nama database pada perintah INSERT INTO dbLogRef2014.log_t_unit diperlukan karena database dimana tabel log_t_unit berada terletak pada database (dblogref2014) yang berbeda dengan tabel t_unit (dbref2014).
Perintah END; menunjukkan akhir statement SQL.
Perintah $$ digunakan untuk memberikan perintah kepada MySQL untuk menjalankan perintah atau perintah-perintah yang didefinisikan pada bagian BEGIN hingga END. Perintah DELIMITER ; berfungsi mengembalikan nilai default delimiter menjadi titik koma (;).
Untuk setiap tabel referensi akan mempunyai tiga trigger.
BisaKomputer - Trigger - EditorMenguji Log trigger
Pengujian Log trigger dilakukan dengan memberikan perintah insert, update, dan delete pada tabel t_unit dan memonitor hasilnya pada tabel log_t_unit.
  • Insert
    Perintah berikut akan menambahkan data unit 03 pada KL 001 :
    ?
    1
    2
    3
    <pre>
    INSERT INTO t_unit(kddept, kdunit, nmunit, jabatan1, jabatan2, nip, nama, kdupdate, updater, tglupdate, email VALUES ('001', '03', 'MPR (test)', 'WAKIL SEKRETARIS JENDERAL', '', 'NIP 10560618198', 'Dra. SELFI', '', '', '', 'anggaran.mpr@gmail.com');
    </pre>
  • Update
    Perintah berikut akan mengubah nomenklatur unit 03 pada KL 001 dari MPR (test) menjadi MPR :
    ?
    1
    2
    3
    <pre>
    update t_unit set nmunit ='MPR' where kddept ='001' and kdunit = '003';
    </pre>
  • Delete
    Perintah berikut akan menghapus data unit 03 pada KL 001 :
    ?
    1
    2
    3
    <pre>
    delete from t_unit where kddept ='001' and kdunit = '03';
    </pre>
    Hasil Log trigger dapat dilihat pada tabel log_t_unit sebagai berikut :
    BisaKomputer - Trigger - Report
    ?
    1
    SELECT kd_ruh, com_ruh, tgl_ruh, kddept, kdunit, nmunit, kddept0, kdunit0, nmunit0 FROM log_t_unit;
    Pembatasan query dilakukan untuk menyederhanakan hasil.
    Dari hasil log tabel akan diperoleh informasi :
    • Proses insert (kd_ruh : i) dilakukan oleh user di2k melalui komputer @_ (IP), pada tanggal 02 Juni 2014 pukul 07:27:58 dengan data : kddept 001, kdunit 03, nmunit MPR (test).
    • Proses update (kd_ruh : u) dilakukan pada tanggal 02 Juni 2014 pukul 07:30:00, data sebelum perubahan terdapat pada kolom kddept, kdunit, dan nmunit dan hasil perubahan terdapat pada kolom kddept0, kdunit0, dan nmunit0
    • Proses hapus (kd_ruh : d) dilakukan pada tanggal 02 Juni 2014 pukul 07:33:42
Sampai dengan tulisan ini dibuat tabel referensi pada database referensi RKAKL DIPA tahun 2014 berjumlah 106 tabel.
Untuk menghasilkan tabel log dan trigger dengan nama dan struktur sebagaimana telah diuraikan diatas pada seluruh tabel referensi penulis menggunakan Microsoft Visual FoxPro dengan script sebagaimana terlampir.
Hasil program tersebut adalah membuat tabel log untuk seluruh tabel referensi dan file trigger.log yang terletak di folder c:\work\ berisi perintah SQL untuk membuat trigger di seluruh tabel referensi. Jika Anda menggunakan SQLyog pilih menu File – Open untuk membuka file trigger.log di query console selanjutnya click Execute All Queries untuk menjalankan perintah pembuatan trigger.

Penutup

Log trigger sebagai mekanisme audit trail hendaknya tidak dimaksudkan sebagai upaya mendapatkan alat bukti kesalahan untuk melakukan hukuman, namun bertujuan sebagai pelindung dan alat bukti konsistensi atas kinerja yang baik karena dengan Log trigger seluruh kronologis perubahan data dapat terekam dengan baik.

Penggunaan SUM, MIN, MAX, COUNT, AVG Di SQL

Penggunaan SUM, MIN, MAX, COUNT, AVG Di SQL

http://dwirandyherdinanto.blogspot.co.id/2014/02/penggunaan-sum-min-max-count-avg-di-sql.html

Penggunaan SUM, MIN, MAX, COUNT, AVG Di SQL Pada postingan kali ini saya akan membahas tentang Penggunaan SUM, MIN, MAX, COUNT, AVG Di SQL baiklah sebelum memulainya ada baiknya anda membaca postingan saya sebelumnya yaitu Syntak Dasar SQL Apa itu SUM ? SUM adalah suatu fungsi pada SQL yang digunakan untuk menjumlahkan nilai dari sekumpulan record Apa itu MIN ? MIN adalah suatu fungsi pada SQL yang digunakan untuk mendapatkan nilai terkecil dari sekumpulan record Apa itu MAX? MAX adalah kebalikan dari SUM, yaitu fungsi yang digunakan untuk mendapatkan nilai tertinggi dari sekumpulan record Apa itu COUNT? Count adalah suatu fungsi pada SQL yang digunakan untuk mendapatkan jumlah baris atau record dari suatu tabel Untuk contoh penggunaannya : 1. Buatlah sebuah database dengan nama latsql 2. Buatlah sebuah tabel di dalam database latsql dengan script dibawah ini 1 CREATE TABLE barang ( 2 kd_brg varchar(20) primary key, 3 nm_brg varchar(50) not null, 4 hrg_jual int not null, 5 stock int not null 6 ) 3. Isi data pada tabel barang dengan script dibawah ini INSERT INTO barang (kd_brg,nm_brg,hrg_jual,stock) values ('BRG0001','Kecap','8000','10'), ('BRG0002','Sabun','5000','15'), ('BRG0003','Kapas','3000','5'), ('BRG0004','Sambal','7000','15'), ('BRG0005','Aqua','3000','15') Jika sudah sekarang waktunya untuk Penggunaan SUM, MIN, MAX, COUNT, AVG Di SQL Contoh penggunaan SUM, misalkan anda ingin menjumlahkan stock semua data barang 1 SELECT SUM(stock) as jumlahstock FROM barang as jumlahstcok adalah fungsi untuk memberikan nama field pada query tersebut Contoh penggunaan MIN, misalkan anda ingin mendapatkan nilai terkecil dari stock barang 1 SELECT MIN(stock) as stockterkecil FROM barang as stockterkecil adalah fungsi untuk memberikan nama field pada query tersebut Contoh penggunaan MAX, misalkan anda ingin mendapatkan nilai terbesar dari stock barang 1 SELECT MAX(stock) as stockterbesar FROM barang as stockterbesar adalah fungsi yang memberikan nama field pada query tersebut Contoh penggunaan COUNT, misalkan anda ingin mendapatkan jumlah barang yang memiliki stock 15 1 SELECT count(stock) as stock15 FROM barang where stock='15' as stock15 adalah fungsi yang memberikan nama field pada query tersebut Contoh penggunaan AVG, misalkan anda ingin mendapatkan rata-rata harga jual barang 1 SELECT AVG(stock) as ratastock from barang as ratastock adalah fungsi yang memberikan nama field pada query tersebut Anda bisa mendownload database + source codenya di sinii password : http://dwirandyherdinanto.blogspot.com/ Sekian dulu dari saya Terima kasih sudah mengunjungi blog saya,,dan jangan lupa berikan komentar

Source: http://dwirandyherdinanto.blogspot.co.id/2014/02/penggunaan-sum-min-max-count-avg-di-sql.html
Penggunaan Variable di MySQL

Penggunaan Variable di MySQL

 http://mysql.phi-integration.com/sql/penggunaan-variable

Variable dan Penamaannya di MySQL

Pada berbagai kondisi, kita memiliki beberapa perintah atau statement SQL dan kita ingin menyimpan hasil eksekusi dari perintah yang satu ke perintah selanjutnya. Sebagai contoh :
  • kita mengambil suatu kode transaksi yang kita anggap tidak valid.
  • dari kode transaksi yang sudah kita ketahui tersebut kita masukkan data ke suatu audit table.
  • kemudian kita hapus data transaksi dari header maupun detilnya, atau ..
  • kita rubah saja data transaksi tersebut dengan status "tidak valid"
Bagaimana kita melakukan hal tersebut ? Jika Anda terbayang menggunakan subquery untuk melakukan hal tersebut tentunya akan sangat memberatkan server MySQL sendiri karena perlu banyak cache.

Solusinya adalah dengan menggunakan variable yang berfungsi sebagai "pengingat" nilai tersebut dan dapat direferensikan dengan suatu nama di statement-statement berikutnya yang independen. Tetapi ini tentunya hanya dalam satu sesi koneksi yang sama.

Penamaan variable pada sql memiliki prefix @, artinya setiap nama variable diawali dengan simbol @ diikuti nama variable. Sebagai contoh :  @var1, @kode_transaksi, @nilai_awal, dan lain-lain.

Inisialisasi Variable

Inisialisasi variable pada MySQL dapat dilakukan dengan penggunaan perintah SET dan dalam konstruksi perintah lainnya seperti SELECT, syntax dan perbedaannya adalah sebagai berikut :
  • SET digunakan untuk inisialisasi variable dengan satu nilai pada suatu waktu dengan penggunaan operator assignment " = " atau " := ".

    Syntax :

       SET @namavar1 = nilai [, @namavar2 = nilai2 [, @namavar = nilai3] ]  ;
    atau

       
    SET @namavar1 := nilai [, @namavar2 = nilai2 [, @namavar := nilai3] ]  ;

    Contoh :
    • SET @kolom_pertama = 'kode_produk';
    • SET @nilai1 = 10, @nilai2 = 20, @kolom = "nilai_penjualan";
    • dan seterusnya
  • SELECT digunakan untuk inisialisasi variable dengan operator assignment " :=dan mengisi variable dengan nilai lain sesuai iterasi hasil row dari eksekusi query. Operator " = " pada statement ini dianggap sebagai operator pembanding nilai (value omparison).

    Syntax :
       SELECT @namavar1 := nilai [, @namavar2 := nilai2 [, @namavar := nilai3] ]  ;

    Contoh :
    • SELECT @nilai1 := 10, @nilai2 := 20, @kolom := "nilai_penjualan";
    • SELECT @nilai1 from (SELECT @nilai1 := 20) T;
    • dan seterusnya

Urutan Pemberian Nilai Variable pada SELECT

Jika Anda sudah jelas dengan pemberian nilai variable, mari kita lihat proses urutan proses pemberian nilai ini pada SELECT statement :
  • Jika terdapat daftar variable dengan pemisah koma. Maka operasi variable di depan akan didahulukan dan memberi efek kepada variable di belakangnya.

    Contoh :
    • SET @nilai := 10; SELECT @nilai, @nilai := 20; -- Hasilnya 10, 20
    • SET @nilai := 10; SELECT @nilai := 10, @nilai; -- Hasilnya 10, 10
  • Jika operasi variable terdapat subquery maka operasi tersebut akan terjadi terlebih dahulu dibandingkan query yang memanggil subquery tersebut.

    Contoh :
    • SET @nilai := 20; SELECT @nilai from (select @nilai := 10) as T; -- Hasilnya 10

Penutup

Demikian artikel singkat mengenai penggunaan variable ini kami sajikan. Semoga bisa berguna buat kita semua dalam penggunaannya sehari-hari. Jika Anda ingin berdiskusi lebih lanjut silahkan bergabung ke user group belajar sql.

Dan untuk Anda yang ingin mengambil script SQL dari contoh-contoh pada artikel ini silahkan mengunjungi halaman Daftar Script SQL. Script yang terkait dengan artikel ini adalah penggunaan_variable.sql.
Menambahkan dan Mengurangi Waktu di MySQL

Menambahkan dan Mengurangi Waktu di MySQL

http://mysql.phi-integration.com/sql/fungsi-tanggal-dan-waktu/menambahkan-dan-mengurangi-waktu-di-mysql

 

http://achmatim.net/2010/09/20/perintah-mysql-berhubungan-dengan-tanggal-dan-waktu/

 

Pendahuluan

Ada beberapa cara untuk menambahkan tanggal dan jam tertentu di MySQL, yaitu  :
  1. Menggunakan operator plus (+) dan  minus (-) diikuti keyword INTERVAL dan unit dari Interval.
  2. Menggunakan fungsi-fungsi berikut :
    • DATE_ADD, digunakan untuk menambahkan jumlah hari atau interval waktu pada tanggal tertentu.
    • DATE_SUB, digunakan untuk mengurangi interval waktu pada tanggal tertentu.
    • ADDDATE, digunakan untuk menambahkan jumlah hari atau interval waktu pada tanggal tertentu.
    • SUBDATE, digunakan untuk mengurangi jumlah hari atau interval waktu pada tanggal tertentu.
    • SUBTIME, digunakan untuk mengurangi dari dua ekspresi waktu (time atau datetime).
    • PERIOD_ADD, menambahkan jumlah bulan pada periode tertentu. Periode tersebut dalam format YYMM atau YYYYMM.
Bagian berikut di bawah menunjukkan contoh-contoh penggunaan dari operator dan fungsi tersebut di atas.

Menggunakan Operator Plus dan Minus

Contoh penggunaannya operator plus minus ( + / - ) adalah sebagai berikut :

SELECT '2010-01-01 00:00:00' + INTERVAL 1 DAY; -- Menambahkan 1 hari
SELECT '2010-01-01 00:00:00' - INTERVAL '30' MINUTE; -- Mengurangi 30 menit
SELECT '2010-01-01 00:00:00' - INTERVAL '1-3' YEAR_MONTH; -- Mengurangi 1 tahun dan 3 bulan
SELECT '2010-01-01' + INTERVAL '2' MONTH; -- Menambahkan 2 bulan
SELECT '2010-01-01' + INTERVAL '2-6' YEAR_MONTH; -- Menambahkan 2 tahun dan 6 bulan
SELECT '2010-01-01' - INTERVAL '1-3' YEAR_MONTH; -- Mengurangi 1 tahun dan 3 bulan

-- Menambahkan interval 3 tahun pada field tgl_transaksi dari database PHI-Minimart
SELECT tgl_transaksi + INTERVAL '3' YEAR from tr_penjualan;

Untuk rincian mengenai INTERVAL, silahkan klik halaman wiki pada link ini

Penggunaan DATE_ADD

Syntax :

DATE_ADD(date, INTERVAL expr unit)

Contoh :

SELECT DATE_ADD('2010-01-01', INTERVAL 3 MINUTE); -- menambahkan 3 minute
SELECT DATE_ADD('2010-01-01 00:00:00', INTERVAL '2-6' YEAR_MONTH); -- menambahkan 2 tahun 6 bulan

-- Menambahkan 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart
SELECT DATE_ADD(tgl_transaksi, INTERVAL 12 HOUR) FROM tr_penjualan;

Penggunaan DATE_SUB

Syntax :

DATE_SUB(date, INTERVAL expr unit)

Contoh :

SELECT DATE_SUB('2010-01-01', INTERVAL 3 MINUTE); -- mengurangi 3 minute
SELECT DATE_SUB('2010-01-01 00:00:00', INTERVAL '2-2' YEAR_MONTH); -- mengurangi 2 tahun 2 bulan

-- Mengurangi 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart
SELECT DATE_SUB(tgl_transaksi, INTERVAL 12 HOUR) FROM tr_penjualan;

Penggunaan ADDDATE

Ada 2 jenis syntax yang berlaku untuk fungsi ADDDATE ini, yaitu :
ADDDATE(date, INTERVAL expr unit)

atau

ADDDATE(expr, days)

Contoh :
SELECT ADDDATE('2010-01-01', INTERVAL 3 MINUTE); -- menambahkan 3 minute
SELECT ADDDATE('2010-01-01 00:00:00', INTERVAL '2-2' YEAR_MONTH); -- menambahkan 2 tahun 2 bulan
SELECT ADDDATE('2010-01-01 00:00:00', 3); -- menambahkan 3 hari

-- Menambahkan 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart
SELECT ADDDATE(tgl_transaksi, INTERVAL 12 HOUR) FROM tr_penjualan;

-- Menambahkan 7 hari pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart
SELECT ADDDATE(tgl_transaksi, 7) FROM tr_penjualan;

Penggunaan SUBDATE

Syntax :
SUBDATE(date, INTERVAL expr unit)

atau

SUBDATE(expr, days)

Contoh :
SELECT SUBDATE('2010-01-01', INTERVAL 3 MINUTE); -- mengurangi  3 minute
SELECT SUBDATE('2010-01-01 00:00:00', INTERVAL '2-2' YEAR_MONTH); -- mengurangi  2 tahun 2 bulan
SELECT SUBDATE('2010-01-01 00:00:00', 3); -- mengurangi 3 hari

-- Mengurangi 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart
SELECT SUBDATE(tgl_transaksi, INTERVAL 12 HOUR) FROM tr_penjualan;

-- Mengurangi 7 hari pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart
SELECT SUBDATE(tgl_transaksi, 7) FROM tr_penjualan;

Penggunaan SUBTIME

Syntax :
SUBTIME(ekspresi_tanggal_waktu, ekspresi_waktu)

Contoh :

SELECT SUBTIME('2010-01-01 00:00:00', '11:00:00'); -- mengurangi 12 jamSELECT SUBTIME('2010-01-01 12:00:00', '1'); -- mengurangi 1 detikSELECT SUBTIME('2010-01-01 12:00:00', '1:0:0.000000'); -- mengurangi 1 jamSELECT SUBTIME('2010-01-01 12:00:00', '1:1'); -- mengurangi 1 jam dan 1 menitSELECT SUBTIME('2010-01-01 12:00:00', '1 1:1'); -- mengurangi 1 hari, 1 jam dan 1 menit

Penggunaan PERIOD_ADD

Syntax :
PERIOD_ADD(year_month_period, months)

Keterangan : 
  • year_month_period adalah dalam format YYMM atau YYYYMM.
Contoh :
SELECT PERIOD_ADD('201001',3); -- Menambahkan 3 bulan pada Januari 2010
SELECT PERIOD_ADD('1001',3); -- Menambahkan 3 bulan pada Januari 2010
SELECT PERIOD_ADD('201001',-3); -- Mengurangi 3 bulan pada Januari 2010

Sumber Referensi