Cara Backup Data MYSQL Saat Windows Error

phpmyadmin photo phpmyadmin_zpssdpf9exc.jpg

Codegratis.wordpress.com. Mari belajar coding dengan mudah dan sederhana. Backup data pada MYSQL memang mudah, tingal masuk ke phpmyadmin kalo yang pakai XAMPP terus pilih databasenya terus eksport udah beres, itu kalo Windows-nya dalam keadaan normal, tapi gimana kalo dalam keadaan Windows-nya error………….wah bisa jadi mimpi buruk tu kalo yang belum pernah ngalamin kasus kaya gini, bisa hilang semua database yang telah kita buat dengan susah payah. Seperti kasus yang saya alami kemarin, cukup puyeng sich mengatasinya, soalnya problemnya complicated banget sich n baru pertama. Nah saya uraikan dulu problem yang saya alamin kemaren tentang backup database MYSQL, barangkali Anda juga pernah dan sedang mengalaminya.

Problem pertama, OS sudah beda, OS yang saya gunakan Win 7 sementara OS klient saya Win XP, sebenarnya dulu klient saya sudah saya suruh ganti ke Win 7, tapi gak diganti-ganti mungkin dengan kejadian ini komputernya dapat diganti ke Win 7.

Problem ke dua, versi MYSQL dan XAMPP pada PC klient saya dan Laptop saya beda, kilent saya menggunakan MYSQL versi 5.5.25a maklum kan Win XP, saya instal XAMPP versi terbaru gak support, ya udah saya instalkan XAMPP versi 1.8.0 VC9 di PC klien saya, sementara saya sudah menggunakan XAMPP versi terbaru……………… Nah mari kita pecahkan satu persatu problem tersebut.

Solusi problem pertama, gunakan Hirens Boot agar kita dapat mengakses komputer yang Windows-nya sedang error, untuk yang mau belajar menggunakan Hirens Boot totorialnya ada disini. Mudah kan solusi pertama tinggal booting Hirens Boot ke Windows yang sedang error lalu ambil data MYSQL nya, na ambil datanya untuk kita gunakan pada solusi yang kedua.

Ok pada gak sabar ya sama solusi kedua, yuk mari……… Untuk XAMPP versi 1.8.0 VC9 tidak semudah dan segampang XAMPP versi terbaru dalam penanganan backup data saat Windows error.

  • Langkah pertama, copy folder XAMPP beserta seluruh isinya dari drive C komputer yang Windows-nya error dengan Hirens Boot. Amankan folder XAMPP yang telah kita copy tadi, ingat jangan di otak-atik ya, cukup copy dan amankan…………SIAP 86 ! hahahahahaha
  • Langkah ke dua, karena versi XAMPP saya dengan klien berbeda maka saya downgrade dech XAMPP nya, jadinya sekarang sementara menggunakan XAMPP versi 1.8.0 VC9.
  • Langkah ke tiga, na ini yang saya bilang seorang programer sejati harus siap sejak jauh-jauh hari……..halah sok bijak. Untungnya saya sudah instal dual boot OS di laptop tercinta saya, alias laptop saya udah terinstal Ubuntu versi 12.04 LTS. Jadi kalo ada apa-apa dengan Windows 7, Ubuntu sudah siap membackup…….hahahahahahaha. Oke lah kalo begitu, folder XAMPP yang telah kita copy dan amankan tadi kita paste ke drive C XAMPP komputer kita dengan bantuan OS Ubuntu, kenapa harus pake Ubuntu, karena di Ubuntu copy paste di drive C gak banyak dialog yang membingungkan yang bisa membuat hasil paste kita tidak maksimal alias tidak dapat di paste semua, kalo yang belum pake Ubuntu giman dong ? instal dong atau gunakan saja Ubuntu Live USB, banyak kok tutorialnya di warnet…………..eh salah internet………..:)

Ingat ya pastikan sebelumnya versi XAMPP sudah sama, sebelum paste folder XAMPP di drive C.

