Membuat Program Multiuser Dengan Front-End Microsoft Access dan Back-End Microsoft SQL Server (Bagian 6)

Dalam membuat report dengan data bersumber dari SQL Server, record source dibagi 3:

  • Table Temporary
  • Query
  • Pass-through Query

Jangan membuat record source langsung dari table kecuali bila report tersebut sederhana, tanpa kriteria dan tanpa formula.

Table Temporary

Ketika bekerja dengan data yang memerlukan hasil perhitungan dan running yang kompleks, misal menghitung kebutuhan material, data outstanding, planning kedepan, dsb, gunakan table temporary. Tentu saja akan diperlukan VBA dan Action Query dalam menjalankan proses ini. Penggunaan table temporary sangat mengurangi lambatnya loading report didalam Access, sehingga proses perpindahan antara record ke record sangat cepat, karena data source untuk report berasal langsung dari table.

Query

Ketika memerlukan data yang bersumber langsung dari joined antara table ini dan itu, dan memerlukan perhitungan yang tidak terlalu kompleks, gunakan Query, termasuk didalamnya union query, select query dan crosstab query. Simple dan mudah, cukup diberi kriteria, maka sudah bisa langsung dijalankan. Query ini akan langsung mengambil dan memproses data secara langsung dari SQL Server, tidak secara lokal diprosesnya.

Namun perlu kita ketahui juga, query apa saja yang membuat Access harus memproses data SQL Server ke PC Client secara local. Terdapat 9 (sembilan) operasi query yang akan memaksa Access melakukan proses pengolahan data secara lokal:

  • Query join antara table SQL Server dan table Access (baik secara link maupun disimpan secara lokal).
  • Query join antara query yang menggunakan sintak DISTINCTROW dengan query yang menggunakan sintak GROUP BY. SQL Server mendukung sintak DISTINC, tetapi tidak dengan DISTINCTROW.
  • Query join yang menggunakan sintak yang tidak dimengerti oleh SQL Server. Seperti kita ketahui, SQL Server menggunakan bahasa Transact-SQL, dan ini merupakan keuntungan bagi Access, karena Access pun menggunakan bahasa SQL yang “hampir” sama. Namun ada juga yang berbeda, nah bahasa yang berbeda ini tidak bisa dijalankan oleh SQL Server.
  • Penggunaan kriteria dengan operator LIKE pada field berdata type Text atau Memo.
  • Multi-level grouping dan operasi total (yg ditandai dengan simbol Sigma dan SUM).
  • Penggunaan GROUP BY diatas query dengan sintak DISTINCTROW didalamnya. Silahkan lihat no.2 diatas.
  • Penggunaan query crosstab dengan aggregate lebih dari satu, atau query crosstab yang memiliki field, row, atau column heading yang terdapat aggregate, atau query crosstab yang menggunakan sintak ORDER BY.
  • Penggunaan function buatan sendiri (custom) yang tidak kompatible dengan remote server (SQL Server). Untuk penjelasan, silahkan lihat no.3 diatas.
  • Penggunaan secara kompleks INNER JOIN, LEFT JOIN, atau RIGHT JOIN, misal diatas query bertingkat, multi query, sub query, dsb.

Pass-through Query

Ketika diperlukan data dari berbagai table yang banyak (multi query), gunakanlah Pass-through Query. Permasalahannya adalah, ketika bekerja dengan Pass-through Query, tidak seperti bekerja dengan Query biasa, yang bisa diberi kriteria langsung dari suatu control dari form untuk reporting. Maka disini kita harus “akali”, bagaimana tehniknya agar ia tetap bisa diberi kriteria yang bervariasi, tanpa harus masuk ke mode design view. Maka kita bisa langsung membuat Pass-through Query ini via VBA, tidak lagi melalui Design View. Misal procedure yang bisa digunakan adalah sbb:

Sub BuatPassThrough(strSQL As String)

Dim qdfPassThrough As DAO.QueryDef, MyDB As Database

Dim strConnect As String

If Not IsNull(CurrentDb.QueryDefs(“qrySQLPass”).SQL) Then

CurrentDb.QueryDefs.Delete “qrySQLPass”

End If

Set MyDB = CurrentDb()

Set qdfPassThrough = MyDB.CreateQueryDef(“qrySQLPass”)

strConnect = “DRIVER=SQL Server;SERVER=Nama_server_kita;DATABASE=Nama_Database_kita;Uid=Nama_UserID;Pwd=Passwordnya;”

qdfPassThrough.Connect = “ODBC;” & strConnect

qdfPassThrough.SQL = strSQL

qdfPassThrough.ReturnsRecords = False

qdfPassThrough.Close

Application.RefreshDatabaseWindow

DoCmd.OpenQuery “qrySQLPass”, acViewNormal, acReadOnly

DoCmd.Maximize

End Sub

Kita tinggal bermain isi dari “strSQL” nya, tinggal ditambah kriteria dll.

Jadi kita bisa membuat pass-through query ini secara langsung via kode VBA, dimana kriteria yg diinput didalam form bisa dinamis, secara langsung dibuatkan atau dimasukan saat pembuatan pass-through query dinamis ini. Dengan demikian, kriterianya akan dinamis, selalu berubah disetiap masing-masing front-end (client/user), begitu juga pass-through query nya.

Access bisa membuat berbagai object didalam Access secara langsung via VBA, termasuk untuk pembuatan pass-through query ini, lengkap dengan kriterianya. Namun, kriteria ini bukan lagi tertulis (misal) “[Forms]![NamaForm]![NamaControl]” didalam pass-through query-nya, tapi langsung isi dari “[Forms]![NamaForm]![NamaControl]” itu sendiri, misal angka 1, 05-06-2013, dsb.

Insya Allah nanti saya sambung kembali…

Beri Nilai Artikel Ini:

Leave a Reply

Do NOT follow this link or you will be banned from the site!
%d bloggers like this: