Deskripsi DLookup() penggunaan, contoh, dan pemecahan masalah

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 285866 - Melihat produk di mana artikel ini berlaku.
Pemula: Memerlukan pengetahuan tentang antarmuka pengguna pada pengguna tunggal komputer.

Artikel ini berlaku untuk Microsoft Access database (.mdb) dan untuk Microsoft Access proyek (.adp).

Untuk Microsoft Access Versi 2000 artikel ini, lihat 208786.
Microsoft Access 97 atau 95 versi ini Pasal, lihat 136122.
Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menunjukkan kepada Anda bagaimana menggunakan DLookup() fungsi, dan termasuk contoh dan tips.

Berikut topik yang dibahas dalam artikel ini:
  • The DLookup() fungsi sintaks dan penggunaan.
  • Berikut DLookup() contoh-contoh fungsi:
    • Fungsi dengan ada kriteria
    • Menentukan kriteria numerik
    • Menentukan kriteria numerik yang berasal dari lapangan bentuk
    • Menentukan kriteria tekstual
    • Menentukan kriteria tekstual yang berasal dari lapangan bentuk
    • Menentukan tanggal kriteria
    • Menentukan beberapa bidang dalam kriteria
  • Tips untuk pemecahan masalah dan debugging DLookup() ekspresi.
Perhatikan bahwa banyak kesulitan dalam menggunakan DLookup() fungsi terjadi ketika Anda tidak mengatur dan pasokan kriteria ekspresi dengan benar. Kriteria ekspresi umum untuk banyak agregat lain (total) fungsi, seperti DSum(), DFirst(), DLast(), DMin(), DMax(), dan DCount(). Oleh karena itu, bahan berikut berguna dalam membantu Anda memahami fungsi agregat domain, serta DLookup() fungsi.

INFORMASI LEBIH LANJUT

DLookup() fungsi sintaks dan penggunaan

Anda dapat menggunakan DLookup() fungsi dalam ekspresi atau Visual Basic for Applications fungsi kembali nilai bidang pada domain atau set tertentu Catatan.

Sintaks DLookup() fungsi adalah sebagai berikut:
   DLookup(Expression, Domain [, Criteria])
				
Fungsi memiliki tiga argumen: ekspresi, domain, dan kriteria (Perhatikan bahwa kriteria argumen ini opsional).

Anda menggunakan Ekspresi argumen untuk mengidentifikasi bidang yang berisi data dalam domain yang Anda ingin kembali atau untuk melakukan perhitungan yang menggunakan data yang lapangan.

The Domain argumen adalah nama recordset yang mengidentifikasi domain. Ini bisa menjadi sebuah meja atau permintaan.

The Kriteria argumen adalah ekspresi string opsional yang dapat Anda gunakan untuk membatasi rentang data yang DLookup() fungsi ini dilakukan. Perhatikan bahwa kriteria argumen identik dengan klausul WHERE dalam ekspresi SQL (kecuali bahwa Anda tidak menggunakan kata kunci di mana).

The DLookup() fungsi mengembalikan satu nilai dari satu bidang, bahkan jika lebih dari satu catatan memenuhi kriteria. Jika tidak ada catatan memenuhi kriteria atau jika domain ini berisi tidak ada catatan, DLookup() kembali Null.

Contoh-contoh fungsi DLookup()

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan DLookup() untuk menemukan atau kembali nilai-nilai dari tabel atau permintaan. Contoh-contoh ini merujuk kepada database contoh Northwind.mdb, dan Anda dapat memasukkan contoh di The ControlSource properti dari kotak teks pada formulir atau laporan.

CATATAN: Dalam ekspresi contoh berikut, garis bawah (_) pada akhir baris digunakan sebagai karakter baris-kelanjutan. Menghapus garis bawah dari akhir baris ketika menciptakan kembali kalimat tersebut.

Fungsi dengan ada kriteria:

Contoh ini menunjukkan bagaimana untuk menggunakan DLookup() fungsi dalam bentuk yang paling sederhana, tanpa menentukan kriteria apapun. Contoh ini mengembalikan nilai yang terkandung dalam bidang nama belakang yang pertama merekam dalam tabel karyawan:
   =DLookup("[LastName]", "Employees")
				

Menentukan angka kriteria:

Untuk mencari nama karyawan dengan nomor ID 7, menentukan kriteria untuk membatasi berbagai catatan yang digunakan:
   =DLookup("[LastName]", "Employees", "[EmployeeID] = 7")
				

