-=-
.
.....
  
 
RSS
Direkomendasikan menggunakan brower Opera/Chrome/Firefox. Resolusi minimal 1024x768 | Powered by ____ |
 
  
 
Nikmati Delphi-ID dalam berbagai versi tampilan :
Basic View (LOW Bandwidth)
Default View (Full)
Mobile Edition
Main Menu
..:: onWebTools ::..
..:: onLastPosts ::..
goto Postjumlah komponen maksimal dalam sebuah project(6)
 by d4mnf1y32
 on 21.May at 12:16
goto Posttanya grayscale to biner dengan scanline(1)
 by luckynvic
 on 20.May at 20:44
goto Posttanya looping biner to matriks(1)
 by luckynvic
 on 20.May at 20:10
goto Postsql error:acces denied for user....(2)
 by nasbms
 on 19.May at 16:54
goto Postpemanggilan frame(4)
 by nasbms
 on 19.May at 16:14
goto Posttanya AvLock(0)
 by azuriza
 on 19.May at 11:24
goto PostGet TDBEdit Value Menggunakan LookUp Grid(10)
 by henry_sys
 on 18.May at 11:27
goto Postmenghitung record dalam perulangan(4)
 by idhiel
 on 16.May at 13:53
goto Posttanya ascii(4)
 by mas_kofa
 on 16.May at 12:11
goto PostRawPrint Untuk Delphi XE2(0)
 by adewijaya
 on 15.May at 22:34
goto Postdatabase error..(4)
 by idhiel
 on 15.May at 15:57
goto Postbekasi, pt arila putra mahkota(3)
 by mas_kofa
 on 15.May at 15:37
goto Postbagaimana cara membaca file *.doc dg delphi?(0)
 by ficky
 on 15.May at 06:14
goto Posttanya biner to matriks(13)
 by diandewi
 on 14.May at 20:30

..:: onLast Articles ::..
..:: New Download ::..
Pascal-id.Org
Feeds -  Popular -  Latest
RE: The Longue
8 months, 3 weeks ago
RE: belajar pascal
8 months, 3 weeks ago
RE: The Longue
8 months, 3 weeks ago
RE: belajar pascal
8 months, 3 weeks ago
RE: Perkenalan dan Absen
8 months, 3 weeks ago
RE: Alhamdulillah Buka Puasa Bersama
8 months, 3 weeks ago
RE: تَقَبَّلَ اللهُ مِنَّا وَمِنْكَ - Selamat Hari Raya Idul Fitri
8 months, 3 weeks ago
Lintas Situs
«
free web site stats and visitor tracking

Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
dinox
Location:
Post subject: ngopi isi tabel ke tabel lain  PostPosted: 15/Dec/2005 15:37
onSkilled


Joined: 17-Nov-2005
Posts: 93

hai para jawara delphi ada yang tau command sql atau coding blh juga
untuk ngopi isi tabel misalnya gw punya 2 tabel A dan B dengan struktur yang sama satu pake mysql(tabel A) satu pake access(tabel B) ngisinya hanya pada tabel B hasilnya nantinya gw mau isinya sama,
logikanya
tabel A bandingin dengan B,
semua record ditabel B yang ga ada di tabel A, copy ke tabel A Wink

mohon bimbingannya supaya cepat jago kayak mas2 semua
 
 View user's profile Send private message  
Reply with quote Back to top
deLogic
Location: Jakarta
Post subject:   PostPosted: 15/Dec/2005 18:57
onMage


Joined: 04-Jul-2005
Posts: 2282
Location: Jakarta
wah ini model sinkronisasi ya... AFAIK belom ada perintah SQL / coding yang sederhana dan singkat.. Very Happy codingnya rada2 panjang, aq coba kasih logic nya aja dari aplikasi kecil yg pernah aq buat untuk pump data dari database yang berbeda, moga2 aja ada yang bisa dimanfaatin..

- asumsi saya, tabel asal dan tujuan sudah di-create, kalo tabel tujuan belum di-create, maka ya harus dicreate dulu lah, kalo pengen otomatis, maka Anda dapat menggunakan perintah SQL CREATE TABLE dengan terlebih dahulu me-retrieve informasi struktur tabel asal dan menyesuaikannya dengan syntax SQL yang dikenal di database tujuan. Misalnya TEXT di ADO/MSSQL menjadi BLOB SUB_TYPE 1 di FB/IB.