Jika saja klient saya menggunakan versi XAMPP terbaru, pasti gampang penanganannya, tinggal copy C:/xampp/mysql/data/nama_database, terus paste pada C:/xampp/mysql/data komputer kita, aman sudah datanya bisa langsung di cek di phpmyadmin pasti sudah langsung masuk database beserta isinya.

  • Langkah ke empat, saya restart laptop saya untuk pindah ke Windows 7. Lalu saya cek di localhost/phpmyadmin…………..walaaaaaaa akhirnya database yang saya backup dan amankan tadi sudah ada berserta semua isinya. Alhamdulihah, gak jadi hilang 713 record item barang yang sangat berharga input datanya aja sampai tiga minggu, kalo sampai hilang dan tak terselamtkan bisa nangin tiga minggu…….hahahahahaha
  • Langkah ke empat ekspor database yang sudah kita amankan, buat jaga-jaga kalo ada apa-apa lagi.
  • Langkah ke lima finish……………….hahahahaha ngaso dulu………….

Nah berdasarkan pengalaman yang tidak mengenakan tersebut sebainya kita harus memindahkan lokasi penyimpanan database MYSQL secara defaut, bukan lagi di C:/xampp/mysql/data/ sehingga kalo terjadi error pada Windows, database tetap aman dan tidak membuat kita was-was. Misalkan kita pindahkan saja ke drive D:/database, berikut step-stepnya :

  • Copy semua isi dari folder C:/xampp/mysql/data, ingat jangan sampai ada ketinggalan dalam mengcopy, lalu paste ke D:/database.
  • Lalu edit my.ini yang berada pada C:/xampp/mysql/bin ganti :

datadir = “D:/database”

innodb_data_home_dir = “D:/database”

innodb_log_group_home_dir = “D:/database”

  • Restart MYSQL pada XAMPP Control Panel.
  • Buka lacalhost/phpmyadmin di browser Anda
  • InsyaAllah pasti mau………….
  • Coba buat database atau tabel baru, dan cek di D:/database pasti sudah ada database atau tabel baru Anda disitu. Kalo database baru pasti ada foldernya didalam D:/database sesuai dengan nama database

Ok lah semua pengalaman dan tips saya mengenai backup database MYSQL saat Windows error sudah saya kupas tuntas dan lugas, semoga pengalaman saya ini dapat menjadi ilmu dan bahan belajar bagi para rekan-rekan programer pemula seperti saya ini, agar selalu siap menghadapai berbagai kemungkinan terburuk dalam dunia pemrograman…………………halah sok bijak. Kalo ada yang salah, kurang, atau mau kasih kritik, saran, dan ide langsung komen ya. Ojo lali rek………………tak enteni yoooooo……………. 🙂

Iklan

Fungsi Maxdate Dan Mindate Pada Delphi

Codegratis.wordpress.com. Mari belajar coding dengan mudah dan sederhana. Fungsi maxdate dan mindate sebenarnya fungsi yang sangat sederhana pada delphi, tapi berhubung saya cari-cari di blog lainnya lumayan jarang yang menulis, makanya saya coba untuk men-share, barangkali ada yang bingung cari-cari kesana kemari, siapa tahu tulisan saya ini bermanfaat.

Oke lah langsung saja, fungsi maxdate dan mindate digunakan untuk mensetting tanggal pada datetimepicker, contoh penerapannya biasanya pada tanggal lahir. Fungsi maxdate digunakan untuk mensetting tanggal maksimal yang dapat ditampilkan pada datetimepicker, maksudnya tanggal maksimal ke depan atau ke belakang berdasarkan tahun pada tanggal saat ini (sistem), contoh kita gunakan tanggal lahir tanggal saat ini 3/06/2015 tanggal lahir maksimal yang ingin kita tampilkan 3/06/1997 atau yang dapat diterima yang sudah berumur 18 tahun.

Sedangakan fungsi mindate akan mensetting tanggal minimal yang dapat ditampilkan pada datetimepicker, tanggal minimal ini harus berada dibawah tanggal maksimal, contohnya maxdate  3/06/1997, maka mindate nya 3/06/1985.

Masih bingung mari kita langsung saja ke source codenya
procedure tf_pkh.set_tanggal;

procedure tf_pkh.set_tanggal;
begin
dt.Date:=IncYear(date(),-18);
dt.MaxDate:=IncYear(date(),-18);
dt.MinDate:=IncYear(date(),-35);
end;

