Mr. Kid, Maaf mau tanya setelah point B.2 itu mengenai ini : --- disini, lakukan close connection dulu, lalu open connection lagi ---
Apakah ini maksud nya supaya hasil Create Table nya terlihat dulu ? Terima kasih sebelumnya. wassalam *gnl-excelinfo.blogspot.co.id <http://gnl-excelinfo.blogspot.co.id>* 2018-02-19 10:36 GMT+07:00 'Mr. Kid' mr.nm...@gmail.com [belajar-excel] < belajar-excel@yahoogroups.com>: > > > Wa'alaikumussalam wr wb > Mas Zainul, > > Query ke excel files tidak bisa melakukan delete from (dml). > Untungnya, ddl query : > 1. drop table bisa membuang seluruh definisi table. > 2. create table bisa membuat tabel pada existing sheet.. > > Syarat dan ketentuan : > 1. hasil drop table bukan membuang sheet, tetapi membuang isi sheet > 2. Efek dari drop table yang akan menghasilkan sheet kosong (tanpa kolom > dan records apapun) tampak jika koneksi sudah di-close. > 3. hasil dari crate table adalah menulis header pada baris 1 sheet tanpa > mempedulikan baris setelahnya > 4. Efek dari create table yang akan menghasilkan sheet berisi header > tampak jika koneksi sudah di-close > > Jadi, pada koneksi ke Excel files, urutan proses yang setara dengan > kemampuan delete from adalah sebagai berikut : > A. Syarat dan Ketentuan : > > sediakan sebuah sheet kosong sejak dari desain. > * contoh : file xldb.xlsx sebagai wadah penyimpan data, berisi > sheet : > SALES : untuk wadah data transaksi sales > PRODUK : untuk wadah data referensi produk (daftar > produk) > dan dbTmp : sebagai sheet kosong temporary untuk proses > setara delete from > > B. Proses yang setara delete from > > koneksi ke file data (misal ke file xldb.xlsx) > > memanfaatkan object connection yang ada, dilakukan Execute pada > queries dengan urutan proses berikut : > 1. drop table sheet temporary > * Contoh : DROP TABLE [dbTmp$] > 2. create table di sheet temporary, dengan kolom sebanyak yang > diproses > * Contoh : sheet PRODUK memiliki 2 kolom, yaitu IDPRODUK > bertipe numerik dan NMPRODUK bertipe text > CREATE TABLE [dbTmp$] ( [IDPRODUK] Long, > [NMPRODUK] char(255) ) > * biasanya, semua kolom di set char(255) pun tiak mengapa, > karena pada query insert into maupun update, datatype nilai yang ditulis > mengikuti datatype sumber datanya > * penggunaan kurung siku ( [ dan ] ) sebagai antisipasi > error, karena nama kolom maupun tabel terkadang menggunakan spasi atau > karakter lain yang kurang layak. > * jika ada karakter titik pada nama kolom atau nama tabel, > ganti dengan karakter # > sebaiknya penggunaan karakter selain [A-Z] [0-9] dan > underscore dihindari saja lah > --- disini, lakukan close connection dulu, lalu open connection > lagi --- > 3. insert into sheet temporary dari sheet data yang akan diproses > * Contoh : sheet PRODUK selain IDPRODUK bernilai < 10 akan > dibuang, maka pindahkan record IDPRODUK >=10 ke sheet temporary > INSERT INTO [dbTmp$] SELECT * FROM [PRODUK$] > WHERE [IDPRODUK]>=10 > 4. drop tabel yang diproses > * contoh : DROP TABLE [PRODUK$] > 5. create table yang diproses > * contoh : CREATE TABLE [PRODUK$] ( [IDPRODUK] Long, [NMPRODUK] > char(255) ) > --- disini, lakukan close connection dulu, lalu open connection > lagi --- > 6. insert into tabel yang diproses dari sheet temporary > * contoh : INSERT INTO [PRODUK$] SELECT * FROM [dbTmp$] > (optional) 7. drop sheet temporary supaya file size bisa terjaga > sebesar isi yang ada saja (barang tak terpakai sudah dibuang) > * contoh : DROP TABLE [dbTmp$] > --- close connection dan selesai --- > > Peringatan : > > Saat proses close connection dan open connection lagi yang ada setelah > proses nomor 2 dan 5, bisa jadi akan memberi kesempatan pada user lain > untuk membuka koneksi yang menyebabkan proses menjadi gagal. Jadi, > sebaiknya : > 1. koneksi data yang hanya berisi proses read, diset agar connection > string menyakatan Mode=Read;ReadOnly=1 > 2. koneksi data yang mengubah isi (update, insert into) termasuk > proses di atas TIDAK di-set Mode apapun. > > Sebaiknya proses seperti ini digunakan untuk proses akhir. > Contoh : > User meng-edit (tambah, ubah, hapus records) di interface : > 1. proses tambah -> execute query insert into > 2. proses ubah -> execute query update dengan set di record > tersebut apa adanya yang diisi user di interface > 3. proses hapus -> execute query update dengan set seluruh kolom > di record tersebut dengan '' (nullstring) atau NULL (tanpa petik) > Ketika user akan keluar dari interface, lakukan proses setara > DELETE FROM di atas, dengan proses nomor 3 bagian WHERE nilai sebuah kolom > yang <>'' seperti : > INSERT INTO [dbTmp$] SELECT * FROM [PRODUK$] WHERE > [IDPRODUK]<>'' > > Kira-kira demikianlah... > Detilnya, sila dicoba sendiri dulu ya, nanti ditanyakan lagi beserta hasil > ujicobanya.. > dah bengkak jarinya mencetin layar kecil segini.. > lama juga ngetik segitu banyak.. (lumayan buat hiburan, daripada ndengerin > client ribut mbahas batasan datanya sendiri... wkwkwkwk... lempar bolanya, > ributlah mereka) > > Wassalamu'alaikum wr wb > Kid > Sent from my smart enough phone > > On Feb 18, 2018, at 21:22, Zainul Ulum zainul_u...@yahoo.com > [belajar-excel] <belajar-excel@yahoogroups.com> wrote: > > > > Assalaamu'alaikum Wr. Wb. > Dear Be-Excelers, > > Terlampir adalah class yang berisi code connection ke excel dengan > menggunakan connection string adodb. > > Salah fungsi dalam class tersebut adalah : > > UpdateRecordFromDimensionalArray > input : dimArray As Variant, sTableInDatabase As String, sKeyFld As > String, cKey As Integer > ouput: TRUE jika berhasil update dan FALSE jika tidak berhasil update > > Program berjalan dengan baik untuk SQL "INSERT" > objConnection.Execute sSQL_INSERT, objRecordset, adCmdText > > Tetapi tidak berjalan sesuai harapan untuk SQL "DELETE" > objConnection.Execute sSQL_DELETE, objRecordset, adCmdText > > Mohon pencerahannya, > Wassalaamu'alaikum Wr. Wb, > > -zainul > > <clsDbXls.cls> > > > >