Menentukan kriteria numerik yang berasal dari lapangan pada formulir:

Jika Anda tidak ingin menentukan nilai tertentu dalam ekspresi (seperti pada contoh sebelumnya), menggunakan parameter dalam kriteria sebaliknya. Contoh berikut menunjukkan cara untuk menentukan kriteria dari bidang lain pada bentuk yang sekarang. Anda dapat mencoba ini pada formulir pesanan dalam database contoh Northwind.mdb.
   =DLookup("[LastName]", "Employees", _
      "[EmployeeID] = Form![EmployeeID]")

   =DLookup("[LastName]", "Employees", _
      "[EmployeeID] = " & [EmployeeID])

   =DLookup("[LastName]", "Employees", _
      "[EmployeeID] = " & Forms![Orders]![EmployeeID])
				
Tiga contoh memberikan hasil yang sama.

Dalam contoh pertama, bentuk![EmployeeID] muncul di dalam tanda kutip kriteria. "Bentuk" memberitahu Microsoft Access bahwa referensi lapangan, "EmployeeID," datang dari bentuk yang sekarang. Jika Anda mengabaikan itu, Microsoft Access membandingkan EmployeeID untuk diri di karyawan meja dan mengembalikan nama terakhir dari catatan pertama dalam tabel karyawan (sama menghasilkan seolah-olah Anda tidak menentukan setiap kriteria). Hal ini karena catatan pertama dalam tabel karyawan memiliki 1 di bidang EmployeeID, sehingga argumen:
   "[EmployeeID] = [EmployeeID]"
				
menghitung untuk:
   "1 = 1"
				
dan karena itu akan menjadi catatan pertama yang cocok kriteria.

Kriteria untuk dua contoh lain yang dibuat oleh Concatenating dua ekspresi string dengan ampersand (&). Dalam ketiga contoh, kriteria berakhir dengan bentuk lapangan referensi.

Ketika kriteria yang dievaluasi, potongan-potongan individu kriteria dievaluasi pertama dan ditambahkan atau sambung menyambung, dan kemudian seluruh nilai dihitung.

Jika nilai di bidang EmployeeID pada formulir pesanan adalah 7, asli kriteria ekspresi
   "[EmployeeID] = " & [EmployeeID]
				
akan menghitung untuk
   "[EmployeeID] = " & 7
				
yang, ketika concatenated, menghitung untuk:
   "[EmployeeID] = 7"
				
Jika Anda tidak menentukan bentuk penuh referensi (seperti dalam kedua contoh di atas), Microsoft Access menganggap Anda mengacu pada saat ini bentuk.

Contoh berikut adalah turunan dari contoh ketiga di atas:
   =DLookup("[LastName]", "Employees", _
      "[EmployeeID] = Forms![Orders]![EmployeeID]")
				
Dalam contoh ini, bentuk penuh referensi tertutup di dalam kriteria tanda kutip. Dalam kasus ini, Microsoft Access dengan benar mendongak nilai ketika bentuk pertama terbuka, tetapi hanya sampai bidang EmployeeID diubah oleh modifikasi untuk catatan, atau penambahan catatan. Microsoft Akses secara otomatis tidak recompute baru karyawan nama nilai terakhir setelah perubahan seperti itu. Anda dapat secara manual recompute ekspresi dengan menempatkan titik penyisipan di kontrol dan menekan F9.

Jika Anda ingin lapangan untuk memperbarui secara otomatis ketika kriteria perubahan, membuat kriteria variabel dengan menggunakan metode concatenating bagian ekspresi seperti yang dijelaskan sebelumnya. Perhatikan bahwa ketika Anda pindah ke catatan baru, DLookup() kotak teks yang update secara otomatis akan memiliki # Kesalahan di dalamnya sampai Anda memasukkan sesuatu dalam teks EmployeeID kotak.

Menentukan kriteria tekstual:

Semua contoh sebelumnya menunjukkan bagaimana untuk menggunakan DLookup() fungsi dengan kriteria numerik. Jika kriteria bidang teks, menyertakan teks dalam tanda kutip tunggal, seperti dalam contoh berikut:
   =DLookup("[Title]", "Employees", "[LastName] = 'Callahan'")
				
