Analisis penggunaan getrows dan getstring pada objek record set di asp. Teman-teman yang membutuhkan bisa merujuk ke metode GetRows.
Menyalin beberapa catatan dari objek Recordset ke dalam array.
tata bahasa
Copy kode kodenya sebagai berikut:
array = recordset.GetRows( Baris, Mulai, Bidang )
nilai kembalian
Mengembalikan array dua dimensi.
parameter
Baris Opsional, ekspresi panjang yang menentukan jumlah rekaman yang akan diambil. Nilai defaultnya adalah adGetRowsRest (-1).
Mulai Opsional, string atau panjang, menghitung penanda catatan pada awal operasi GetRows. Nilai BookmarkEnum berikut juga dapat digunakan.
Deskripsi konstan
AdBookmarkCurrent dimulai dengan catatan saat ini.
AdBookmarkFirst dimulai dengan catatan pertama.
AdBookmarkLast dimulai dari catatan terakhir.
Bidang bersifat opsional, tipe varian, mewakili nama bidang tunggal, posisi berurutan, susunan nama bidang, atau nomor posisi berurutan. ADO hanya mengembalikan data dari bidang ini.
menjelaskan
Gunakan metode GetRows untuk menyalin rekaman dari Recordset ke dalam array dua dimensi. Subskrip pertama mengidentifikasi bidang, dan subskrip kedua mengidentifikasi nomor rekaman. Variabel array akan secara otomatis menyesuaikan ke ukuran yang benar ketika metode GetRows mengembalikan data.
Jika Anda tidak menentukan nilai untuk parameter Rows, metode GetRows akan secara otomatis mengambil semua record di objek Recordset. Jika lebih banyak data yang diminta daripada yang tersedia, GetRows hanya mengembalikan jumlah data yang tersedia.
Jika objek Recordset mendukung bookmark, Anda dapat menentukan catatan di mana metode GetRows akan mulai mengambil data dengan meneruskan nilai properti Bookmark catatan tersebut.
Untuk membatasi bidang yang dikembalikan oleh panggilan GetRows, Anda dapat meneruskan satu nama/nomor bidang atau larik nama/nomor bidang dalam parameter Bidang.
Setelah GetRows dipanggil, record berikutnya yang belum dibaca menjadi record saat ini, atau jika tidak ada record lagi, properti EOF disetel ke True.
metode GetString
Saat query database untuk menampilkan tabel, kita sering menggunakan Do While()...Loop atau For...Next loop untuk menampilkan tabel, sehingga ketika kita ingin query data dalam jumlah besar pasti akan lebih lambat. Saat ini, kita dapat menggunakan metode GetString() yang disediakan oleh objek recordset (ADO harus diupgrade ke 2.0).
tata bahasa
Copy kode kodenya sebagai berikut:
Str=objRecordset.GetString(format,n,coldel,rowdel,nullexpr)
Deskripsi parameter:
objRecordset: objek kumpulan rekaman yang dibuka;
format: opsional, umumnya mengambil nilai default (nilai default adalah 2)
n: Opsional, jumlah rekaman yang akan ditampilkan, nilai defaultnya adalah menampilkan semua
coldel: opsional, pembatas kolom
rowdel: opsional, pembatas baris
nullexpr: opsional, parameter ini digunakan untuk mengisi kolom kosong!
Dengan metode GetString, kita hanya dapat menggunakan satu Response.Write untuk menampilkan semua output. Ini seperti perulangan DO... LOOP yang dapat menentukan apakah Recordset adalah EOF.
Dengan menggunakan metode ini, Anda dapat secara otomatis mengeluarkan string dalam satu perulangan, tanpa harus melalui perulangan while atau for selama objek RS dibuat dan operasi terkait dilakukan, baik itu mengembalikan satu atau lebih rekaman, atau bahkan kosong catatan, getstring Bekerja seperti biasa.
Untuk menghasilkan tabel HTML dari hasil Recordset, kita hanya perlu memperhatikan 3 dari 5 parameter GetString: coldel (kode HTML yang memisahkan kolom-kolom dari recordset), rowdel (kode HTML yang memisahkan baris-baris dari Recordset). kumpulan catatan), dan nullexpr (kode HTML yang harus dihasilkan ketika catatan saat ini kosong).
Copy kode kodenya sebagai berikut:
<Batas TABEL=1>
<TR><TD>
<% = Respon.Tulis rs.GetString( , , </TD><TD>, </TD></TR><TR>, ) %>
</TABEL>
Hasil HTML yang ditulis seperti ini adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
<Batas TABEL=1>
<TR>
<TD>baris1, nilai bidang1</TD>
<TD>baris1, nilai bidang2</TD>
</TR>
<TR>
<TD>baris2, nilai bidang1</TD>
<TD>baris2, nilai bidang2</TD>
</TR>
</TABEL>
Ada BUG di sini, mari kita lihat cara membuat menu drop-down:
Copy kode kodenya sebagai berikut:
<%
Setel RS = conn.Execute (Pilih Nilai, Teks DARI selectOptionsTable diurutkan OLEH Teks)
optSuffix = </OPTION> & vbNewLine
valPrefix = <Nilai OPSI='
valSuffix = '>
opts = RS.GetString( , , valSuffix, optSuffix & valPrefix, --error-- )
' Baris berikutnya adalah kuncinya!
opts = Kiri( opts, Len(opts)-Len(valPrefix) )
Respon.Tulis <Pilih...> & vbNewLine
Respon.Tulis valPrefix & opts
Respon.Tulis </Pilih>
%>
Jika Anda ingin membuat tabel yang benar dan mengatasi bug, lakukan saja ini:
Copy kode kodenya sebagai berikut:
<%
Setel RS = samb.Jalankan(Pilih * DARI tabel)
tdSuffix = </TD> & vbNewLine & <TD>
trPrefix = <TR> & vbNewLine & <TD>
trSuffix = </TD> & vbNewLine & </TR> & vbNewLine & <TR> & vbNewLine
opts = RS.GetString( , , tdSuffix, trSuffix & trPrefix, --error-- )
' Baris berikutnya adalah kuncinya!
opts = Kiri( opts, Len(opts)-Len(trPrefix) )
Respon.Tulis <TABLE Border=1 CellPadding=5> & vbNewLine
Respon.Tulis trPrefix & opts
Respon.Tulis </TABLE> & vbNewLine
%>
Mari kita perkenalkan pendekatan yang benar-benar berbeda:
Copy kode kodenya sebagai berikut:
<%
SQL = Pilih '<OPTION Value=''',value,'''>',teks,'</OPTION>' DARI tabel diurutkan BERDASARKAN teks
Setel RS = samb.Execute(SQL)
Respon.Tulis <Pilih> & vbNewLine & RS.GetString(,,,vbNewLine) & </Pilih>
%>
Pernahkah Anda menggunakannya? . .
Apakah kamu melihatnya? Hasil dapat dikembalikan langsung dari kueri.
Selangkah lebih maju, Anda dapat melakukan ini:
Copy kode kodenya sebagai berikut:
<%
SQL = Pilih '<OPTION Value=''' & value & '''>' & teks & '</OPTION>' DARI tabel diurutkan BERDASARKAN teks
Setel RS = samb.Execute(SQL)
Respon.Tulis <Pilih> & vbNewLine & RS.GetString(,,,vbNewLine) & </Pilih>
%>
Berikut ini contoh lengkapnya:
Keluaran Skrip:
711855 Rabu 23 23/3/2005 1:33:37
711856 Rabu 23 23/3/2005 1:23:00
711857 Rabu 23 23/3/2005 1:26:34
711858 Rabu 23 23/3/2005 1:33:53
711859 Rabu 23 23/3/2005 1:30:36
Kode ASP lengkapnya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
<%
' Konstanta yang dipilih dari adovbs.inc:
Konstan adClipString = 2
' Deklarasikan variabel kita... selalu praktik yang baik!
Redupkan koneksi ADO cnnGetString '
Redupkan rstGetString ' Kumpulan data ADO
Redupkan strDBPath ' Jalur ke file Access DB (*.mdb) kami
Redupkan strDBData ' String tempat kita membuang semua datanya
Redupkan strDBDataTable ' String tempat kita membuang semua datanya
' baru kali ini kita membuat meja
' MapPath ke jalur fisik file mdb kami.
strDBPath = Server.MapPath(db_scratch.mdb)
'Buat Koneksi menggunakan OLE DB
Setel cnnGetString = Server.CreateObject(ADODB.Connection)
' Baris ini untuk database sampel Access:
'cnnGetString.Open Provider=Microsoft.Jet.OLEDB.4.0;Sumber Data= & strDBPath & ;
' Kami sebenarnya menggunakan SQL Server jadi kami menggunakan baris ini sebagai gantinya.
' Beri komentar pada baris ini dan batalkan komentar pada Access di atas
' mainkan dengan skrip di server Anda sendiri.
cnnGetString.Penyedia Terbuka=SQLOLEDB;Sumber Data=10.2.1.214 _
& Katalog Awal=sampel;Id Pengguna=sampel;Kata Sandi=kata sandi _
& Batas Waktu Sambungan=15;Perpustakaan Jaringan=dbmssocn;
' Jalankan kueri sederhana menggunakan objek koneksi.
' Simpan kumpulan data yang dihasilkan dalam variabel kami.
Setel rstGetString = cnnGetString.Execute(Pilih * DARI awal)
' Sekarang di sinilah hal menjadi menarik... Biasanya kami akan melakukannya
' semacam perulangan hingga kita menemukan rekaman terakhir
' di kumpulan data. Kali ini kita akan mendapatkan semua datanya
' dalam satu gerakan dan membuangnya ke dalam string sehingga kita bisa
' putuskan sambungan dari DB secepat mungkin.
strDBData = pertamaGetString.GetString()
' Karena saya melakukan ini dua kali sebagai ilustrasi... Saya mengubah posisinya
' di awal RS sebelum panggilan kedua.
rstGetString.MoveFirst
' Kali ini saya minta semuanya kembali dalam format tabel HTML:
strDBDataTable = rstGetString.GetString(adClipString, -1, _
&</td><td>, </td></tr> & vbCrLf & <tr><td>, )
' Karena keinginan saya yang tak terpuaskan akan HTML yang rapi, sebenarnya saya
' potong string berikutnya. Anda lihat, hanya GetString yang punya
' parameter untuk apa yang terjadi di antara baris dan bukan yang terpisah
' satu untuk apa yang ditempatkan setelah baris terakhir
' cara tabel HTML dibuat, ini memberi kita tambahan
' <tr><td> setelah catatan terakhir. GetString menempatkan
' seluruh pembatas di akhir karena tidak ada apa-apa
' lain untuk ditempatkan di sana dan dalam banyak situasi ini berfungsi dengan baik.
' Dengan HTML itu agak aneh. Kebanyakan pengembang sederhananya
' tutup barisnya dan lanjutkan, tapi aku tidak sanggup melakukannya'
tinggalkan baris tambahan... terutama karena akan memiliki
' jumlah sel yang berbeda dari yang lainnya.
' Apa yang bisa saya katakan... hal-hal ini cenderung mengganggu saya;)
strDBDataTable = Kiri(strDBDataTable, Len(strDBDataTable) - Len(<tr><td>))
' Beberapa catatan tentang .GetString:
' Metode ini sebenarnya membutuhkan hingga 5 argumen opsional:
' 1. StringFormat - Format untuk mengembalikan
' teks kumpulan data.adClipString adalah satu-satunya
' nilai sah.
' 2. NumRows - Jumlah baris yang akan dikembalikan
' hingga -1 menunjukkan semua baris.
' 3. ColumnDelimiter - Teks yang ditempatkan di antara kolom.
'Default pada karakter tab
' 4. RowDelimiter - Teks yang akan ditempatkan di antara baris
'Default pada pengembalian kereta
' 5. NullExpr - Ekspresi yang digunakan jika nilai NULL
' dikembalikan. Defaultnya adalah string kosong.
' Tutup rekaman dan koneksi kami dan buang benda-benda itu.
' Perhatikan bahwa saya dapat melakukan ini bahkan sebelum kita khawatir
' menampilkan data apa pun!
pertamaGetString.Tutup
Setel rstGetString = Tidak Ada
cnnGetString.Tutup
Setel cnnGetString = Tidak Ada
' Menampilkan tabel datanya sebenarnya tidak perlu saya lakukan
' pemformatan apa pun sejak panggilan GetString melakukan hampir semua hal
' bagi kami dalam hal membangun teks tabel.
Respon.Tulis <batas tabel=1> & vbCrLf
Respon.Tulis <tr><td>
Respon.Tulis strDBDataTable
Respon.Tulis </tabel> & vbCrLf
' FYI: Ini format output yang Anda dapatkan jika Anda tidak bisa GetString
' tanpa parameter apa pun:
Response.Write vbCrLf & <p>Ini versi yang belum diformat:</p> & vbCrLf
Respon.Tulis <pre> & vbCrLf
Respon.Tulis strDBDataResponse.Tulis </pre> & vbCrLf
' Itu saja semuanya!
%>