Maturnuwun Mas Kid,
Penjelasannya Padat dan jelas.

Sepertinga saya akan menggunakan back end berupa access database (accdb) dengan 
stored procedure.
belum mempertimbangkan ke MySQL atau yang lain karena IT admin tidak 
mengijinkan saya untuk install program baru

Thanks,
-zainul


#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#

--------------------------------------------
On Wed, 20/12/17, 'Mr. Kid' mr.nm...@gmail.com [belajar-excel] 
<belajar-excel@yahoogroups.com> wrote:

 Subject: Re: [belajar-excel] Share Workbook yang ada excel table-nya
 To: "BeExcel" <belajar-excel@yahoogroups.com>
 Date: Wednesday, 20 December, 2017, 10:57 PM
 
 
  
 
 
 
   
 
 
     
       
       
       Wa'alaikumussalam
 wr wb
 mas Zainul,
 
 By design :
 Excel workbook ketika dibuka selalu
 berusaha untuk Exclusive (memberi hak write ke seorang user
 saja)
 
 Fitur shared workbook
 :Fitur ini berusaha untuk memberi hak
 Exclusive kepada lebih dari seorang user. Tetapi, fitur ini
 memberi batasan ketika ada lebih dari seorang user yang akan
 mengubah isi cells (sila lihat di menu Share Workbook tab
 Advanced bagian Conflicting blabla). Cells yang diubah bisa
 jadi masih kosong (blank cells) maupun sudah ada
 isinya.Artinya, shared workbook cukup beresiko
 untuk dimanfaatkan dalam proses penyimpanan data, karena
 diusahakan sebisa mungkin data yang disimpan dapat terjaga
 utuh. Sedangkan fitur ini memungkinkan terjadinya kondisi
 data yang benar (hasil input user A) akan terubah oleh data
 yang benar lainnya (hasil input user B), sehingga data akan
 kehilangan records yang benar.
 Aplikasi entri data
 :Pada umumnya, sistem data akan membentuk
 setidaknya 2 layer, yaitu : 1. Back end data; 2.
 Interface.Back end data bisa di text file, Excel
 file, database (direkomendasikan)
 Interface bisa berupa add in, xlsm
 atau xlsb file, desktop application lainnya, dan web base
 app (biasanya akan terbentuk 3 layer [three tier])
 
 Back end data dengan Text
 file dan Excel :Hak akses terhadap dua format
 file ini adalah Exclusive. Jadi, proses penulisan data ke
 back end harus dibuatkan sendiri
 antriannya.
 Back end data dengan database
 : (apapun database-nya, mulai dari MS Access, SQL
 Server, Oracle, MySQL, dsb yang berupa DBMS)Hak
 akses terhadap database adalah shared dengan management
 share write dan read yang sudah baik. Jadi tidak perlu repot
 membuatkan antrian proses penulisan data.
 Kasus Back End Data dengan Excel
 : (misal diatur)1. back end data dengan Excel
 bernama myData.xlsx (TIDAK shared workbook)
 2. interface berupa add-in atau xlsm
 atau xlsb (direkomendasikan), TETAPI membuka back end
 myData.xlsx hanya sesuai keperluan saja, yaitu saat akan
 menulis data dan saat akan membaca data
 saja    * Open - write - save - close atau
 Open - read - close :: jangan sampai menunggu respon
 dari user, apalagi user langsung entri atau edit di
 myData.xlsx
 
 Prosedur antrian penulisan data bisa
 sebagai berikut :     'deklarasi variabel
 proses
      dim wbkApp as
 workbook, rngInput as range, wbkDB as workbook, shtDT as
 worksheet
     
 'init records di interface yang akan ditulis ke back
 end
      set wbkAPP =
 thisworkbook     set
 rngInput=wbkapp.sheets("area input
 data").range("a2:c17")
      
      'cek
 antrianCOBA_BUKA:      set
 wbkdb=workbooks.open( wbkapp.path &
 "\myData.xlsx" )      if
 wbkdb.readonly then           
 wbkdb.close false            goto
 COBA_BUKA      endif
       'proses tulis [kalau
 sampai di baris ini, berarti back end data telah menyerahkan
 hak write secara exclusive kepada wbkApp melalui
 wbkDB      set
 shtdt=wbkdb.sheets("DATA")    'misal nama
 sheet lokasi penulisan adalah 'DATA'
      
 rnginput.copy      shtdt.cells(
 shtdt.rows.count , "A"
 ).end(xlup).offset(1).pastespecial xlpastevalues
       wbkdb.close true   
 'save n close wbkdb
 
      'pesan selesai kepada
 user      msgbox
 "Selesai.",vbinformation,"Tulis ke
 xlDBFile"
 
 Catatan :
 Pada proses di atas, file
 myData.xlsx bisa berisi excel table, excel query table,
 excel pivot table, dan sebagainya. Tapi, penulisan data
 tetap di suatu range (jika range tepat dibawah Excel Table,
 maka Excel Table akan autoresize barisnya).
 
 
 Obrolan
 :Penggunaan database (dbms) sebagai back end
 sangat dianjurkan. Proses penulisan data bisa dengan banyak
 cara. 
 Secara umum, urutan proses
 penulisan data adalah open connection - execute Insert atau
 Update query - Close connection
 Varian proses execute insert atau
 update query bisa jadi dengan set setiap nilai field lalu
 diakhir commit. Tapi saya kurang suka cara ini, terlalu
 banyak baris script-nya dan kurang cepat untuk penulisan
 records yang banyak sekaligus.
 
 Excel
 Table bisa dimanfaatkan untuk menyusun bunyi query insert
 atau update di sebuah kolom dalam Excel Table (kolom ini
 bisa di-hide). Lalu execute dilakukan dengan loop seluruh
 isi kolom tersebut.Untuk records yang sangat
 banyak, tentu hal ini akan memakan waktu dalam melakukan
 loop (BUKAN pada eksekusi query-nya).
 Data yang sangat banyak biasanya
 akan menggunakan DBMS yang besar, seperti SQL Server (edisi
 Express bisa 10GB tanpa trik, dan bisa dijadikan multi
 database jika data lebih dari 10GB).Dengan
 DBMS seperti SQL Server, akan ada lebih banyak opsi dalam
 penulisan data, mulai dari pass through query (saya kurang
 suka cara ini, karena terlalu lambat untuk ukuran kerja
 sebuah DBMS sekelas SQL Server), programming dengan Stored
 Precedure (SP), dan sebagainya.
 
 Input data di Excel, database
 di SQL Server, jumlah records cukup banyak (misal sekitar
 200K records), dengan membuat SP di dalam database dan SP
 dieksekusi oleh Excel, maka proses penulisan data bisa cuma
 beberapa detik saja (relatif terhadap spesifikasi komputer
 ya). Sedangkan dengan loop execute query insert bisa sekitar
 1 sampai 2 menit.
 Wassalamu'alaikum wr
 wbKid
 
 
 2017-12-20 12:51 GMT+07:00
 zainul_u...@yahoo.com
 [belajar-excel] <belajar-excel@yahoogroups.com>:
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
  
 
 
 
   
 
 
     
       
       
       Dear Be-excel,Saya mulai thread dari
 jawaban Mas Kid mengenai shared workbook.
 Latar belakang:
 Saya membuat aplikasi vba excel
 dalam bentuk addin (extensi xlam) untuk otomatisasi sebuah
 file excel yang saya pakai sebagai database
 (excel-database). Pada file excel-database tersebut terdiri
 dari beberapa sheet yang berisi data berupa excel
 table. 
 Seiring
 dengan perkembangan penambahan data tiap hari, saya
 berencana menge-set excel-database tersebut menjadi
 multi-user dengan setting shared workbook tetapi saat diset
 sebagai shared workbook, program excel menginformasikan
 bahwa tool shared workbook tidak bisa digunakan kalo
 terdapat object excel table dalam workbook.
 Pertanyaan / bahan
 diskusi:1.  Apakah ada cara lain agar bisa
 sharing workbook yang ada object excel table
 nya?2. Jika nomer #1 tidak bisa, saya berencana
 mengkonversi excel-database tersebut ke microsoft access
 (*.accdb) , tetapi proses input dan output tetap di
 excel.saya telah membuat vba code sederhana untuk
 connect ke access
 sbb:'=============================
 ========Option ExplicitConst
 sProvider As String =
 "Microsoft.ACE.OLEDB.12.0"Dim
 sConnString As StringDim cnn As
 ADODB.Connection
 Private Function
 CanConnectAccess(DbFile As String, rtnErr As String) As
 Boolean        sConnString =
 "Provider=" & sProvider & ";"
 & _        "Data Source=" &
 DbFile & ";" & _       
 "Persist Security Info=False;" 
       'create a new connection to access
 database    CanConnectAccess =
 True    rtnErr = vbNullString 
       Set cnn = New
 ADODB.Connection    On Error Resume
 Next    cnn.Open sConnString    If
 Err..Number Then        rtnErr =
 Err.Description        CanConnectAccess =
 False        Err.Clear    End
 IfEnd
 Function'=============================
 =dari vba code di atas, bagian mana yang perlu
 dirubah agar database access bisa untuk multi
 user?
 Terimkasih
 banyak sebelumnya. Mohon maaf jika terlalu
 panjang.
 Wassalamu'alaikum wr
 wb.-zainul
 
 
 
 
 
     
      
 
     
     
 
 
 
 
 
 
   
 
 
 
 
 
 
 
 
 
 
     
      
 
     
     
 
 
 
 #yiv3560235441 #yiv3560235441 --
   #yiv3560235441ygrp-mkp {
 border:1px solid #d8d8d8;font-family:Arial;margin:10px
 0;padding:0 10px;}
 
 #yiv3560235441 #yiv3560235441ygrp-mkp hr {
 border:1px solid #d8d8d8;}
 
 #yiv3560235441 #yiv3560235441ygrp-mkp #yiv3560235441hd {
 color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
 0;}
 
 #yiv3560235441 #yiv3560235441ygrp-mkp #yiv3560235441ads {
 margin-bottom:10px;}
 
 #yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad {
 padding:0 0;}
 
 #yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad p {
 margin:0;}
 
 #yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad a {
 color:#0000ff;text-decoration:none;}
 #yiv3560235441 #yiv3560235441ygrp-sponsor
 #yiv3560235441ygrp-lc {
 font-family:Arial;}
 
 #yiv3560235441 #yiv3560235441ygrp-sponsor
 #yiv3560235441ygrp-lc #yiv3560235441hd {
 margin:10px
 0px;font-weight:700;font-size:78%;line-height:122%;}
 
 #yiv3560235441 #yiv3560235441ygrp-sponsor
 #yiv3560235441ygrp-lc .yiv3560235441ad {
 margin-bottom:10px;padding:0 0;}
 
 #yiv3560235441 #yiv3560235441actions {
 font-family:Verdana;font-size:11px;padding:10px 0;}
 
 #yiv3560235441 #yiv3560235441activity {
 