Catatan bahwa Anda dapat menggunakan tanda kutip ganda bukan satu kutip menandai, meskipun tanda kutip tunggal lebih disukai. Menggunakan dua ganda tanda kutip untuk menggantikan satu tanda kutip tunggal. Contoh berikut menggunakan tanda kutip ganda dan setara dengan contoh di atas:
   =DLookup("[Title]", "Employees", "[LastName] = ""Callahan""")
				

Menentukan kriteria tekstual yang berasal dari lapangan pada formulir:

Contoh berikut menunjukkan cara untuk menemukan nama kontak untuk pelanggan pada formulir pesanan. Bidang CustomerID adalah bidang kunci tekstual untuk kriteria, sehingga DLookup() pernyataan adalah:
   =DLookup("[ContactName]", "[Customers]", _
      "[CustomerID]='" & [CustomerID] & "'")
				
-atau-
   =DLookup("[ContactName]", "[Customers]", _
      "[CustomerID]='" & Forms![Orders]![CustomerID] & "'")
				
Dalam contoh kedua, kriteria dibuat oleh concatenating tiga ekspresi string. Yang pertama adalah "[CustomerID] = '", yang kedua adalah nilai yang terkandung dalam bidang CustomerID yang sebenarnya, dan yang ketiga adalah penutupan tanda kutip tunggal diapit tanda kutip ganda.

Saat ini kriteria dievaluasi, pertama potongan individu dievaluasi dan mereka hasil ditambahkan atau sambung menyambung. Seluruh nilai kemudian dihitung.

Jika nilai saat ini dipilih dalam kotak kombo CustomerID pada formulir pesanan Alfreds Futterkiste, kolom terikat untuk combo box kembali ALFKI sebagai CustomerID. Ekspresi kriteria asli
   "[CustomerID] = '" & [CustomerID] & "'"
				
mengevaluasi sebagai
   "[CustomerID] = '" & "ALFKI" & "'"
				
yang, ketika concatenated, mengevaluasi sebagai
   "[CustomerID] = 'ALFKI'"
				

Menentukan tanggal kriteria:

Jika bidang kriteria nilai-nilai tanggal atau waktu, melampirkan tanggal atau waktu nilai dalam tanda-tanda nomor (#). Untuk menemukan karyawan yang ulang tahun pada ditetapkan tanggal, menggunakan kriteria contoh berikut:
   =DLookup("[LastName]", "Employees", "[BirthDate] = #12-08-68#")
				

Menentukan beberapa bidang dalam kriteria:

Ekspresi kriteria dapat apapun berlaku SQL di mana klausa (tanpa kata kunci di mana). Ini berarti bahwa lebih dari satu bidang dapat digunakan untuk menentukan kriteria untuk DLookup() fungsi.

Untuk menemukan nomorPesanan untuk salah satu perintah dijual oleh karyawan "Andrew Fuller" dengan EmployeeID 2 (angka) untuk pelanggan "Simons bistro" dengan CustomerID SIMOB (teks), gunakan contoh berikut DLookup() pernyataan:
   =DLookup("[OrderID]", "Orders", _
      "[CustomerID] = 'SIMOB' And [EmployeeID] = 2")
				
Pernyataan ini kembali nomorPesanan 10556, yang merupakan nomorPesanan pertama yang cocok dengan kriteria. NomorPesanan 10669 juga sesuai kriteria.

Menggunakan contoh di atas keras-kode, atau khusus, CustomerID dan EmployeeID nilai-nilai. Untuk menggunakan variabel bukan nilai-nilai tertentu untuk kriteria, Anda dapat menggunakan Visual Basic for Applications untuk menggabungkan beberapa ekspresi string. Visual Basic contoh berikut menunjukkan metode ini:
Sub subTest
    'Declare the variables.
    Dim CustID As String
    Dim EmpID As Long
    Dim Result

    'Assign values to the variables to be used in the criteria.
    CustID = "SIMOB"
    EmpID = 2
    Result = DLookup("[OrderID]", "Orders", _
             "[CustomerID] = '" & CustID & "' And [EmployeeID] = " & EmpID)

   MsgBox Result
End Sub
				
Jika DLookup() fungsi tidak berhasil, variabel Hasil berisi Null.

Perhatikan bahwa kriteria terdiri dari empat potong yang dievaluasi secara individual. Hasil akan ditambahkan dan dievaluasi secara keseluruhan. Ekspresi kriteria asli:
   "[CustomerID] = '" & CustID & "' And [EmployeeID] = " & EmpID
				
mengevaluasi sebagai
   "[CustomerID] = '" & "SIMOB" & "' And [EmployeeID] = " & 2
				
yang, ketika concatenated, mengevaluasi sebagai
   "[CustomerID] = 'SIMOB' And [EmployeeID] = 2"
				
Anda dapat menggunakan contoh berikutnya untuk menemukan karyawan yang ulang tahun jatuh pada hari ini:
   =DLookup("[LastName]", "Employees", _
      "Month([BirthDate]) = " & Month(Date) & " And Day([BirthDate]) _
      = " & Day(Date))
				
Jika hari ini adalah 2/12/2001, ekspresi kriteria asli
   "Month([BirthDate]) = " & Month(Date) & " And Day([BirthDate]) = " _
      & Day(Date)
				
mengevaluasi sebagai
   "Month([BirthDate]) = " & 12 & " And Day([BirthDate]) = " & 2
				
yang, ketika concatenated, mengevaluasi sebagai
   "Month([BirthDate]) = 12 And Day([BirthDate]) = 2"
				

Tips untuk pemecahan masalah dan Debugging DLookup() Expressions

Untuk memecahkan ekspresi, memecah ekspresi ke komponen yang lebih kecil dan menguji komponen individual dalam para segera Jendela untuk memastikan bahwa mereka bekerja dengan benar. Jika komponen kecil bekerja dengan benar, Anda dapat memasukkannya kembali bersama-sama, sepotong demi sepotong, sampai final ekspresi bekerja dengan benar.

Jendela segera dapat digunakan untuk membantu debug Visual Basic modul. Menggunakan jendela segera untuk menguji dan mengevaluasi ekspresi secara independen dari bentuk atau makro di mana ekspresi digunakan. Anda dapat mengatur ekspresi di jendela segera, menjalankan mereka dan melihat hasil segera.

Contoh berikut menunjukkan strategi untuk rusak DLookup() ekspresi menjadi komponen kecil yang Anda dapat menguji dalam Jendela segera. Asumsikan bahwa Anda mengalami kesulitan dengan berikut pernyataan:
   =DLookup("[OrderID]", "Orders", _
      "[CustomerID] = '" & Forms![MyForm]![CustomerID] _
      & "' And [EmployeeID] = " & Forms![MyForm]![EmployeeID])
				
Perhatikan bahwa kriteria termasuk beberapa bidang dalam pencarian kriteria, salah satunya angka, dan salah satunya adalah teks.

Pada memecahkan ekspresi ini, coba berikut:
  1. Tekan CTRL + G untuk membuka jendela segera.
  2. Menguji fungsi dengan ada kriteria. Untuk melakukannya, ketik berikut di jendela segera, dan kemudian tekan ENTER:
    ? DLookup("[OrderID]", "Orders")
    					
  3. Pastikan referensi bentuk benar. Untuk melakukannya, membuka formulir pesanan dalam database contoh Northwind.mdb, dan masukkan masing-masing baris berikut di jendela segera. Tekan ENTER setelah setiap baris.
    ? Forms![MyForm]![CustomerID]
    					
    -dan-
    ? Forms![MyForm]![EmployeeID]
    					
  4. Mencoba untuk mendapatkan bidang kriteria untuk bekerja secara independen oleh keras pengkodean nilai ke dalam ekspresi. Untuk melakukannya, ketik masing-masing berikut baris dalam jendela segera, dan tekan ENTER setelah masing-masing:
    ? DLookup("[OrderID]", "Orders", "[CustomerID] = 'SIMOB'")
    					
    -dan-
    ? DLookup("[OrderID]", "Orders", "[EmployeeID] = 2)
    					
  5. Mencoba untuk mendapatkan bidang kriteria untuk bekerja secara mandiri dengan parameter dalam permintaan. Untuk melakukannya, ketik masing-masing berikut segera Jendela, dan tekan ENTER setelah masing-masing:
    ? DLookup("[OrderID]", "Orders", _
       "[CustomerID] = '" & Forms![MyForm]![CustomerID] & "'")
    					
    -dan-
    ? DLookup("[OrderID]", "Orders", _
       "[EmployeeID] = " & Forms![MyForm]![EmployeeID])
    					
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properti

ID Artikel: 285866 - Kajian Terakhir: 23 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Kata kunci: 
kbprogramming kbfunctions kbdta kbhowto kbmt KB285866 KbMtid
Penerjemahan Mesin
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:285866

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com