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