- tentu saja harus diketahui terlebih dahulu struktur tabelnya, sama atau enggak, nah kalo sama, mulai retrieve tipe data yang dipake dari field pertama sampai field terakhir dari tabel tersebut (seperti field name, type, size, default value, constraint, dsb.. [kalo pengen lengkap, bejibun buanget]). kalo struktur tabelnya statik, dalam artian Anda hanya sinkronisasi data dari tabel yg telah Anda kehendaki, bukan sembarang tabel, maka Anda tidak perlu melakukan proses retrieval tipe data, cukup masukkan aja di array const atau record atau list.

- Anda harus mempunyai field pengenal (mungkin primary dan unique) yg berfungsi sebagai pembanding untuk mengecek apakah suatu record sudah ada di tabel tujuan.

- lakukan iterasi pada record asal dari awal hingga eof.. nah pada saat iterasi per record, lakukan perbandingan untuk mengecek apakah record tsb sudah ada di tabel tujuan. Ada dapat melakukannya melalui metode locate record pada tabel tujuan dengan key yg Anda dapatkan dari tabel asal.

- jika perintah locate tidak berhasil, berarti record belom ada, nah lakukan insert record ke tabel tujuan. Anda bisa menggunakan perintah append atau SQL: INSERT INTO. jika Anda menggunakan perintah SQL, maka pastikan Anda menyesuaikan penulisan value yang sesuai, karena syntax antar database belum tentu sama. Misalnya penulisan passing datetime.

HINT:
- sebaiknya Anda menggunakan 2 Connection yang sejenis, misalnya keduanya menggunakan ADO, Zeos, dsb, karena akan lebih menjamin casting informasi struktur tabel yang lebih valid.

Sebagai gambaran saya menggunakan Zeos untuk aplikasi DataPump saya, untuk sementara baru bisa konversi tabel & view dari dan ke ADO (bisa Access, SQLServer, DBase, dsb tergantung driver), FB/IB, mySQL, Postgre dan sybase (blm di-test).

silahkan tanya lg kalo ada yg kurang..

_________________
.:: Lagi gak pengen pasang signature ::.
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
cyber_heckerOffline
Location: Ponti Hot City
Post subject:   PostPosted: 15/Dec/2005 20:29
onProfessional


Joined: 19-May-2005
Posts: 981
Location: Ponti Hot City
Status: Offline
yup.. bener, seperti yang dikatakan deLogic, emang gitu caranya. tapi disini gue mberi contoh kodingnya..., karena menurut dinox struktur tabelnya sama cuma lain database, disini gue bercontoh hanya untuk kasus seperti itu :
sebagai contoh kita mempunyai tabel TBarang pada database microsoft Access dengan struktur Kode, NamaBarang, Satuan, Jumlah

dan anggap aja ditabel TBarang ini (di ms Access) terdapat 10 buah data.

selain itu kita juga mempunya tabel TBarang di mySQL dengan struktur tabel yang sama.

tapi data yang terdapat pada tabel TBarang (mySQL) hanya 4 buah.

setelah itu kita membuat project baru.
untuk database ms. access saya menggunakan komponen ADOConnection, ADOTable dan sebuah dataset. untuk database mySQL, saya menggunakan komponen zeos yaitu zConnection, zTable, dataset dan sebuah zQuery (untuk proses yang berhubungan dengan pemindahan data, pembuatan tabel, dan sebagainya)

