Selasa, 27 Maret 2012

Re: [belajar-access] Kecepatan Query dan Hidden Tables

 



Terima kasih Mas Hendra, ini masukan yang sangat bermanfaat buat saya...
Untuk data BE dari SQL Server, proses dilakukan di Server, terkecuali untuk yang disebutkan dibawah, diantaranya membuat query dng data dari table yang dilink dari SQL Server dan Ms Access dalam satu query. Maka ini bekerja secara local computer. Namun penggunaan query standard dng data dari table yang dilink dari SQL Server saja, maka semua data diproses diserver, terkecuali query yg disebutkan dibawah. Info yang bermanfaat, terima kasih sekali lagi...
 
Wassalaamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi.
----- Original Message -----
Sent: Tuesday, March 27, 2012 1:59 PM
Subject: Re: [belajar-access] Kecepatan Query dan Hidden Tables

Oh gitu ya Mas,,,itu untuk murni ADP atau juga berlaku untuk non ADP. (sekedar FE Access + BE SQL Server) ?
apakah proses itu bisa begitu untuk semua konstruksi SQL dalam sebuah query ..? karena dari yg saya baca beberapa 
konstruksi SQL bagaimanapun akan memaksa Access untuk bekerja lokal (ambil semua baru saring), seperti link ini mas :
saya kutipkan ringkasannya :

Don't Force Local Query Processing

Don't use query constructs that cause processing to be done by Access on the local computer. The following query operations force the Jet database engine to perform local data processing:
  • Join operations between tables that are linked to different data source (that is, a join between a SQL table and a linked Access table).

  • Join operations based on query that uses the DISTINCT keyword, or a query that contains a GROUP BY clause.

  • Outer joins that contain syntax that is not directly supported by the remote database server.

  • The LIKE operator used with Text or Memo fields

  • Multi-level grouping and totaling operations

  • GROUP BY clauses that are based on a query with the DISTINCT keyword, or the GROUP BY clause.

  • Crosstab queries that have more than one aggregate, or that have field, row, or column headings that contain aggregates, or that have an ORDER BY clause

  • User-defined functions, or functions that are not supported by the remote server

  • Complex combinations of INNER JOIN, LEFT JOIN, or RIGHT JOIN operations in nested queries.
Mengenai masalah Query dan VBA kalau yang Mas jelaskan mungkin saya  sudah paham, maaksud saya Query Access dibanding Perintah SQL
di Visual Basic (bukan VBA), karena setau saya VB tdk ada Query jadi semua perintah harus lewat coding di Form/Module...ataukah VB punya
cara sendiri untuk mengcompile codingnya sehingga tetap cepat...Terima kasih Mas
Regards
Hendra



From: Sofyan Efendi <sofyanefendi@gmail.com>
To: belajar-access@yahoogroups.com
Sent: Tuesday, March 27, 2012 1:37 PM
Subject: Re: [belajar-access] Kecepatan Query dan Hidden Tables

 

Ya Mas Hendra.. BE nya Access memang bukan yg memproses, karena saat sebagai BE, Access hanya berupa file tempat menyimpan data, bukan memproses data. Tapi untuk SQL Server, salah satu keunggulannya, dia dapat mengirimkan data sesuai yg kita ambil. Cukup jauh perbandingannya dalam hal kecepatan.
 
Adapun yg dimaksud Query lebih cepat dari VBA, yg dimaksud adalah penggunaan query nya menggunakan kode SQL secara langsung di VBA, bukan membandingan query dengan VBA. Misal:
 
DoCmd.RunSQL "UPDATE Finishing_Goods_DB INNER JOIN dbo_IMA ON Finishing_Goods_DB.ID_Article_MRP = dbo_IMA.IMA_ItemID SET Finishing_Goods_DB.ConversiUnitMeasure = [IMA_SalesConvUnitMeasure]" _
& "WHERE Finishing_Goods_DB.ConversiUnitMeasure Is Null;"
 
