[belajar-excel] Execute SQL "DELETE" di object connection ke Excel

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[belajar-excel] Execute SQL "DELETE" di object connection ke Excel

Zainul Ulum
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 (7K) Download Attachment
Kid
Reply | Threaded
Open this post in threaded view
|

Re: [belajar-excel] Execute SQL "DELETE" di object connection ke Excel

Kid
Administrator
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 [hidden email]
[belajar-excel] <[hidden email]> 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>
Reply | Threaded
Open this post in threaded view
|

Re: [belajar-excel] Execute SQL "DELETE" di object connection ke Excel

Zainul Ulum
In reply to this post by Zainul Ulum
Maturnuwun Mas Kid,
sudah dapat idenya.
akan saya email ke grup jika simulasinya telah berhasil.
wassalam,
-zainul



#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#

--------------------------------------------
On Mon, 19/2/18, 'Mr. Kid' [hidden email] [belajar-excel] <[hidden email]> wrote:

 Subject: Re: [belajar-excel] Execute SQL "DELETE" di object connection ke Excel
 To: "BeExcel" <[hidden email]>
 Date: Monday, 19 February, 2018, 10:36 AM
 
 
  
 
 
 
   
 
 
     
       
       
       Wa'alaikumussalam
 wr wbMas
 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 [hidden email]
 [belajar-excel] <[hidden email]
 > 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 :
 
 
 
 UpdateRecordFromDimensionalArr ay
 
 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>
 
 
 
     
     
 
     
     
 
 
 
 #yiv0326078270 #yiv0326078270 --
   #yiv0326078270ygrp-mkp {
 border:1px solid #d8d8d8;font-family:Arial;margin:10px
 0;padding:0 10px;}
 
 #yiv0326078270 #yiv0326078270ygrp-mkp hr {
 border:1px solid #d8d8d8;}
 
 #yiv0326078270 #yiv0326078270ygrp-mkp #yiv0326078270hd {
 color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
 0;}
 
 #yiv0326078270 #yiv0326078270ygrp-mkp #yiv0326078270ads {
 margin-bottom:10px;}
 
 #yiv0326078270 #yiv0326078270ygrp-mkp .yiv0326078270ad {
 padding:0 0;}
 
 #yiv0326078270 #yiv0326078270ygrp-mkp .yiv0326078270ad p {
 margin:0;}
 
 #yiv0326078270 #yiv0326078270ygrp-mkp .yiv0326078270ad a {
 color:#0000ff;text-decoration:none;}
 #yiv0326078270 #yiv0326078270ygrp-sponsor
 #yiv0326078270ygrp-lc {
 font-family:Arial;}
 
 #yiv0326078270 #yiv0326078270ygrp-sponsor
 #yiv0326078270ygrp-lc #yiv0326078270hd {
 margin:10px
 0px;font-weight:700;font-size:78%;line-height:122%;}
 
 #yiv0326078270 #yiv0326078270ygrp-sponsor
 #yiv0326078270ygrp-lc .yiv0326078270ad {
 margin-bottom:10px;padding:0 0;}
 
 #yiv0326078270 #yiv0326078270actions {
 font-family:Verdana;font-size:11px;padding:10px 0;}
 
 #yiv0326078270 #yiv0326078270activity {
 background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}
 
 #yiv0326078270 #yiv0326078270activity span {
 font-weight:700;}
 
 #yiv0326078270 #yiv0326078270activity span:first-child {
 text-transform:uppercase;}
 
 #yiv0326078270 #yiv0326078270activity span a {
 color:#5085b6;text-decoration:none;}
 
 #yiv0326078270 #yiv0326078270activity span span {
 color:#ff7900;}
 
 #yiv0326078270 #yiv0326078270activity span
 .yiv0326078270underline {
 text-decoration:underline;}
 
 #yiv0326078270 .yiv0326078270attach {
 clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
 0;width:400px;}
 
 #yiv0326078270 .yiv0326078270attach div a {
 text-decoration:none;}
 
 #yiv0326078270 .yiv0326078270attach img {
 border:none;padding-right:5px;}
 
 #yiv0326078270 .yiv0326078270attach label {
 display:block;margin-bottom:5px;}
 
 #yiv0326078270 .yiv0326078270attach label a {
 text-decoration:none;}
 
 #yiv0326078270 blockquote {
 margin:0 0 0 4px;}
 
 #yiv0326078270 .yiv0326078270bold {
 font-family:Arial;font-size:13px;font-weight:700;}
 
 #yiv0326078270 .yiv0326078270bold a {
 text-decoration:none;}
 
 #yiv0326078270 dd.yiv0326078270last p a {
 font-family:Verdana;font-weight:700;}
 
 #yiv0326078270 dd.yiv0326078270last p span {
 margin-right:10px;font-family:Verdana;font-weight:700;}
 
 #yiv0326078270 dd.yiv0326078270last p
 span.yiv0326078270yshortcuts {
 margin-right:0;}
 
 #yiv0326078270 div.yiv0326078270attach-table div div a {
 text-decoration:none;}
 
 #yiv0326078270 div.yiv0326078270attach-table {
 width:400px;}
 
 #yiv0326078270 div.yiv0326078270file-title a, #yiv0326078270
 div.yiv0326078270file-title a:active, #yiv0326078270
 div.yiv0326078270file-title a:hover, #yiv0326078270
 div.yiv0326078270file-title a:visited {
 text-decoration:none;}
 
 #yiv0326078270 div.yiv0326078270photo-title a,
 #yiv0326078270 div.yiv0326078270photo-title a:active,
 #yiv0326078270 div.yiv0326078270photo-title a:hover,
 #yiv0326078270 div.yiv0326078270photo-title a:visited {
 text-decoration:none;}
 
 #yiv0326078270 div#yiv0326078270ygrp-mlmsg
 #yiv0326078270ygrp-msg p a span.yiv0326078270yshortcuts {
 font-family:Verdana;font-size:10px;font-weight:normal;}
 
 #yiv0326078270 .yiv0326078270green {
 color:#628c2a;}
 
 #yiv0326078270 .yiv0326078270MsoNormal {
 margin:0 0 0 0;}
 
 #yiv0326078270 o {
 font-size:0;}
 
 #yiv0326078270 #yiv0326078270photos div {
 float:left;width:72px;}
 
 #yiv0326078270 #yiv0326078270photos div div {
 border:1px solid
 #666666;min-height:62px;overflow:hidden;width:62px;}
 
 #yiv0326078270 #yiv0326078270photos div label {
 color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}
 
 #yiv0326078270 #yiv0326078270reco-category {
 font-size:77%;}
 
 #yiv0326078270 #yiv0326078270reco-desc {
 font-size:77%;}
 
 #yiv0326078270 .yiv0326078270replbq {
 margin:4px;}
 
 #yiv0326078270 #yiv0326078270ygrp-actbar div a:first-child {
 margin-right:2px;padding-right:5px;}
 
 #yiv0326078270 #yiv0326078270ygrp-mlmsg {
 font-size:13px;font-family:Arial, helvetica, clean,
 sans-serif;}
 
 #yiv0326078270 #yiv0326078270ygrp-mlmsg table {
 font-size:inherit;font:100%;}
 
 #yiv0326078270 #yiv0326078270ygrp-mlmsg select,
 #yiv0326078270 input, #yiv0326078270 textarea {
 font:99% Arial, Helvetica, clean, sans-serif;}
 
 #yiv0326078270 #yiv0326078270ygrp-mlmsg pre, #yiv0326078270
 code {
 font:115% monospace;}
 
 #yiv0326078270 #yiv0326078270ygrp-mlmsg * {
 line-height:1.22em;}
 
 #yiv0326078270 #yiv0326078270ygrp-mlmsg #yiv0326078270logo {
 padding-bottom:10px;}
 
 
 #yiv0326078270 #yiv0326078270ygrp-msg p a {
 font-family:Verdana;}
 
 #yiv0326078270 #yiv0326078270ygrp-msg
 p#yiv0326078270attach-count span {
 color:#1E66AE;font-weight:700;}
 
 #yiv0326078270 #yiv0326078270ygrp-reco
 #yiv0326078270reco-head {
 color:#ff7900;font-weight:700;}
 
 #yiv0326078270 #yiv0326078270ygrp-reco {
 margin-bottom:20px;padding:0px;}
 
 #yiv0326078270 #yiv0326078270ygrp-sponsor #yiv0326078270ov
 li a {
 font-size:130%;text-decoration:none;}
 
 #yiv0326078270 #yiv0326078270ygrp-sponsor #yiv0326078270ov
 li {
 font-size:77%;list-style-type:square;padding:6px 0;}
 
 #yiv0326078270 #yiv0326078270ygrp-sponsor #yiv0326078270ov
 ul {
 margin:0;padding:0 0 0 8px;}
 
 #yiv0326078270 #yiv0326078270ygrp-text {
 font-family:Georgia;}
 
 #yiv0326078270 #yiv0326078270ygrp-text p {
 margin:0 0 1em 0;}
 
 #yiv0326078270 #yiv0326078270ygrp-text tt {
 font-size:120%;}
 
 #yiv0326078270 #yiv0326078270ygrp-vital ul li:last-child {
 border-right:none !important;
 }
 #yiv0326078270
 
