Fungsi JetSetCurrentIndex2

Berlaku untuk: Windows | Windows Server

Fungsi JetSetCurrentIndex2

Fungsi JetSetCurrentIndex2 mengatur indeks kursor saat ini yang menentukan rekaman mana dalam tabel yang terlihat oleh kursor tersebut dan urutan munculnya dengan memilih kumpulan entri indeks yang akan digunakan untuk mengekspos rekaman tersebut.

    JET_ERR JET_API JetSetCurrentIndex2(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in_opt      JET_PCSTR szIndexName,
      __in          JET_GRBIT grbit
    );

Parameter

sesid

Sesi yang digunakan untuk panggilan ini.

tableid

Kursor yang digunakan untuk panggilan ini.

szIndexName

Nama indeks yang akan dipilih untuk kursor.

Jika parameter ini NULL atau string kosong maka indeks berkluster akan dipilih. Jika indeks utama ditentukan untuk tabel, indeks tersebut akan dipilih karena sama dengan indeks berkluster. Jika tidak ada indeks utama yang ditentukan untuk tabel, maka indeks berurutan akan dipilih. Indeks berurutan tidak memiliki definisi indeks. Lihat JetCreateIndex untuk informasi selengkapnya.

Jika pindexid bukan NULL, maka nama indeks akan diabaikan dan indeks akan dipilih oleh ID indeksnya.

grbit

Sekelompok bit yang berisi opsi yang akan digunakan untuk panggilan ini, yang mencakup nol atau beberapa hal berikut ini.

Nilai

Makna

JET_bitMoveFirst

Opsi ini menunjukkan bahwa kursor harus diposisikan pada entri pertama indeks yang ditentukan. Jika indeks berkluster sedang dipilih (indeks utama atau indeks berurutan) dan indeks saat ini adalah indeks sekunder maka JET_bitMoveFirst diasumsikan. Jika indeks saat ini sedang dipilih, maka opsi ini diabaikan dan tidak ada perubahan pada posisi kursor yang dibuat.

JET_bitNoMove

Opsi ini menunjukkan bahwa kursor harus diposisikan pada entri indeks indeks baru yang sesuai dengan rekaman yang terkait dengan entri indeks pada posisi kursor saat ini pada indeks lama.

Jika definisi untuk indeks baru berisi setidaknya satu kolom kunci multinilai maka entri indeks tujuan ambigu. Dalam hal ini, itagSequence yang ditentukan digunakan untuk memilih multinilai kolom kunci multinilai yang paling signifikan digunakan untuk memosisikan kursor. Hanya perlu meneruskan satu itagSequence bahkan dalam kasus beberapa kolom kunci multinilai karena mesin hanya memperluas semua nilai untuk kolom kunci multinilai yang paling signifikan. Lihat JetCreateIndex untuk detail selengkapnya.

Jika JET_bitMoveFirst ditentukan, maka opsi ini diabaikan.

Jika indeks saat ini sedang dipilih, maka opsi ini diabaikan dan tidak ada perubahan pada posisi kursor yang dibuat. Ketika parameter ini tidak ada, nilainya dianggap JET_bitMoveFirst.

Tampilkan Nilai

Fungsi ini mengembalikan jenis data JET_ERR dengan salah satu kode pengembalian berikut. Untuk informasi selengkapnya tentang kemungkinan kesalahan ESE, lihat Kesalahan Mesin Penyimpanan yang Dapat Diperluas dan Parameter Penanganan Kesalahan.

Menampilkan kode

Deskripsi

JET_errSuccess

Operasi berhasil diselesaikan.

JET_errBadItagSequence

Indeks sekunder sedang dipilih dengan opsi JET_bitNoMove dan tidak ada nilai untuk kolom kunci multinilai pertama dalam definisi baru untuk indeks yang sesuai dengan nomor urutan yang ditentukan.

JET_errClientRequestToStopJetService

Tidak dimungkinkan untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke JetStopService.

JET_errInstanceUnavailable

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi telah mengalami kesalahan fatal yang mengharuskan akses ke semua data dicabut untuk melindungi integritas data tersebut.

Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru.

JET_errInvalidIndexId

Konten ID indeks tidak valid atau telah kedaluwarsa dan perlu disegarkan. Ini dapat terjadi untuk JetSetCurrentIndex2 ketika:

  • pindexid-cbStruct> bukan ukuran yang diharapkan (Windows Server 2003 dan rilis yang lebih baru).

  • Mesin telah dimatikan sejak ID indeks diambil.

  • Semua kursor yang mereferensikan tabel yang berisi indeks yang sesuai dengan ID indeks telah ditutup dan mesin telah mengusir definisi untuk indeks dari cache skema.

  • ID indeks sedang digunakan dengan kursor yang dibuka pada tabel yang salah.

  • Indeks telah dihilangkan atau belum terlihat oleh sesi.

