Tampilkan postingan dengan label mysql asp. Tampilkan semua postingan
Tampilkan postingan dengan label mysql asp. Tampilkan semua postingan

Jumat, 24 Agustus 2007

Wew ...Variable uses an Automation type not supported in VBScript

Bikin table seperti ini :


create table mWilayah
(
id int unsigned not null auto_increment,
name varchar(20) default '',
primary key(id)
)
type=InnoDB;


lalu mengambil kode dengan Recordset

Response.Write("Ini ID:" & Rs.Fields("id").value & "<br>")


akan didapat error seperti ini kurang lebih pesannya ....

variable uses an Automation type not supported in VBScript

Fiuh ... bingung sampe harus uninstall MySQL 5.0 ... jadi 4.xxxx, ternyata saat dicari tahu dengan coba sendiri, ketika di bagian field id jadi


....
id int not null auto_increment,
....


semuanya berjalan dengan lancar :)

NB: perhatikan sekarang bukan unsigned lagi).

Jumat, 03 Agustus 2007

Paging with MySQL dan ASP

Fiuh .. hari yang berat untuk pengguna MySQL dengan ASP hari ini. Saya sudah mendapatkan cara untuk terhubung dengan server MySQL, tapi saya hanya bisa menampilkan keseluruhan isi table di database saya dalam satu halaman. Bagaimana dengan permasalahan penampilannya yang bisa dilakukan dalam halaman yang terpisah?

Pertama kali saya kira bisa dilakukan dengan cara yang sama dengan yang dilakukan dengan MS Access, dengan adoConn adalah ADODB.Connection dan adoRS adalah ADODB.Recordset serta property Recordset yaitu PageSize dan AbsolutePage.


Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (adoRS.Eof OR adoRS.Bof) Then
adoRS.PageSize = mPageSize
adoRS.AbsolutePage = mCurrentPage
...

Namun saat dijalankan, data yang saya harapkan tampil malah tidak ada.

Berbagai cara saya lakukan hingga saya menggunakan cara manual dengan melakukan pengambilan jumlah record yang dihasilkan dan memanipulasi query di mySQL Query dengan menambahkan syntax LIMIT pada SQLQuery menggunakan sebuah fungsi yang saya buat sendiri bernama SetQueryTop( ... ) seperti yang terlihat dibawah ini.


Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (moCommonRS.Eof or moCommonRS.Bof) Then
moCommonRS.PageSize = mPageSize
SetRsCommonPaging = moCommonRS.PageCount
qry = SetQueryTop(sQuery, ((mCurrentPage-1)*mPageSize), mPageSize)
moCommonRS.Close()
Call moCommonRS.Open(qry, moConn, 3, 1)
moCommonRS.MoveFirst()
....


Akan tetapi bisa dibayangkan kalau record yang ada berjumlah ratusan record bahkan lebih, bagaimana saya harus melakukannya dalam 2 langkah ? hingga saya ingat salah satu hukum dalam penggunaan recordset adalah pengaturan CursorLocation. Karena saya menggunakan property dari aRecordset.AbsolutePage, maka saya harus menggunakan CursorLocation = adUseClient agar property tersebut dapat digunakan; sehingga cukup menambahkan satu baris kode saja saya sudah bisa mendapatkan hasil yang saya inginkan.


adoConn.CursorLocation = 3 ' 3 = adUseClient
Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (adoRS.Eof OR adoRS.Bof) Then
adoRS.PageSize = mPageSize
adoRS.AbsolutePage = mCurrentPage
...


Kemudian semua program saya berjalan sebagaimana mestinya ... Akhirnya ... :)

Pelajaran hari ini memberikan saya gambaran bahwa secara default, nilai dari CursorLocation adalah adUseServer. Sehingga untuk beberapa keperluan spesifik saya harus melakukan setting lebih lanjut. Tapi yang harus kita ingat bahwa penggunaan CursorLocation adalah READ_ONLY pada Recordset yang terbuka dan READ_WRITE pada sebuah Connection dan pada sebuah Recordset yang tertutup. Sehingga apabila kita melakukan setting CursorLocation terhadap Recordset yang sudah dibuka (sudah dieksekusi query), maka kita tidak akan mendapat hasil apa-apa.

Tapi ssssssttttt bukankah menurut Anda judul tulisan kali ini agak .. hmmm ... parno :D ... (NB:sebelumnya judulnya pagination with MySQL dan ASP)

ASP Ke MySQL

Pertama kali saya menjadikan diri saya sebagai pengguna ASP dengan rasa iri terhadap pengguna PHP yang bisa membuat dengan mudah koneksi ke MySQL. Well, tidak mengapa, karena semuanya hanya tool dan yang paling menentukan adalah si operator :D ... walau seperti sebelumnya saya adalah seorang novice yang rada advanced :) !

Untuk itu saya ingin mencari cara yang bisa dengan mudah digunakan untuk membuat koneksi dari ASP ke MySQL server. Kemudian saya mendapatkan bahwa dengan menggunakan ODBC saya bisa melakukan hal tersebut. Akan tetapi iri berubah menjadi marah lagi ketika tahu bahwa ODBC yang digunakan untuk koneksi ke MySQL versi terbaru belum dalam tahap untuk produksi !. Uh ... Tak apalah, ternyata untuk versi sebelumnya terdapat cara yang lain yang sudah dalam versi produksi. Namun sebelumnya saya harus lebih dahulu mencari tahu bagaimana koneksi tersebut dapat dilakukan. Oleh karena itu melalui pencarian yang berat di beberapa situs menggunakan google, saya mengetahui bahwa dengan perantara myODBC driver versi 3.51 saya bisa mendapatkan hal yang sama dengan para tetangga saya pengguna PHP. Untuk itu saya mendownload drivernya dari situs mySQL di http://www.mysql.com/downloads/api-myodbc-3.51.html, dan kemudian melakukan instalasi di komputer yang saya jadikan server. Kemudian pelajaran berlanjut dengan latihan membuat koneksi ke server menggunakan DSN dengan sebuah 'connection string'.

Ternyata mudah, saya tinggal mengalokasikan sebuah ADODB connection seperti yang dilakukan dengan MS Access (bagi yang sudah pernah).


set adoConn = Server.CreateObject("ADODB.Connection")




Lalu dilanjutkan dengan membuka sebuah koneksi dengan syntax string-nya menjadi:


adoConn.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=mysql; UID=root;PASSWORD=rahasia; OPTION=3"




Untuk mendapatkan hasil sebuah SQL query, saya tinggal membuat object recordsetnya dan mengambil hasil eksekusi query.


Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS = objConn.Execute("SELECT * FROM users")


Lalu melakukan looping untuk mendapatkan hasil masing-masing recordnya.


objRS.movefirst
do while not objRS.EOF
for each f in objRS.Fields
Response.Write(f.name & " = " & f.value & "<BR>")
next ' f
objRS.movenext
loop


Dan seperti yang harus dilakukan di setiap pembuatan object ...


Set objRS = nothing
Set objConn = nothing


Selebihnya adalah cerita lama :D ...

Thanks buat master web dan mas Andri Darmawan dari master web untuk resourcenya.