Rabu, April 02, 2008

Google Docs Secara Offline

Awal pekan ini, Google meningkatkan kemampuan layanan aplikasi perkantoran berbasis web-nya, yaitu Google Docs dengan sebuah aplikasi bernama Google Gears. Google Gears adalah sebuah program aplikasi antarmuka (API) JavaScript yang memungkinkan Google Docs mengerjakan dokumen secara offline.

Untuk dapat memanfaatkan fasilitas ini, pertama kali pengguna harus membuka Google Docs, lalu klik link Offline. Setelah itu pengguna harus menginstal program ekstensi Gears. Kemudian, secara otomatis, semua dokumen online akan disinkronkan ke bentuk offline.

Sumber : Koran Tempo Edisi Selasa, 2 April 2008

http://shine.yahoo.com/ : Kemilau Wanita di mata Yahoo

Yahoo meluncurkan situs khusus perempuan yang beralamatkan di www.shine.yahoo.com. Dalam situs ini akan dipajang berbagai bahasan tentang wanita, yang bersumber dari blog-blog ternama, seperti Glamour, Epicuio-us.com, style.com, InStyle, Cosmopolitan, Harpers Bazaar, Womens Health, Good Housekeeping, Conde Nast, Hearst, dan Time.

Keterlibatan perempuan di jagat maya memang semakin tinggi akhir-akhir ini. Proyek riset Pew Intenet & American Life yang berjudul Teens and Social Media menemukan bahwa angka peningkatan jumlah blogger perempuan adalah 35 persen, lebih tinggi dari kaum pria yang hanya 20 persen. Selain itu, jumlah perempuan yang online mencapai 54 persen dan pria hanya 40 persen.

Shine adalah proyek pertama Yahoo yang membidik audiens spesifik. Ada delapan editor yang ditugaskan untuk mengurusi beberapa tema, seperti home, parenting, fashion, culture, dan career. Salah satunya adalah Editor Kepala Brandon Holley, yang pernah menjadi pimpinan redaksi majalah wanita Jane.

Situs ini diharapkan akan mampu bersaing dengan situs-situs sejenis, seperti iVillage, Fashion, atau glam.com. Namun, menurut Holley, Shine akan berbeda dengan situs-situs tersebut. Shine memberikan interaksi yang lebih banyak dengan pembaca serta memberi tempat yang lebih banyak bagi pandangan editornya.

Sumber : Koran Tempo Edisi Selasa, 1 April 2008

Selasa, April 01, 2008

Menghilangkan atau Mengganti karakter di MySQL

Awalnya saya bingung ketika menemukan kasus yang mengharuskan saya menghilangkan satu kata dari sebuah string. Kalau untuk mengambil karakter, jelas sudah tahu fungsinya seperti yang sudah saya tulis di artikel sebelumnya. Tapi kalau menghilangkan karakter/kata bagaimana fungsi SQL nya ? Lalu saya tanya ke teman saya, dan akhirnya dia menemukan fungsi yang saya perlukan ini. Fungsi itu adalah replace(string, karakter_yang_akan_dihilangkan/diganti, karakter_pengganti). Agar lebih jelas, saya akan memberikan contoh di bawah ini.

Kasus 1 : Menghilangkan kata Bank dari “Bank Mandiri”, sehingga yang ditampilkan adalah “Mandiri”
Jawab : select replace(’Bank Mandiri’,'Bank ‘,”)

Kasus 2 : Mengganti kata jurusan dari “Jurusan Teknik Informatika” menjadi “Program Studi Teknik Informatika”
Jawab : select replace(’Jurusan Teknik Informatika’,'Jurusan’,'Program Studi’)

Semoga Bermanfaat.

Membuat ICONTRAY di Delphi

Ketika kita menjalankan sebuah aplikasi, maka biasanya akan tampil pada taskbar aplikasi yang dijalankan tersebut. Namun apabila kita ingin icon aplikasinya tampil bukan pada taskbar, tapi pada bagian sebelah kanan taskbar (icontray) maka kita harus membuat coding khusus agar ketika nanti program tersebut dijalankan, icon aplikasinya tampil pada bagian icontray.

Langkah-langkahnya adalah sebagai berikut.

1. Pada form utama project, tambahkan sebuah komponen PopupMenu. PopupMenu ini untuk menuliskan menu-menu yang ada pada project tersebut yang apabila kita klik kanan pada iconnya, maka menu-menu tersebut akan tampil. Misalnya kita punya 2 menu yaitu exit dan show.

2. Pada event onCreate form tersebut ketikan code sbb.

with NotifyIconData do
begin
hIcon := Icon.Handle;
StrPCopy(szTip, Application.Title);
Wnd := Handle;
uCallbackMessage := WM_ICONTRAY;
uID := 1;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
cbSize := sizeof(TNotifyIconData);
end;
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);