Diatas adalah salah satu contoh penggunaan query update di VBA. Padahal selain cara diatas, kita bisa juga buat query update di Access, kemudian dijalankan dengan perintah docmd.openquery "nama querynya".
 
Nah, yg dibandingkan, cepat mana antara DoCmd.RunSQL dengan docmd.openquery.
 
Wassalaamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi.
----- Original Message -----
Sent: Tuesday, March 27, 2012 12:40 PM
Subject: Re: [belajar-access] Kecepatan Query dan Hidden Tables

Maaf Mas saya nimbrung,,,
Masalah pemrosesan data oleh Access ini salah satu issue Access yg paling saya tertarik, saya belum pernah mencoba langsung tapi
dari yg saya baca dan dulu pernah juga dibahas di Milis bahwa sebenarnya bukan BE nya yg membuat proses data oleh Access
seperti yg Mas jelaskan, apapun BE nya jika FE nya Access kecuali dgn metoda Pass Through Queries, maka seluruh data tetap
akan ditarik ke PC user baru nanti disaring...sangat tidak efisien memang. Mas Aksan malah sudah memberi hasil eksperimennya
tentang ini dan memang begitu cara kerja Access (kecuali pake Pass Through Queries), sayangnya PT Queries tidak bisa dipakai
utk BE Access.
Tentang Query lebih cepat dari VBA yg saya mau tanyakan apakah berarti Query Access lebih cepat dari Visual Basic ? karena
setau saya VB tdk ada Query, semuanya harus lewat coding,,,dan kalo tdk salah juga sama2 pake JET Engine ya mas?
Mohon penjelasannya Mas...
Regards
Hendra


From: Sofyan Efendi <sofyanefendi@gmail.com>
To: belajar-access@yahoogroups.com
Sent: Tuesday, March 27, 2012 11:27 AM
Subject: Re: [belajar-access] Kecepatan Query dan Hidden Tables

 
Dear Mas Heru, untuk aplikasi multi user, dengan backend database menggunakan Access via jaringan LAN, sementara ini belum ada cara untuk mempercepatnya. Aplikasi multi user disarankan menggunakan SQL Server. SQL Server sangat mengurangi penggunaan lalu lintas data jaringan / network, sebab ia dapat mengirimkan dan mengambil data sesuai yang diinginkan oleh user saja. Sebagai contoh, jika kita hendak mencari suatu data karyawan yang bernama "Sofyan" saja, maka SQL Server akan mengirimkan melalui network, data yang namanya "Sofyan" saja. Sedangkan pada Access, seluruh data karyawan akan dikirimkan dahulu ke PC user melalui network, kemudian baru di pilih yang bernama "Sofyan" di PC usernya. Bisa dibayangkan jika data karyawan kita ada 1,000,000 record, maka akan sangat lama sekali jika menggunakan Access.
 
Untuk Docmd.OpenQuery VS DoCmd.RunSQL , bila yg dibandingkan kecepatan, maka lebih cepat Docmd.OpenQuery. Sebab Access sudah meng-compile object query saat kita save query tsb. Adapun kode SQL di VBA berada dalam string petik dua, sehingga ketika dijalankan, Access akan mencheck dulu apakah kode SQL tsb error atau tidak, barulah query tersebut dijalankan.
 
Untuk Hide All Tables, sepertinya ada table system yang ikut terbawa, karena Mas Heru menggunakan perintah For i = 1 To CurrentDb.TableDefs.Count. Coba tambahkan on error resume next bila memang ingin tetap menggunakan perintah tsb.
 
Function HideAllTables()
on error resume next
    For i = 1 To CurrentDb.TableDefs.Count
        CurrentDb.TableDefs(CurrentDb.TableDefs(i - 1).Name).Attributes = 2
    Next
    CurrentDb.TableDefs.Refresh
End Function
 
Alternatif lainnya, cukup table-table tertentu saja yang di hide.
 
Wassalaamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi.

