Terima kasih pak sebelumnya, sudah meluangkan waktu untuk memberikan pencerahan untuk saya, berikut untuk meneruskan point pertanyaan no 1 (tentang stored procedure/function) dibawah :
1. Misalkan MS Access katakanlah memiliki form bernama FrAddGroupDialoq, yang memiliki field :
- TxIDKontak
- TxInisialGroupKontak
- TxNamaGroupKontak
- TxDeskripsiNamaGroupKontak
- cbolAktif
- command button Insert Data
Bentuk query untuk insert data : INSERT INTO Tbgroupkontak ( IDKontak, InisialGroupKontak, NamaGroupKontak, DeskripsiNamaGroupKontak, bolAktif )
SELECT [Forms]![FrAddGroupDialoq]![IDKontak] AS TxIDKontak, [Forms]![FrAddGroupDialoq]![InisialGroupKontak] AS TxInisialGroupKontak, [Forms]![FrAddGroupDialoq]![NamaGroupKontak] AS TxNamaGroupKontak, [Forms]![FrAddGroupDialoq]![DeskripsiNamaGroupKontak] AS TxDeskripsiNamaGroupKontak, -1 AS cbolAktif;
Syntax query untuk memasukkan data ke Tbgroupkontak tersebut biasanya saya tempatkan di dalam vb form yang bersangkutan, dalam contoh ini FrAddGroupDialoq, dan akan dieksekusi pada saat command button Insert Data di klik.
2. Dari bentuk query tersebut diatas saya ingin tulis di Stored Procedure/function MySQL, contoh dengan nama AddGroup , bagaimanakah Script penulisannya di Stored Procedure/Function di MySQL ya Pak Hariyanto?
3. Bagaimanakah cara memanggil nama Stored Procedure/Function AddGroup dari MySQL jika Command Button Insert Data di Form FrAddGroupDialoq di Klik ?
Maksud dan tujuan saya untuk menuliskan query tersebut di MySQL adalah :
1. Eksekusi lebih cepat, karena dieksekusi disisi server (info dari yang saya baca dari millist kita ini, kalau ndak salah dari Bang Haer).
2. User ndak tau sebenarnya function AddGroup (yang telah kita tulis di MySQL) itu melakukan perintah apa saja (menyamarkan coding), sebab "mungkin" kalau ditulis di vb MS Access pada saat Command Button Insert Data di Klik hanya akan membentuk script :
Private Sub cmdSave_Click()
Call AddGroup
End Sub
Demikian maksud saya pak, sebelum dan sesudahnya atas pencerahan dan bantuan semangat dari Pak Hariyanto saya ucapkan terima kasih.
SAlam,
HerDja
2011/6/12 hari yanto <har_i20002000@yahoo.com>
Subject: Re: [belajar-access] Sepertinya Case Saya Dibawah Menemui Jalan Buntu.
To: belajar-access@yahoogroups.com
Date: Sunday, 12 June, 2011, 9:43 PM
Terima kasih saya haturkan pada milist kita ini, khususnya Pak Haryanto.
Pak Hariyanto, script sudah saya coba dan berhasil.
Sedikit yang saya ingin tanyakan :
1. Jika kita sudah membuat suatu Stored Procedure/Function/Query yang telah kita simpan di MySQL, bagaimanakah cara memanggilnya dengan KLIK dari suatu command button yang kita lekatkan di Ms Access ?#####Semua event kita letakkan di Form Ms Access, menggunakan VBA. Misal, kita ingin mengetahui apa saja database yang di MySql, kita bisa buat command button. Misalnya namanya command1. Pada event on Click, ini dengan ini (sudah barang tentu Username di MySql harus superadmin):Private Sub Command1_Click()
Dim rs As ADODB.Recordset
Dim stg As String
Dim i As IntegerKONEKSISet rs = conn.Execute("SHOW DATABASES;")
If conn.State <> 0 Then
If Not rs.EOF Then
i = 0
Do While Not rs.EOF
stg = stg & i + 1 & ". " & rs.Fields(0) & vbCrLf
i = i + 1
rs.MoveNext
Loop
End If
MsgBox stg
rs.Close
Set rs = Nothing
Else
MsgBox "gagal"End Sub
End If
conn.Close
Set conn = Nothing
Bila ini belum sesuai harapan, bisa dijelaskan event seperti apa yang hendak ditempelkan pada command button. Misal melihat data, menghapus, mengupdate...######
2. pada kutipan script Bapak connToDB "isi dengan IP atau localhost" apakah benar jika MySQL diInstal di Server, dan MS Access terdapat di kompie client, berati ditulis "connToDB "isi dengan IP" ?
####Ya benar. Kalau database MySql berada di komputer sendiri pakai localhost atau 127.0.0.1. Sehingga jika database MySql berada di server (katakanlah IPnya 192.168.1.225), maka di isi dengan 192.168.1.225.####--
Atsa bantuan solusi dan semangat dari Bapak saya ucapkan terima kasih.
Salam,
HerDja2011/6/12 hari yanto <har_i20002000@yahoo.com>
--- On Sat, 11/6/11, Heru Wibowo <heru.wibowo4456@gmail.com> wrote:
From: Heru Wibowo <heru.wibowo4456@gmail.com>
Subject: [belajar-access] Sepertinya Case Saya Dibawah Menemui Jalan Buntu. [1 Attachment]
To: "Belajar Access" <belajar-access@yahoogroups.com>
Date: Saturday, 11 June, 2011, 9:53 PM
Bapak - Bapak Moderator,
Apakah, case saya dibawah ini adalah 'jalan buntu' tidak ada jalan lain lagi ?
Mohon petunjuk, jika seperti yang saya inginkan dibawah ini tidak teratasi saya akan mencoba koneksi lain, sebab saya menunggu lama tidak ada jawaba sama sekali, atau saya yang salah alamat yah, seharusnya to MySQL Forum ?
(Saya sadar, Bapak - Bapak moderator juga memiliki kesibukan, tidak hanya sebagai pnegasuh milist)
Saya mencoba untuk melakukan koneksi antara Ms Access sebagai FE dan MySQL sebagai BE.
Bentuk koneksi saya tertarik dengan cara Bp. Hariyanto (Surabaya), yaitu
tidak menggunakan metode Link table, nah mampet deh jalannya (maaf Pak Hari dan Pak Sudarsono) ilmu aku masih dangkal...alias newbie, cara dari Bapak macet untuk saya implementasikan.
Saya menggunakan :
MySQL 5.5
ODBC 5.1.8
Nama Database manag
User root --> localhost --> port 3306
password --> abcd
MS Access 2010 --> bentuk form berisikan field - field sama seperti
gambar tabel dibawah (demikian pula bentuk tabel di MySQL):
---> Sepertinya Gambar tidak ketangkep di body Email, saya sertakan sebagai lampiran aja <---
Yang ingin saya tanyaken :
1. Bagaimana script untuk membuka koneksi antara MS Access dan MySQLnyaBuat script koneksi di Module. Misalnya diberi nama sambungan. Isi dengan ini.Option ExplicitPublic conn As New ADODB.ConnectionPublic Function connToDB(serverName As String, _
UserName As String, userPass As String, _
dbPath As String, dbName As String)Dim strCon As StringOn Error GoTo errHandle
strCon = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=" _
& serverName & ";DATABASE=" & dbName & ";" & _
"UID=" & UserName & ";PWD=" & userPass & ";OPTION=16426"Set conn = New ADODB.Connection
conn.Open strConExit FunctionerrHandle:
MsgBox "SERVER SEDANG TIDAK AKTIF", , "NON AKTIF"
conn.Close
Set conn = Nothing
End FunctionFunction KONEKSI()
connToDB "isi dengan IP atau localhost", "isi_userNameMySql", "ini_passwordMySql", 3306, "isi_nama_database"
End Function
2. Bagaimana script jika koneksi telah tersambung, maka data yang ada
di MS Access akan terisi otomatisUntuk menampilkan data di Ms Acces, kita membayangkannya begini. Koneksi dulu. Kalau sukses. SQL (minta data via VBA). Hasilnya ditaruh di Tabel temporer. Tampilkan di form.Jadi tidak otomatis. Tapi manual. Satu persatu kita definisikan. Misalnya, di dalam form ada sub form dengan nama BU_PROG_1. Maka scriptnya begini:Function AMBIL_DAT_BUJK()
Dim rss As ADODB.Recordset
Dim db As Database
Dim s_nmbujk, s_bid As Variant
Dim rbs As Recordset
Dim i As Integer
Dim d_a, d_d As Variant
BU_PROG_1.Visible = False 'agar sub form BU_PROG_1 tidak visible
BU_PROG_1.SourceObject = "" 'agar sub form BU_PROG_1 tidak memiliki'source object
SOLIHAN ("BU_DATA_TEM_9_" & KOM) 'fungsi menghapus dan membuat tabel temporer
KONEKSI ' koneksi
d_a = ""
If conn.State <> 0 Then 'jika sukses > SQL
Set rss = conn.Execute("SELECT BU_1.ID_LEGES,BU_1.NRBU," _
& " BU_1.BU_A, BU_LEGES.KLIEN, BU_LEGES.TANGGAL," _
& " BU_AMBIL.TANGGAL_AMBIL FROM BU_1 LEFT" _
& " JOIN BU_LEGES ON BU_1.ID_LEGES=BU_LEGES.ID_LEGES" _
& " INNER JOIN BU_AMBIL ON BU_1.BU_A=BU_AMBIL.BU_A" _
& " WHERE dTahun='" & F_TAHUN & "'" _
& " And ID_AS_URUT=" & ID_AS_URUT.Column(0) _
& " GROUP BY BU_1.nrbu" _
& " ORDER BY ID_LEGES DESC" _
& " limit " & batas)'limit adalah batas record yang akan diambil misal 0,100; 100,100; dst'batas adalah textbox. Defautnya terserah. Misal 0,100 maka yang kita'ambil adalah 100 record pertama. Maka kalau nextnya berarti 100,100;'200,100; dst. Jadi sebelum memanggal data kita tetapkan dulu batasnya.
If Not rss.EOF Then
Set db = CurrentDb
i = 0
Do While Not rss.EOF
Set rsp = New ADODB.Recordset
rsp.Open "SELECT NMBUJK FROM" _
& " BU WHERE NRBU=" & rss.Fields(1), conn
If Not rsp.EOF Then
s_nmbujk = rsp!NMBUJK
Else
s_nmbujk = "Not Avalaible"
End If
rsp.Close
Set rsp = Nothing
db.Execute "INSERT INTO BU_DATA_TEM_9_" & KOM & " Values (" _
& rss.Fields(0) & ",'" _
& rss.Fields(3) & "','" & rss.Fields(4) _
& "','" & Format(rss.Fields(1), "000000") & "','" _
& s_nmbujk & "','" & Nz(rss.Fields(5), 0) & "')"
rss.MoveNext
i = i + 1
Loop
db.Close
Set db = Nothing
End If
rss.Close
Set rss = Nothing
Set rss = conn.Execute("SELECT Count(distinct(nrbu),Id_leges) FROM BU_1 WHERE dTahun='" _
& F_TAHUN & "'" _
& " And Id_AS_URUT=" & ID_AS_URUT.Column(0))
If Not rss.EOF Then
d_a = Nz(rss.Fields(0), 0)
End If
rss.Close
Set rss = Nothing
End If
conn.Close
Set conn = Nothing
JML = ""
d_a = Fix(d_a / 100) + 1
If d_a <> 0 Then
d_d = Split(batas, ",")(0)
d_d = (d_d / 100) + 1
D_STAT.Caption = i _
& " record halaman ke-" & d_d & " dari total halaman " _
& d_a & " buah"
JML = d_d
End If
DoCmd.Hourglass False
BU_PROG_1.SourceObject = "BU_AMBIL_DATA_1"
BU_PROG_1.Form.RecordSource = "SELECT * FROM BU_DATA_TEM_9_" & KOM _
& " ORDER BY NO_KUI DESC, NMBUJK ASC"
BU_PROG_1.Visible = True
BU_PROG_1.Requery
End FunctionIni Fungsi SOLIHANFunction SOLIHAN(nm)
Dim rbs As Recordset
Dim db As DAO.Database
Set rbs = CurrentDb.OpenRecordset("SELECT MSysObjects.Name" _
& " FROM MSysObjects WHERE MSysObjects.Type = 1 And MSysObjects.Flags = 0" _
& " And MSysObjects.Name='" & nm & "'")
If Not rbs.EOF Then
Set db = CurrentDb
db.TableDefs.Delete nm
db.Close
Set db = Nothing
End If
rbs.Close
Set rbs = NothingDoCmd.RunSQL "CREATE TABLE " & "BU_DATA_TEM_9_" & KOM & " (NO_KUI Number," _
& " KLIEN Text(100), TGL_MASUK TEXT(100), NRBU Text, NMBUJK Text(80)," _
& " TGL_AMBIL Text(80));"
End Function
3. Bagaimana script untuk melakukan perubahan data di table MySQL, baik
itu Insert/Delete/Update (yang saya inginkan hal ini dieksekusi disisi
MySQL, namun perintahnya dipanggil dari MS Access)Untuk memperlakukan data yang sudah ada. Prosesnya sama. Koneksi > Sql > tampilkan data di Ms Acces > tutup koneksi. Untuk mengupdate, tinggal dibuat script:conn.execute "update nama_Tabel set nama_field=" & textbox_access _& " where id=" & id_diAcces_yang telahditampilkanSebelumnyaHal sama juga berlaku untuk insert, ataupun delete. Menggunakan sql insert atau delete.
4. Bagaimana script jika koneksi diputus/keluar dari MS Access, maka
data-data/table di Ms Access ikut terhapus, alias MS Access bersih
dari table - table tersebut.Bisa menggunakan pendekatan fungsi Solihan. Menghapus dan membuat tabel.Semoga bisa membantu dan memberi semangat.Hariyanto (Surabaya)
Demikian sekelumit mampetnya jalan yang kutempuh.
Mohon bantuan pencerahan dari rekan - rekan.
Atas bantuannya saya ucapkan terima kasih.
HerDja
--
HerDja
__._,_.___
SPAM IS PROHIBITED
![]()
Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe
__,_._,___
No comments:
Post a Comment