3. Pada bagian uses tambahkan ShellApi dan tambahkan code berikut setelah deklarasi uses :

const
WM_ICONTRAY = WM_USER + 1; // User-defined message

4. Buat prosedur icontray pada bagian private, sbb.

private { Private declarations }
procedure Icontray(var Msg: TMessage); message WM_ICONTRAY;

procedure Tform1.Icontray(var Msg: TMessage);var CursorPos : TPoint;
begin
if Msg.lParam = WM_RBUTTONDOWN then
begin GetCursorPos(CursorPos);
SetForegroundWindow(Handle); // suggested by Berend Radstaat
PopupMenu1.Popup(CursorPos.x, CursorPos.y);
PostMessage(Handle, WM_NULL, 0, 0); // suggested by Berend Radstaat
end
else
inherited;
end;

5. Tambahkan variable NotifyIconData: TNotifyIconData; pada bagian deklarasi variable.

6. Pada event OnCLose form, ketikkan code berikut.

Action := caNone;
Hide;
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);

7. Pada menu exit event OnCLick ketikkan code berikut.

Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
Application.ProcessMessages;
Application.Terminate;

8. Pada menu show event OnCLick ketikkan code berikut, agar ketika diklik menu show akan menampilkan form utama tersebut.

Show;
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);

Mengeksekusi file *.dat yang berisi perintah query

Dalam sebuah aplikasi sistem informasi berbasis database, proses menyimpan data ke database bisa saja dari sebuah file, misalnya file dengan ekstensi *.dat. Agar file-file tersebut bisa dijalankan seperti mengeksekusi sebuah query, maka di Delphi anda dapat menambahkan komponen MyDAC untuk koneksi ke database MySQL yang didalamnya ada komponen MySQLBatchExecute yang berguna untuk mengeksekusi perintah-perintah query.

Misalkan kita akan membuat program untuk mengeksekusi file *.dat yang berisi perintah query sesuai file yang kita pilih. (Ingat ! Anda harus menambahkan terlebih dahulu komponen MyDAC-nya)

Langkah-langkahnya adalah :
1. Buat sebuah project baru
2. Tambahkan sebuah komponen open dialog, MySQLDatabase, MySQLBatchExecute dan sebuah button untuk open file (captionnya diberi nama open).
3. Name untuk MySQLDatabase diganti dengan koneksi, dan name MySQLBatchExecute diganti dengan exSQLData. Anda harus menseting properties MySQLDatabase yaitu pada DatabaseName, Host, UserName dan UserPassword. Sedangkan properties MySQLBatchExecute, hanya pada bagian database yang anda setting.
4. Pada event onclick button open, ketikkan code program berikut.

// untuk memastikan koneksi ke database OK
if not koneksi.Connected then
begin
ShowMessage(’Koneksi ke database gagal !’);
end
else
begin
// Create the open dialog object - assign to our open dialog variable
openDialog := TOpenDialog.Create(self);

// Set up the starting directory to be folder ‘Data’
openDialog.InitialDir := ‘/Data/’;

// Only allow existing files to be selected
openDialog.Options := [ofFileMustExist];

// Allow only *.dat files to be selected
openDialog.Filter :=’DAT files|*.dat’;

// Select DAT files as the starting filter type
openDialog.FilterIndex := 1;

// Display the open file dialog
if openDialog.Execute then
begin
try
//mengambil query dari file sesuai yang dipilih pada open dialog
exSQLData.Sql.LoadFromFile(openDialog.FileName);
exSQLData.ExecSql;
ShowMessage(’Data berhasil di import !’);
Except;
ShowMessage(’Data gagal di import !’);
end;
end;
// Free up the dialog
openDialog.Free;
end;

5. Lalu run program (F9)
6. Klik tombol open, lalu pilih file .dat yang akan dieksekusi
7. Jika ada warning “Data berhasil di import”, maka eksekusi query berhasil. Anda silahkan cek di databasenya secara manual. Apakah data yang anda import sudah ada atau tidak.

Semoga ada manfaatnya.

Export data hasil query ke excel di Delphi

Adakalanya kita membutuhkan laporan data dalam bentuk format file excel, yang mana laporan tersebut biasanya merupakan hasil dari sebuah query. Agar hal tersebut bisa kita lakukan, maka kita bisa menggunakan komponen tambahan yaitu ExcelExport yang dengan mudah kita bisa tambahkan ke component pallete dengan menginsallnya melalui menu Component >> Install Packages.

Langkah-langkahnya :
1. Tambahkan komponen scExcelExport pada form yang akan ada fasilitas untuk export ke excel
2. Tambahkan sebuah button untuk tombol export. Dan ketikkan code berikut, pada event onclick button tersebut.
(Misalkan kita akan mengeksport ke excel data beban mengajar dosen).