Reply | Threaded
Open this post in threaded view
|

Re: [belajar-excel] Execute SQL "DELETE" di object connection ke Excel

Sony Ario
In reply to this post by Kid
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' [hidden email] [belajar-excel] <
[hidden email]>:

>
>
> 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 [hidden email]
> [belajar-excel] <[hidden email]> 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>
>
>
>
>
Kid
Reply | Threaded
Open this post in threaded view
|

Re: [belajar-excel] Execute SQL "DELETE" di object connection ke Excel

Kid
Administrator
Yup

Sent from my smart enough phone

> On Feb 23, 2018, at 10:15, Sony Ario [hidden email] [belajar-excel] <[hidden email]> wrote:
>
> 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
>
> 2018-02-19 10:36 GMT+07:00 'Mr. Kid' [hidden email] [belajar-excel] <[hidden email]>:
>>  
>> 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 [hidden email] [belajar-excel] <[hidden email]> 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>
>>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: [belajar-excel] Execute SQL "DELETE" di object connection ke Excel

Sony Ario
Terima kasih Mr. kid


*gnl-excelinfo.blogspot.co.id <http://gnl-excelinfo.blogspot.co.id>*

2018-02-23 11:00 GMT+07:00 'Mr. Kid' [hidden email] [belajar-excel] <
[hidden email]>:

>
>
> Yup
>
> Sent from my smart enough phone
>
> On Feb 23, 2018, at 10:15, Sony Ario [hidden email] [belajar-excel]
> <[hidden email]> wrote:
>
>
>
> 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' [hidden email] [belajar-excel] <
> [hidden email]>:
>
>>
>>
>> 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 [hidden email]
>> [belajar-excel] <[hidden email]> 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>
>>
>>
>>
>
>