background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}
 
 #yiv3560235441 #yiv3560235441activity span {
 font-weight:700;}
 
 #yiv3560235441 #yiv3560235441activity span:first-child {
 text-transform:uppercase;}
 
 #yiv3560235441 #yiv3560235441activity span a {
 color:#5085b6;text-decoration:none;}
 
 #yiv3560235441 #yiv3560235441activity span span {
 color:#ff7900;}
 
 #yiv3560235441 #yiv3560235441activity span
 .yiv3560235441underline {
 text-decoration:underline;}
 
 #yiv3560235441 .yiv3560235441attach {
 clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
 0;width:400px;}
 
 #yiv3560235441 .yiv3560235441attach div a {
 text-decoration:none;}
 
 #yiv3560235441 .yiv3560235441attach img {
 border:none;padding-right:5px;}
 
 #yiv3560235441 .yiv3560235441attach label {
 display:block;margin-bottom:5px;}
 
 #yiv3560235441 .yiv3560235441attach label a {
 text-decoration:none;}
 
 #yiv3560235441 blockquote {
 margin:0 0 0 4px;}
 
 #yiv3560235441 .yiv3560235441bold {
 font-family:Arial;font-size:13px;font-weight:700;}
 
 #yiv3560235441 .yiv3560235441bold a {
 text-decoration:none;}
 
 #yiv3560235441 dd.yiv3560235441last p a {
 font-family:Verdana;font-weight:700;}
 
 #yiv3560235441 dd.yiv3560235441last p span {
 margin-right:10px;font-family:Verdana;font-weight:700;}
 
 #yiv3560235441 dd.yiv3560235441last p
 span.yiv3560235441yshortcuts {
 margin-right:0;}
 
 #yiv3560235441 div.yiv3560235441attach-table div div a {
 text-decoration:none;}
 
 #yiv3560235441 div.yiv3560235441attach-table {
 width:400px;}
 
 #yiv3560235441 div.yiv3560235441file-title a, #yiv3560235441
 div.yiv3560235441file-title a:active, #yiv3560235441
 div.yiv3560235441file-title a:hover, #yiv3560235441
 div.yiv3560235441file-title a:visited {
 text-decoration:none;}
 
 #yiv3560235441 div.yiv3560235441photo-title a,
 #yiv3560235441 div.yiv3560235441photo-title a:active,
 #yiv3560235441 div.yiv3560235441photo-title a:hover,
 #yiv3560235441 div.yiv3560235441photo-title a:visited {
 text-decoration:none;}
 
 #yiv3560235441 div#yiv3560235441ygrp-mlmsg
 #yiv3560235441ygrp-msg p a span.yiv3560235441yshortcuts {
 font-family:Verdana;font-size:10px;font-weight:normal;}
 
 #yiv3560235441 .yiv3560235441green {
 color:#628c2a;}
 
 #yiv3560235441 .yiv3560235441MsoNormal {
 margin:0 0 0 0;}
 
 #yiv3560235441 o {
 font-size:0;}
 
 #yiv3560235441 #yiv3560235441photos div {
 float:left;width:72px;}
 
 #yiv3560235441 #yiv3560235441photos div div {
 border:1px solid
 #666666;min-height:62px;overflow:hidden;width:62px;}
 
 #yiv3560235441 #yiv3560235441photos div label {
 