JET_errInvalidName

Salah satu nama objek yang ditentukan tidak valid. Semua nama objek harus sesuai dengan sekumpulan aturan yang sama. Aturan ini adalah sebagai berikut:

  • Nama objek harus terdiri dari karakter ASCII.

  • Panjang nama objek harus minimal satu karakter.

  • Panjang nama objek tidak boleh melebihi JET_cbNameMost (64).

  • Nama objek mungkin tidak dimulai dengan spasi.

  • Nama objek mungkin tidak berisi karakter kontrol ASCII (0x00 melalui 0x1F).

  • Nama objek tidak boleh berisi karakter tanda seru (!), titik (.), kurung kiri ([), atau kurung kanan (]).

  • Setelah divalidasi, hanya bagian string hingga spasi pertama (jika ada) yang akan digunakan untuk nama objek. Ini secara efektif berarti bahwa nama objek mungkin juga tidak berisi spasi.

JET_errInvalidParameter

Salah satu parameter yang disediakan berisi nilai yang tidak terduga atau berisi nilai yang tidak masuk akal ketika dikombinasikan dengan nilai parameter lain. Ini dapat terjadi untuk JetSetCurrentIndex2 ketika pindexid bukan NULL dan pindexid-cbStruct> bukan dari ukuran yang diharapkan (Windows XP dan rilis sebelumnya).

JET_errNoCurrentRecord

Indeks sekunder sedang dipilih dengan opsi JET_bitNoMove dan tidak ada entri indeks dalam indeks baru yang sesuai dengan rekaman yang terkait dengan entri indeks pada posisi kursor saat ini pada indeks lama.

JET_errNotInitialized

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi belum diinisialisasi.

JET_errOutOfCursors

Mesin telah kelelahan kumpulan sumber dayanya yang digunakan untuk membuka kursor. Jumlah maksimum kursor yang dapat dibuka kapan saja dikontrol menggunakan JET_paramMaxCursors. Lihat JetSetSystemParameter untuk informasi selengkapnya. Ini dapat terjadi untuk JetSetCurrentIndex2 ketika indeks sekunder telah dipilih dan mesin tidak dapat membuka kursor internal untuk menggunakan indeks tersebut.

JET_errRestoreInProgress

Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi.

JET_errSessionSharingViolation

Sesi yang sama tidak dapat digunakan untuk lebih dari satu utas secara bersamaan.

Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru.

JET_errTermInProgress

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi sedang dimatikan.

Jika berhasil, indeks kursor saat ini diatur ke indeks yang diminta. Entri indeks sekarang dapat dicari menggunakan JetSeek sesuai dengan definisi indeks indeks yang diminta. Entri indeks juga dapat dijumlahkan menggunakan JetMove dalam urutan yang ditentukan oleh definisi indeks tersebut. Posisi kursor saat ini diatur ke entri indeks pertama pada indeks (JET_bitMoveFirst) atau ke entri indeks tertentu yang terkait dengan posisi kursor saat ini pada indeks lama (JET_bitNoMove). Tidak ada perubahan pada status database yang akan terjadi.

Jika gagal, indeks saat ini dan posisi kursor saat ini berada dalam status tidak terdefinisi. Tidak ada perubahan pada status database yang akan terjadi.

Keterangan

Jika petunjuk ID indeks kedaluarsa, MAKA API hanya gagal. Tidak ada fallback ke nama teks indeks dalam kasus ini seperti yang mungkin diharapkan. Fallback ini harus dilakukan secara manual oleh pemanggil API.

Persyaratan

Persyaratan Nilai

Klien

Memerlukan Windows Vista, Windows XP, atau Windows 2000 Professional.

Server

Memerlukan Windows Server 2008, Windows Server 2003, atau Windows 2000 Server.

Header

Dinyatakan dalam Esent.h.

Pustaka

Gunakan ESENT.lib.

DLL

Membutuhkan ESENT.dll.

Unicode

Diimplementasikan sebagai JetSetCurrentIndex2W (Unicode) dan JetSetCurrentIndex2A (ANSI).

Lihat juga

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXID
JetCreateIndex
JetGetCurrentIndex
JetGetIndexInfo
JetGetTableIndexInfo
JetMove
JetSetSystemParameter
JetSeek
JetStopService