Penjelasan :

  • Baris 3 : tanggal yang ditampilkan adalah tanggal, bulan sesuai tanggal saat ini, namun tahunnya dikurangi 18 tahun, kalo tahun saat ini 2015 maka tahun yang ditampilkan pada datetimepicker adalah tahun 1997. Pada contoh ini diterapkan pada tanggal lahir, jadi tanggal lahir yang dapat diterima paling muda adalah kelahiran tahun 1997 atau usia 18 tahun.
  • Baris 4 : tanggal maksimal yang dapat ditampilkan adalah tanggal, bulan sesuai tanggal saat ini, namun tahunnya dikurangi 18 tahun.
  • Baris 5 : tanggal minimal yang dapat ditampilkan dan diterima datetimepicker adalah tanggal, bulan sesuai tanggal saat ini, namun tahunnya dikurangi 35 tahun. Artinya kelahiran tertua yang dapat diterima adalah tahun 1985 atau umur 35 tahun. Yang harus dicermati mindate harus berada dibawah maxdate.
  • Procedure ini dijalankan saat form keaadan aktif atau inputan sudah aktif, dan sudah siap digunakan untuk menginput data.

procedure tf_pkh.tanggal_netral;

procedure tf_pkh.tanggal_netral;
begin
dt.MaxDate:=date();
dt.Date:=date();
dt.MinDate:=IncYear(date(),-100);
end;

Digunakan untuk menggembalikan datetimepicker pada settingan awal, procedure ini biasanya digunakan pada saat form show, atau saat form pertama kali tampil. Procedure ini juga berfungsi agar datetimepicker lebih flexibel dalam menampilkan tanggal dari data yang sudah ada, tanpa error. Jika settingan datetimepicker tidak kita kembalikan seperti awal maka kemungkinan error akan terjadi, karena overlap antara tanggal yang disetting dengan tanggal pada data.

Demikianlah tips sederhana mengenai maxdate dan mindate, jika ada salah, kurang, atau saran silahkan di komen ya. Selamat mencoba dan terus kembangkan. Siiiiiiip……………..

Pencarian Data Sederhana pada Delphi

desain form barang photo barang_zpsxars3vgr.jpg Codegratis.wordpress.com. Mari belajar coding dengan mudah dan sederhana. Pada postingan saya sebelumnya kita telah membahas mengenai membuat aplikasi sederhana dengan delphi. Sebenarnya dalam aplikasi  tersebut terdapat beberapa fungsi penting yang dapat kita uraikan lagi secara lebih detail, salah satunya adalah fungsi pencarian. Nah mari kita bahas fungsi pencarian, fungsi tersebut terdapat pada form barang. Untuk dapat melakukan pencarian pada delphi membutuhkan beberapa buah procedure atau blok coding yang saya ciptakan sendiri atau memang procedure bawaan delphi berikut ini fungsi yang saya gunakan untuk pencarian data pada delphi.
procedure Tf_barang.FormShow;

procedure Tf_barang.FormShow(Sender: TObject);
begin
with dm.ZQuery1 do
begin
sql.Clear;
sql.Add('select * from t_barang');
open;
gbarang.DataSource:=dm.DataSource1;
end;
end;

Procedure ini digunakan pada saat form pertama kali muncul atau tampil. Disitu saya menuliskan SQL yang digunakan untuk menampilkan data pada grid barang, sehingga user dapat melihat isi data barang, dan mengetahui bahwa form ini digunakan untuk menginput data barang.
procedure Tf_barang.rgcariClick;

procedure Tf_barang.rgcariClick(Sender: TObject);
begin
ecari.SetFocus;
end;

Procedure hanya untuk men-setfocus atau mengarahkan langsung inputan ke edit text pencarian, saat salah satu dari radio group di klik.
procedure Tf_barang.bcariClick;

procedure Tf_barang.bcariClick(Sender: TObject);
begin
with dm.ZQuery1 do
begin
if rgcari.ItemIndex=-1 then
begin
MessageDlg('Kategori Pencarian Belum Dipilih',mtInformation,[mbOK],0);
exit;
end
else
if rgcari.ItemIndex=0 then
begin
sql.Clear;
sql.Add('select * from t_barang where kd_barang like "%'+ecari.Text+'%"');
open;
if (RecordCount=0) then
begin
MessageDlg('Kode Barang '+ecari.text+' Tidak Ditemukan',mtInformation,[mbOK],1);
formshow(sender);
ecari.Clear;
rgcari.ItemIndex:=-1;
exit;
end
else
gbarang.SetFocus;
end
else
begin
sql.Clear;
sql.Add('select * from t_barang where nm_barang like "%'+ecari.Text+'%"');
open;
if (RecordCount=0) then
begin
MessageDlg('Nama Barang '+ecari.text+' Tidak Ditemukan',mtInformation,[mbOK],1);
formshow(sender);
ecari.Clear;
rgcari.ItemIndex:=-1;
exit;
end
else
gbarang.SetFocus;
end;
end;
end;