----- Original Message -----
Sent: Tuesday, March 27, 2012 10:34 AM
Subject: Re: [belajar-access] Kecepatan Query dan Hidden Tables

Thank's atas sarannya, sudah saya coba tetapi masih lambat mas.

BTW...sudahkan ada yang pernah mencoba bila record sudah banyak, untuk query sbb :
Docmd.OpenQuery VS DoCmd.RunSQL lebih cepetan mana yah dalam eksekusinya dan apa plus minusnya ?

dan case yang ke-2 (hidden table) gmana yah ?

hehehe.... sepertinya para suhu dan master access sedang pada sibuk nieh, udah jarang denger lagi MBA kasir solusi.....heheheheh...

note :
email sebelumnya tertulis "metode yang sementara dipakai adalah Docmd. Runquery" --> revisi menjadi  Docmd.OpenQuery

Salam anget dan jabat kenceng,
(hehehe...biar MBA bisa ketawa...)....Sory Bang....b'canda....


Salam,
HerDja

2012/3/27 Hendra Agestha Hamid <the_agestha@yahoo.com>
 
Ini saya coba copas dari obrolan saya dengan Mas Toni "Covey", barusan kok , mungkin bisa dicoba :

Saya juga lebih suka pakai Unbound Form, alasannya sama seperti Kang Adi utarakan, cuma yang biasa saya lakukan untuk
insert / update datanya di "On Click" tombol "Simpan" pakai Coding :

Private Sub cmdSimpan_Click()
Dim dbs As Database
Dim rst As Recordset

'Buka Tabel yang akan diupdate
Set dbs = DBEngine.Workspaces(0).OpenDatabase(LokasiDataMDB & FileMDB)
Set rst = dbs.OpenRecordset(TabelTujuan, dbOpenTable)

rst.AddNew 'Untuk tambah data
<Atau>
rst.Edit 'Untuk Update data
<Update Data ke Record>
rst.Update
rst.close
dbs.close

set dbs = Nothing
set rst = Nothing
End Sub

Dengan cara ini proses jauh lebih cepat, walaupun jaringan lagi lelet.
Semoga bermanfaat.

Regards
Hendra


From: Heru Wibowo <heru.wibowo4456@gmail.com>
To: Belajar Access <belajar-access@yahoogroups.com>
Sent: Monday, March 26, 2012 10:25 AM
Subject: [belajar-access] Kecepatan Query dan Hidden Tables

 
Salam sejahtera,

Dear para suhu access....mohon bantuan info dan solusi sebagai berikut :

Database full access 2010 ( FE dan BE) dengan data baru mencapai 10ribuan record (bekerja dalam jaringan LAN dengan 8 user), case :

1. Manipulating data lambat (insert, update, delete record), dengan metode query seperti apakah supaya proses manipulating data dapat berjalan cepat (baca minimal normal) ?
metode yang sementara dipakai adalah Docmd. Runquery...

2. Ketika database dibuat Hidden table (very hidden) selalu muncul windows konfirmasi "Cannot update. Database or object is read-only",  pada waktu open atau exit application, metode hidden tables menggunakan metode :

Function HideAllTables()
    For i = 1 To CurrentDb.TableDefs.Count
        CurrentDb.TableDefs(CurrentDb.TableDefs(i - 1).Name).Attributes = 2
    Next
    CurrentDb.TableDefs.Refresh
   
End Function

Sebagai perbandingan, sewaktu menggunakan Ms Access 2003 hal ini tidak dijumpai, apakah ada metode lain u/ hidden table agar tidak dapat diintip di ms Excel selain dengan metode hidden table menggunaan metode diatas ?
sebab jika  Attributes  saya ganti dengan angka 1 windows konfirmasi tidak muncul, tetapi table dapat diintip dengan ms excel.

Demikian hal ini disampaikan.
Atas solusi dari para master dan suhu diucapkan terima kasih.

Salam,
HerDja







__._,_.___
Recent Activity:
SPAM IS PROHIBITED
.

__,_._,___

Tidak ada komentar:

Posting Komentar