koding lengkap nya :
      Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, Buttons, ZDataset, ZAbstractRODataset,
  ZAbstractDataset, ZAbstractTable, ZConnection, Grids, DBGrids;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    ADOTable1: TADOTable;
    ADOTable1Kode: TWideStringField;
    ADOTable1NamaBarang: TWideStringField;
    ADOTable1Satuan: TWideStringField;
    ADOTable1Jumlah: TIntegerField;
    DataSource1: TDataSource;
    ZConnection1: TZConnection;
    ZTable1: TZTable;
    ZTable1Kode: TStringField;
    ZTable1NamaBarang: TStringField;
    ZTable1Satuan: TStringField;
    ZTable1Jumlah: TIntegerField;
    DataSource2: TDataSource;
    DBGrid2: TDBGrid;
    ZQuery1: TZQuery;
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
const
  lDeleteTable =
    'DROP TABLE IF EXISTS tempBarang';
  lCreateTable =
    'CREATE TABLE `tempBarang` ('#13#10+
    '  `Kode` varchar(10) NOT NULL,'#13#10+
    '  `NamaBarang` varchar(50) default NULL,'#13#10+
    '  `Satuan` varchar(30) default NULL,'#13#10+
    '  `Jumlah` int(11) default NULL,'#13#10+
    '  PRIMARY KEY  (`Kode`)'#13#10+
    ') ENGINE=InnoDB DEFAULT CHARSET=latin1';
  lDataNotExist =
    'SELECT'#13#10+
    '  tempbarang.Kode,'#13#10+
    '  tempbarang.NamaBarang,'#13#10+
    '  tempbarang.Satuan,'#13#10+
    '  tempbarang.Jumlah'#13#10+
    'FROM'#13#10+
    ' tbarang'#13#10+
    ' RIGHT OUTER JOIN tempbarang ON (tbarang.Kode=tempbarang.Kode)'#13#10+
    'WHERE'#13#10+
    '  (tbarang.Kode IS NULL)';
begin
  with ZQuery1 do begin
    SQL.Clear;
    SQL.Append(lDeleteTable);
    ExecSQL;
  end;

  with ZQuery1 do begin
    SQL.Clear;
    SQL.Append(lCreateTable);
    ExecSQL;
  end;

  with ADOTable1 do begin
    Close;
    Open;
    repeat
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Append(
        Format('INSERT INTO tempBarang VALUES (%s, %s, %s, %s)',
        [QuotedStr(FieldByName('Kode').AsString),
        QuotedStr(FieldByName('NamaBarang').AsString),
        QuotedStr(FieldByName('Satuan').AsString),
        FieldByName('Jumlah').AsString]));
      ZQuery1.ExecSQL;
      Next;
    until Eof;
  end;


  with ZQuery1 do begin
    SQL.Clear;
    SQL.Append('INSERT INTO TBarang');
    SQL.Append(lDataNotExist);
    ExecSQL;
  end;

  ADOTable1.Requery();
  ZTable1.Refresh;
end;

end.

logika :
      Code:
  with ZQuery1 do begin
    SQL.Clear;
    SQL.Append(lDeleteTable);
    ExecSQL;
  end;

  with ZQuery1 do begin
    SQL.Clear;
    SQL.Append(lCreateTable);
    ExecSQL;
  end;

buat sebuah tabel temporary untuk menyimpan data dari tabel access. tabel temporary ini mempunyai struktur yang sama dengan tabel TBarang yang ada pada database mySQL. jika tabel tersebut ada, maka hapus tabelnya terlebih dahulu.

      Code:
  with ADOTable1 do begin
    Close;
    Open;
    repeat
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Append(
        Format('INSERT INTO tempBarang VALUES (%s, %s, %s, %s)',
        [QuotedStr(FieldByName('Kode').AsString),
        QuotedStr(FieldByName('NamaBarang').AsString),
        QuotedStr(FieldByName('Satuan').AsString),
        FieldByName('Jumlah').AsString]));
      ZQuery1.ExecSQL;
      Next;
    until Eof;
  end;

pindahkan data dari tabel yang di access ke tabel temporary dengan fungsi repeat. walau sebenarnya perintah iterasi seperti ini sangat tidak disarankan. tapi karena emang cuma ini caranya.. yach terpaksa deh. kekekeke Very Happy

      Code:
  with ZQuery1 do begin
    SQL.Clear;
    SQL.Append('INSERT INTO TBarang');
    SQL.Append(lDataNotExist);
    ExecSQL;
  end;

buat query yang menggabungkan antara TBarang dan tempBarang pada mySQL dengan syarat data tersebut tidak ada pada tabel TBarang. setelah itu simpan semua data sekaligus ke dalam TBarang (mySQL).

refresh datanya.. supaya keliatan hasilnya


check database mySQL dan lihatlah, apakah data sudah pindah semua belon.. yup.. selesai pelajaran kita hari ini. kekekeke Razz


_________________
 
 View user's profile Send private message Yahoo Messenger MSN Messenger  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT - 12 Hours
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic





Powered by PNphpBB2 © 2003-2009 The Zafenio Team
Credits


| Register | Lost Password ? |