procedure Tflapbebanajar.BEksporClick(Sender: TObject);
begin
try
scExcelExport1.ExcelVisible:=True;
scExcelExport1.LoadDefaultProperties;
scExcelExport1.Dataset:=Qbebanajar; //nama komponen query
scExcelExport1.WorksheetName:=’Beban Mengajar Dosen’; //judul sheet
scExcelExport1.ConnectTo := ctNewExcel;

scExcelExport1.HeaderText.Text:= ‘BEBAN MENGAJAR DOSEN ‘;
scExcelExport1.HeaderText.Add(’FAKULTAS SAINS DAN TEKNOLOGI’);
scExcelExport1.BeginRowTitles:=5; //mulai baris data
scExcelExport1.ExportDataset;
finally
scExcelExport1.Disconnect;
end;
end;

Mengekspor data dari file Excel ke MySQL

Disini saya akan memberi contoh cara mengekspor data dari file excel ke database MySQL. Sebagai contoh kita akan mengekspor file excel yang isinya kdmk dan nilai, yang nantinya akan di ekspor ke MySQL pada tabel tb_krs yang fieldnya juga sama yaitu kdmk dan nilai. Ceritanya, kita akan memasukan nilai ke database MySQL yaitu ke tb_krs yang tadinya nilainya belum ada, kita update dengan mengekspor file nilai dari excel, agar kita tidak perlu menginputkan nilai satu per satu ke tb_krs.

Ikuti langkah-langkahnya sebagai berikut.

Buat satu form utama seperti gambar di bawah ini.

form_utama.jpg

Buat satu data modul dan tambahkan komponen-komponen sebagaimana gambar berikut.

dm.jpg

Keterangan :

Koneksi ADO untuk menghubungkan dengan MS. Excel dan MyDAC untuk menghubungkan dengan MySQL

Tambahkan kode program berikut ini pada event OnClick tombol Open File.

procedure TForm1.btnOpenFileClick(Sender:TObject);
begin
with OpenDialog1 do
begin
Options := [ofFileMustExist]; Filter :=’Excel files|*.xls’;
FilterIndex := 1; InitialDir:=’E:\Euis\’;
Execute;
end;
openfile(OpenDialog1.FileName);
if MessageDlg(’Proses Update ?’,mtConfirmation,[mbYes,mbNo],1) = mrYes then
MoveTheXLS;
end;

Tambahkan konstanta EXCEL_CONNECTION_STRING, procedure MoveTheXLS dan OpenFile sebagai berikut.

Const
EXCEL_CONNECTION_STRING = ‘Provider=Microsoft.Jet.OLEDB.4.0′ + ‘;Extended Properties
= excel 8.0 ‘ + ‘;Persist Security Info = False’;

procedure TForm1.MoveTheXLS;
begin
with DM do
begin
ADODataSet1.First;
While Not(ADODataSet1.Eof) do
begin
with mySQLQuery1 do
begin
Close;
SQL.Clear;
SQL.Text:=’update db_akd.tb_krs set nilai=:nilai where kdmk=:kdmk’;
paramByName(’kdmk’).AsString:=GridXls.Fields[0].AsString;
paramByName(’nilai’).AsString:=GridXls.Fields[1].AsString;
ExecSQL;
end;
ADODataSet1.Next;
end;
end;
end;

procedure TForm1.OpenFile(filename:TFileName);
var sl : TStringList;
begin
dm.ADOConnection1.Close;
dm.ADOConnection1.ConnectionString := EXCEL_CONNECTION_STRING + ‘;data source=’
+ filename; sl := nil;
sl := TStringList.Create;
try
dm.ADOConnection1.GetTableNames( sl );
If sl.Count > 0 Then
begin
dm.ADODataSet1.CommandText := ‘Select * from [’ + sl.Strings[0] + ‘] ‘ ;
dm.ADODataSet1.open;
end;
finally
sl.free;
end;
end;

Jika codingnya sudah selesai, maka tekan F9 untuk run program. Hasilnya adalah sebagai berikut.

form_run.jpg

Tekan tombol Open File untuk mencari file excel yang akan di export datanya.

Setelah file excel di open, maka akan tampil sebagai berikut.

form_hasil.jpg

Klik tombol Yes.

Program ini berjalan dengan baik berkat bantuan teman saya yang bernama Mas Dedy Setyawan. Thank you for helping me.

Ayo Peka! Stop Pembalut Sekali Pakai

  “Saya paling tak suka kalau pegiat lingkungan berteriak betapa sulitnya mengelola sampah pembalut tapi dia sendiri tetap memakainya!“ *** ...