color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}
 
 #yiv3560235441 #yiv3560235441reco-category {
 font-size:77%;}
 
 #yiv3560235441 #yiv3560235441reco-desc {
 font-size:77%;}
 
 #yiv3560235441 .yiv3560235441replbq {
 margin:4px;}
 
 #yiv3560235441 #yiv3560235441ygrp-actbar div a:first-child {
 margin-right:2px;padding-right:5px;}
 
 #yiv3560235441 #yiv3560235441ygrp-mlmsg {
 font-size:13px;font-family:Arial, helvetica, clean,
 sans-serif;}
 
 #yiv3560235441 #yiv3560235441ygrp-mlmsg table {
 font-size:inherit;font:100%;}
 
 #yiv3560235441 #yiv3560235441ygrp-mlmsg select,
 #yiv3560235441 input, #yiv3560235441 textarea {
 font:99% Arial, Helvetica, clean, sans-serif;}
 
 #yiv3560235441 #yiv3560235441ygrp-mlmsg pre, #yiv3560235441
 code {
 font:115% monospace;}
 
 #yiv3560235441 #yiv3560235441ygrp-mlmsg * {
 line-height:1.22em;}
 
 #yiv3560235441 #yiv3560235441ygrp-mlmsg #yiv3560235441logo {
 padding-bottom:10px;}
 
 
 #yiv3560235441 #yiv3560235441ygrp-msg p a {
 font-family:Verdana;}
 
 #yiv3560235441 #yiv3560235441ygrp-msg
 p#yiv3560235441attach-count span {
 color:#1E66AE;font-weight:700;}
 
 #yiv3560235441 #yiv3560235441ygrp-reco
 #yiv3560235441reco-head {
 color:#ff7900;font-weight:700;}
 
 #yiv3560235441 #yiv3560235441ygrp-reco {
 margin-bottom:20px;padding:0px;}
 
 #yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
 li a {
 font-size:130%;text-decoration:none;}
 
 #yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
 li {
 font-size:77%;list-style-type:square;padding:6px 0;}
 
 #yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
 ul {
 margin:0;padding:0 0 0 8px;}
 
 #yiv3560235441 #yiv3560235441ygrp-text {
 font-family:Georgia;}
 
 #yiv3560235441 #yiv3560235441ygrp-text p {
 margin:0 0 1em 0;}
 
 #yiv3560235441 #yiv3560235441ygrp-text tt {
 font-size:120%;}
 
 #yiv3560235441 #yiv3560235441ygrp-vital ul li:last-child {
 border-right:none !important;
 }
 #yiv3560235441 
 

Kirim email ke