Senin, 25 November 2013

Emailing: Autoit_connect To Access Databases_mdb & Accdb Files.txt

AutoIt: Hubungkan ke akses database: mdb & Accdb file

Pernah bertanya-tanya bagaimana terhubung ke AutoIt ke MS Access database? AutoIt, bagi mereka yang tidak tahu, adalah sebuah program untuk mengotomatisasi keystrokes dan gerakan mouse. Hal ini mengacu pada sebuah blog tentang masalah saya untuk koneksi ke akses dari AutoIt. Ada dua jenis file yang berbeda di MS Access 2007. Access 2003, 2000 dan versi lama akan paling menggunakan mdb. Padahal, Access 2007 dapat menggunakan .accdb ekstensi jenis file. Saya akan menunjukkan beberapa kode dasar yang akan bekerja dengan kedua versi. Untuk contoh ini, saya hanya akan mengambil satu record dan satu lapangan.

Pertama mari kita pertama membuat beberapa variabel yang akan menampung nama file database (Apakah MDB atau .accdb), nama tabel dan query mengeksekusi:

$dbname = "C:\Users\vk\Documents\db\Marketing\articleSubmissionsTutorialRef.mdb"
$tblname = "artikel"
$query = "Pilih * dari" & $tblname & "WHERE articleID = 4"

& Hanyalah sebuah gabungan dari string.

Mari kita menetapkan variabel tersebut untuk bidang yang kita ingin mengambil dari database.

Lokal $title

Cukup sederhana sejauh ini, bukan?

Kemudian membuat sambungan ke ADODB:

$adoCon = ObjCreate ("ADODB.Sambungan")

Kemudian mengatur Provider itu. Ada sebuah penyedia yang berbeda untuk setiap ekstensi file. File MDB akan memiliki penyedia sendiri dan .accdb file akan memiliki lain.

Di sini adalah penyedia untuk file MDB:

$adoCon.Open ("driver = {Microsoft Access Driver (*.mdb)}; DBQ = "& $dbname)

Berikut adalah penyedia untuk .accdb file:

$adoCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0; Sumber data = "& $dbname)

Sekarang mari kita ciptakan object Recordset, mengatur beberapa opsi yang diperlukan dan kemudian jalankan query:

$adoRs = ObjCreate ("ADODB.RecordSet")
$adoRs.CursorType = 1
$adoRs.LockType = 3
$adoRs.Open ($query, $adoCon)

Beberapa catatan pada sifat CursorType dan LockType. Aku perlu untuk mengatur ini untuk mengambil nilai bidang tertentu 's.

Pengaturan CursorType ke nilai '1' berarti 'adOpenKeyset'. CursorType didefinisikan pada MSDN sebagai: "set atau mengembalikan nilai CursorTypeEnum. Nilai default adalah 'adOpenForwardOnly'. Menggunakan properti CursorType untuk menentukan jenis kursor yang harus digunakan ketika membuka Recordset objek." AdOpenKeyset didefinisikan di situs MSDN Microsoft sebagai: "menggunakan kursor keyset. Seperti kursor dinamis, kecuali bahwa Anda tidak dapat melihat catatan bahwa pengguna tambahan lainnya, meskipun catatan bahwa menghapus pengguna lain tidak dapat diakses dari Recordset Anda. Perubahan data oleh pengguna lain masih terlihat".

Anehnya, ketika saya mencoba untuk mengatur CursorType ke nilai '2' yang berarti 'adOpenDynamic' AutoIt tidak bisa mengambil nilai dari lapangan tersebut. Itu hanya kosong tapi tidak ada kesalahan terjadi. 'adOpenDynamic' didefinisikan sebagai: "menggunakan kursor dinamis. Penambahan, perubahan, dan penghapusan oleh pengguna lain yang terlihat, dan segala jenis gerakan melalui Recordset diperbolehkan, kecuali untuk bookmark, jika provider tidak mendukung mereka".

LockType didefinisikan sebagai "menunjukkan jenis kunci ditempatkan pada catatan selama pengeditan. Mengatur atau mengembalikan nilai LockTypeEnum. Nilai default adalah adLockReadOnly." Dengan itu set nilai di '3' yang menunjukkan 'adLockOptimistic'. 'adLockOptimistic' adalah "menunjukkan penguncian optimis, catatan oleh catatan. Penyedia menggunakan penguncian optimis, penguncian catatan hanya bila Anda memanggil metode Update"baik sehingga kami berhenti di nilai tersebut.

Lalu kami hanya tempat hasilnya ke variabel $title kita menyatakan sebelumnya. Anda dapat menggunakan salah satu dari dua baris berikut. Yang pertama adalah mengambil nilai dengan nama bidang dan yang kedua adalah mengambil dengan urutan numerik dari lapangan. Pada dasarnya, ini adalah nomor kolom itu. Kolom nomor dimulai pada '0' (yaitu nol) dan tidak '1' (yakni satu). Jadi jika Anda ingin mengambil nilai kolom ketiga maka Anda akan menggunakan nilai '2'.:

$title = $adoRs.Fields("title").value

$title = .value $adoRs.Fields (2)

Mengakhiri sambungan kecuali Anda memiliki alasan tertentu untuk meninggalkan koneksi Anda terbuka:

$adoCon.Close

Kemudian uji hasilnya dengan MsgBox ():

MsgBox(0,"testing",$title)

Jadi di sini adalah seluruh kode:

Lokal $title
$adoCon = ObjCreate ("ADODB.Sambungan")
; $adoCon.Open ("driver = {Microsoft Access Driver (*.mdb)}; DBQ = "& $dbname);Gunakan baris ini jika menggunakan MS Access 2003 dan yang lebih rendah
$adoCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0; Sumber data = "& $dbname);Gunakan baris ini jika menggunakan MS Access 2007 dan menggunakan .accdb ekstensi file.
$adoRs = ObjCreate ("ADODB.RecordSet")
$adoRs.CursorType = 1
$adoRs.LockType = 3
$adoRs.Open ($query, $adoCon)
$title = $adoRs.Fields("title").value;Mengambil nilai dengan nama bidang
; $title = .value $adoRs.Fields (2);Nilai ambil dengan kolom nomor
$adoCon.Close
MsgBox(0,"testing",$title)

Dalam artikel ini, kita menunjukkan bagaimana terhubung ke Access 2007 atau 2003 database menggunakan AutoIt. Artikel ini membahas cara untuk mengambil satu record atau baris dan hanya satu lapangan. Dalam artikel yang akan datang, kami akan menjelaskan cara untuk mengambil beberapa catatan dalam array.
Your message is ready to be sent with the following file or link
attachments:
Autoit_connect To Access Databases_mdb & Accdb Files.txt

Note: To protect against computer viruses, e-mail programs may prevent
sending or receiving certain types of file attachments. Check your
e-mail security settings to determine how attachments are handled.

Tidak ada komentar:

Posting Komentar