Nah pada procedure inilah proses pencarian data dijalankan, procedure ini dijalankan pada saat tombol pencarian di klik. Procedure ini yang paling penting, mari kita uraikan penjelasannya satu persatu.

  • Baris 3 : pada prosedure menggunakan Zquery atau Zeos Query untuk menampung dan mengeksekusi perintah SQL.
  • Baris 5 s/d 9 : validasi jika radio group tidak ada yang dipilih atau diklik maka muncul dialog untuk memilih salah satu pilihan pencarian.
  • Baris 11 s/d 26 : merupakan pencarian berdasarkan pilihan radio group pertama yaitu Kode Barang, jadi yang dicari kode barang pada tabel barang. Pencarian ini menggunakan LIKE, supaya hasil pencariannya lebih luas dan dapat mencari kode barang yang memiliki kemiripan sesuai dengan key pencarian atau text yang diketikkan pada edit text pencarian.
  • Baris 13 s/d 15 : perintah SQL pencarian berdasarkan kode barang.
  • Baris 16 s/d 23 : dialog jika pencarian tidak menemukan data barang yang dicari, atau data barang yang dicari tidak ada.
  • Baris 25 : jika data barang yang dicari dapat ditemukan maka setfocus akan langsung mengarah ke grid barang yang menampilkan data barang yang dicari.
  • Baris 28 s/d 42 : pencarian berdasarkan pilihan radio group kedua yaitu Nama Barang.
  • Baris 29 s/d 31 : perintah SQL pencarian berdasarkan nama barang.
  • Baris 32 s/d 39 : dialog jika nama barang yang dicari tidak ditemukan.
  • Baris 41 : setfocus pada grid barang jika nama barang yang dicari telah ditemukan.

procedure tf_barang.tampil;

procedure tf_barang.tampil;
var s:string;
begin
with dm.ZQuery1 do
begin
if RecordCount=0 then
begin
  MessageDlg('Data Mobil Belum Ada',mtInformation,[mbOK],0);
  btambah.SetFocus;
  exit;
end
else
begin
  kb:=FieldByName('kd_barang').AsString;
  nb:=FieldByName('nm_barang').AsString;
  ekd.Text:=FieldByName('kd_barang').AsString;
  enama.Text:=FieldByName('nm_barang').AsString;
  ejml.Text:=inttostr(FieldByName('qty').AsInteger);
  csatuan.Text:=FieldByName('satuan').AsString;
  dttgl.Date:=FieldByName('tgl_beli').AsDateTime;
  eharga.Text:=inttostr(FieldByName('harga').AsInteger);
  s:=ExtractFilePath(Application.ExeName)+'\img\'+FieldByName('foto').AsString;
  if FileExists(s) then
  begin
    blek:=false;
    foto.Picture.LoadFromFile(s);
  end
  else
  begin
    blek:=true;
    foto.Picture.LoadFromFile(pchar(ExtractFilePath(Application.ExeName)+'book.jpg'))
  end;
  sket:=FieldByName('foto').AsString;
end;
end;
end;

Procedure ini digunakan untuk menampilkan data barang pada grid barang ke inputan form barang, namun inputan tetap tidak aktif sebelum tombol ubah di klik, untuk mengubah data barang. Procedure tampil ini dijalankan saat grid barang di klik atau ditekan tombol Enter.

  • Baris 7 s/d 10 : validasi atau dialog muncul jika data barang tidak atau belum ada namun grid barang sudah di klik. Dialog ini juga berfungi sebagai error handling, karena jika data barang kosong maka script dibawahnya dapat menjadi error karena isi dalam field kosong.
  • Baris 13 s/d 34 : menampilkan data barang pada inputan yang tersedia, termasuk foto barang.

procedure Tf_barang.gbarangCellClick;

procedure Tf_barang.gbarangCellClick(Column: TColumn);
begin
tampil;
end;

ketika cell pada grid barang di klik maka langsung akan menjalankan procedure tampil.

Naah sudah komplit fungsi pencarian pada delphi mudah bukan, sekarang tinggal Anda coba dan kembangkan sesuai dengan kebutuhan dan tuntutan. Jika ada salah dan kurangnya atau ada pertanyaan silahkan langsung saja di komen, saya senang sekali kalo ada yang mau komen di blog sederhana saya. So selamat mencoba. 🙂

Sorcecode lengkapnya ada disini