Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Bagaimana memanggil fungsi ditetapkan pengguna dari SQL Pilih pernyataan di FoxPro

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:124402
RINGKASAN
Artikel ini menunjukkan dengan contoh bagaimana untuk menambahkan fungsionalitas ke terstrukturBahasa kueri SQL Pilih perintah dengan memanggil fungsi ditetapkan pengguna(UDF) dari SQL Pilih pernyataan.
INFORMASI LEBIH LANJUT
Asumsikan bahwa Anda ingin membuat permintaan yang akan menghasilkan tiga atau kurangCatatan untuk setiap negara di meja pelanggan.

Menggunakan tabel pelanggan di direktori tutorial kode dari"Kode contoh" bagian dari artikel ini, Anda dapat menentukan berapa banyak catatandari setiap negara adalah untuk dimasukkan dalam hasil pencarian. Variabelmax_match diatur ke 3, tapi tidak semua negara memiliki 3 atau lebih catatan,permintaan yang dihasilkan tidak akan memiliki 3 * 49 catatan. Contoh ini akan menghasilkan 116Catatan.

Ketika max_match set ke 2, hasilnya berisi catatan 86. Apabila diatur ke 1,hasil berisi 49 catatan, yang merupakan jumlah yang sama catatan'Kelompok oleh negara' klausul kembali.

Contoh langkah demi langkah

  1. Membuat file yang berisi kode yang tercantum dalam "FoxPro 2.x sampel Kode"atau Visual FoxPro sampel kode bagian dari artikel ini, dan menyimpannya sebagai utama.PRG.
  2. Dari FoxPro baris perintah, ketik "DO utama" tanpa kutipan menandai. Kemudian tekan ENTER untuk melihat hasil.

FoxPro 2.x contoh kode

CLEARCLEAR ALLSET DEFAULT TO SYS(2004)+"tutorial"match=0max_match=3prev_state="None"first_call=.T.SELECT state FROM customer ORDER BY state INTO CURSOR tmp1SELECT state FROM tmp1 WHERE mycount()FUNCTION mycountDO CASECASE first_call                                   && Condition  1  first_call = .F.CASE (state = prev_state) AND (match < max_match) && Condition  2  match = match + 1CASE state != prev_state                          && Condition  3  prev_state = state  match = 1CASE match >= max_match                           && Condition  4  RETURN .F.OTHERWISE  WAIT WINDOW "Untested condition occurred, result may not be correct!"ENDCASERETURN .T.				

Visual Foxpro contoh kode

   CLEAR   CLEAR ALL   SET DEFAULT TO SYS(2004)+"Samples\Data"   match=0   max_match=3   prev_to_country="None"   first_call=.T.   SELECT to_country FROM orders ORDER BY to_country INTO CURSOR tmp1   SELECT to_country FROM tmp1 WHERE mycount()   FUNCTION mycount   DO CASE   CASE first_call                                         && Condition  1     first_call = .F.   CASE (to_country=prev_to_country) AND (match<max_match) && Condition  2     match = match + 1   CASE to_country != prev_to_country                      && Condition  3     prev_to_country = to_country     match = 1   CASE match >= max_match                                 && Condition  4     RETURN .F.   OTHERWISE     WAIT WINDOW "Untested condition occurred, result may not be correct!"   ENDCASE   RETURN .T.				

Apa kode

Beberapa baris pertama dalam program utama membersihkan lingkungan danmenginisialisasi beberapa variabel global untuk digunakan dalam mycount() UDF. Theperintah SQL Pilih pertama menciptakan KURSOR diurutkan (tmp1) untuk kedua pilih-SQLperintah untuk menggunakan. Mycount() UDF disebut sekali untuk masing-masing catatan ditmp1 KURSOR. Setiap kali UDF kembali benar, rekor saat ini di tmp1disertakan dalam hasil pencarian.

Ada empat kondisi dalam UDF:
  1. Kondisi pertama hanya digunakan sekali. Hal ini memungkinkan catatan pertama di tmp1 KURSOR untuk diuji. Tanpa kondisi ini, catatan pertama dalam tmp1 akan diabaikan.
  2. Kondisi kedua memungkinkan kedua catatan dan catatan ketiga untuk setiap negara atau To_country untuk dimasukkan.
  3. Ketiga kondisi memungkinkan catatan pertama untuk setiap negara baru atau To_country untuk menjadi termasuk.

    Catatan Untuk kondisi ini untuk bekerja dengan benar, tabel harus diurutkan.
  4. Kondisi keempat menyebabkan rekor saat ini di tmp1 akan dilewati. Harap dicatat bahwa kondisi ini hanya diperiksa ketika semua sebelumnya kondisi mengevaluasi ke false. Else ditambahkan untuk pengecekan error.
VFoxWin FoxWin 2,50

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 124402 - Tinjauan Terakhir: 09/14/2011 10:46:00 - Revisi: 2.0

Microsoft Visual FoxPro 9.0 Professional Edition, Microsoft Visual FoxPro 8.0 Professional Edition, Microsoft Visual FoxPro 7.0 Professional Edition, Microsoft Visual FoxPro 3.0 Standard Edition, Microsoft FoxPro 2.5a, Microsoft FoxPro 2.6 Standard Edition

  • kbcode kbmt KB124402 KbMtid
Tanggapan