Baik, kita langsung saja ke tutorialnya. Dibawah ini adalah prosedur yang harus dipersiapkan untuk membuat insert masal tersebut.
- Membuat database Mysql (download disini)
- Merancang iterface program Insert data
- Buat file Ms. Excel dengan nama file anggota.xls (download disini)
Setidakya 3 langkah itulah yang akan kita bahas.
Buat database di MySql dnegna nama db_anggota kemuadian tambahkan tabel didalamnya dengan nama anggaota.
CREATE TABLE anggota( kode_anggota INT NOT NULL AUTO_INCREMENT, nama VARCHAR(100) NOT NULL, alamat VARCHAR(40) NOT NULL, PRIMARY KEY (kode_anggota) );
Langkah berikutnya adalah membuat interface aplikasi import data dari Ms Excel ke MySql. Untuk membuat interface-nya, lakukan langkah-langkah berikut ini.
- Buatlah project baru dengan memilih menu File?New?Application. Setelah itu, klik icon Save All atau tekan tombol Shift+Ctrl+S dan simpan dulu unitnya dengan nama unit1 dan simpan projectnya dengan nama project1
- Tampilkan tampilan form dengan menekan tombol F12, kemudian tambahkan komponen objek Edit1, Memo1, StringGrid1 dan Statusbar
- Tambahkan Componen Pallet AdoConnection1 dan AdoQuery1 yang berada di tab ADO klik ganda kedua komponen tersebut
- Kemudian klik ganda icon OpenDialog yang terdapat di menu Dialogs
- Tambahkan pula dua buah object Button untuk tombol Insert dan Open, dan biarkan property Name-nya dalam kondisi Default. Kemudian desainlah seperti tampilan di bawah ini
- Buatlah function dan procedure seperti ini di bawa deklarasi private
- Tambahkan uses ComObj, Excel2000 di bawah implementation
- Kemudian panggilah procedure dan function yang telah anda buat
- Klik 2x button insert, selanjutnya ketikan kode berikut
- Selanjutnya ke tahap koding. Masuk ke event OnCreate pada Form1 lalu ketikan kode
- Tahap terakhir klik 2x tombol open lalu ketikan kode program berikut
Private
{ Private declarations}
procedure DisplayException(Sender: TObject; E: Exception);
function GiveRowHeader(x : Integer) : String;
procedure LoadFromXLFile(AFileName : String; ASheetNum: Integer;
AStringGrid:TStringGrid; var OSheetName : String);
procedure TForm1.DisplayException(Sender: TObject; E: Exception);
begin
StatusBar1.SimpleText := E.Message;
MessageDlg(E.Message,mtError,[MBOK],0);
end;
function TForm1.GiveRowHeader(x: Integer) : String;
begin
if (x > 26) then
Result := GiveRowHeader(x div 26) + GiveRowHeader(x mod 26)
else
Result := Chr(Ord('A') + x - 1);
end;
procedure TForm1.LoadFromXLFile(AFileName : String; ASheetNum: Integer; AStringGrid:TStringGrid; var OSheetName : String);
var
ARow,
ACol,
i,
j : Integer;
XLApp,
XLBook,
XLSheet : Variant;
begin
XLApp := CreateOLEObject('Excel.Application');
XLApp.Visible := False;
XLApp.Workbooks.Open(AFileName,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
0
);
XLBook := XLApp.ActiveWorkbook;
XLSheet := XLBook.WorkSheets[ASheetNum];
XLSheet.Activate;
XLSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
OSheetName := XLSheet.Name;
ARow := XLApp.ActiveCell.Row;
AStringGrid.RowCount := ARow + 1;
ACol := XLApp.ActiveCell.Column;
AStringGrid.ColCount := ACol + 1;
for i := 1 to ARow do
begin
AStringGrid.Cells[0, i] := IntToStr(i);
for j := 1 to ACol do
begin
AStringGrid.Cells[j, 0] := GiveRowHeader(j);
AStringGrid.Cells[j, i] := XLSheet.Cells[i, j];
end;
end;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
XLApp := Unassigned;
XLBook := Unassigned;
XLSheet := Unassigned;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
server,
user,
password,
db_name,
SheetName : string;
ConnStr,
StrSQL : WideString;
ACol,
ARow,
NRows : Integer;
begin
ADOConnection1.Close;
server := 'localhost'; //Sesuaikan, bisa diisi IP Address Server MySQL
user := 'root'; //Sesuaikan dengan username mysql Anda
password := ''; //Sesuaikan dengan password mysql Anda
db_name := 'db_anggota';
ConnStr := 'Provider=MSDASQL;DRIVER={MySQL ODBC 3.51 Driver}; '
+'SERVER='+server
+'; UID='+user
+'; PASSWORD='+password
+'; DATABASE='+db_name;
ADOConnection1.ConnectionString := ConnStr;
try
AdoConnection1.Open;
except
raise;
end;
if ADOConnection1.Connected then begin
Memo1.Clear;
Memo1.Lines.Add('Connection established to '+server+'. Logged as '+user+' at '+DateTimeToStr(now));
StatusBar1.SimpleText := 'Connection established to '+server+'. Logged as '+user+' at '+DateTimeToStr(now);
LoadFromXLFile(Edit1.Text,1,StringGrid1,SheetName);
NRows := 0;
for ARow := 2 to StringGrid1.RowCount-1 do
begin
StrSQL := 'INSERT INTO anggota (';
for ACol := 1 to StringGrid1.ColCount-1 do
StrSQL := StrSQL + LowerCase(StringGrid1.Cells[ACol,1])+',';
StrSQL := copy(StrSQL,1,length(StrSQL)-1)+') VALUES (';
for ACol := 1 to StringGrid1.ColCount-1 do
StrSQL := StrSQL + QuotedStr(StringGrid1.Cells[ACol,ARow])+',';
StrSQL := copy(StrSQL,1,length(StrSQL)-1)+');';
Memo1.Lines.Add('QUERY : '+StrSQL);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(StrSQL);
ADOQuery1.ExecSQL;
NRows := NRows + 1;
end;
StatusBar1.SimpleText := 'Operation Complete. '+IntToStr(NRows)+' rows inserted';
end;
end;
procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Lines.Clear; ADOQuery1.Connection := ADOConnection1; Application.OnException := DisplayException; end;
procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then begin edit1.Clear; edit1.Text:=OpenDialog1.FileName; end; end;
mudah bukan???
Download Program disini

No comments:
Post a Comment