أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

PRB: الحقول مقارنة خطأ 3001 كـ معايير تصفية السجلات

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية216873
إخلاء مسؤولية من محتوى قديم في قاعدة المعارف
عن تقديم الدعم التقني لهاو لذلك تظهر هذه المقالة كما هي و لن يتم تحديثها Microsoft تمت كتابة هذه المقالة بخصوص منتجات توقفت
الأعراض
مقارنة حقلين في سلسلة المعايير من الخاصية تصفية ADO (على سبيل المثال: السلسلة معايير يتكون من العبارات في النموذج: "FieldName FieldName عامل التشغيل") بإنشاء الخطأ التالي:
خطأ وقت التشغيل '3001':
يستخدم التطبيق وسائط من النوع غير صحيح أو خارج النطاق المقبول أو متعارضة مع بعضها البعض.
السبب
لا يمكن إنجاز هذه الوظيفة مع الإصدارات الحالية من ADO. يتم تعريف بناء جملة معايير الخاصية تصفية ADO كما يلي:
"FieldName عامل التشغيل 'Literal_Value'"
قد يكون نوع بيانات 'Literal_Value' سلسلة أو رقم أو تاريخ. لا يمكنك استخدام التعبير السابق للمقارنة بين الحقلين. محاولة القيام بذلك بإصدار خطأ 3001.
الحل
الحل واحد أن يكون لديك عدة تعبيرات ربط بواسطة العوامل المنطقية كـ معايير عامل التصفية. يمكنك فقط استخدام هذا إذا تعرف قيم الحقول المقارن إلى المطور. بهذه الطريقة يمكن أن تأتي المطور مع صيغة سلسلة المعايير التي تفي النتائج المطلوبة. على سبيل المثال:
rs.Filter = "Field1 Operator1 'Value1' AND Field2 Operator2 'Value2'"				

إذا لم المطور تعرف القيم Field1 و Field2, المطور على استخدام إجراء تصفية مخصص (ضمن تطبيق العميل) أو إجراء مخزن (على الجانب الملقم) لإنجاز الوظائف بشكل حيوي. يمكنك استخدام عنصر تحكم تدفق عبارات ضمن إجراء تصفية مخصص (أو الإجراء المخزن) لتنفيذ مقارنات الحقول الضرورية وإنشاء النتائج المتوقعة.

توفر هذه المقالة العرض توضيحي لروتين في قسم "معلومات إضافية" في هذه المقالة لـ.

تحذير: الحل المتوفر في المقطع "معلومات إضافية" يتم فقط إعطاء لغرض التوضيح دون أي ضمان التعبير عن أو ضمنية ، بما في ذلك لا الحصر ، ضمانات القابلية للتسويق و/أو الملاءمة لغرض معين.
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في بداية هذه المقالة.
معلومات أخرى
تنص وثائق تعليمات ADO التالية تعبير معايير أسلوب تصفية--ضمن ملاحظات:

سلسلة المعايير يتكون من عبارات في نموذج FieldName - عامل - القيمة (على سبيل المثال، "اسم العائلة = 'Smith'"). يمكنك إنشاء عبارات مركبة بواسطة وصل عبارات الفردية مع AND (على سبيل المثال، "اسم العائلة = 'Smith' AND الاسم الأول = 'John'") أو OR (على سبيل المثال، "اسم العائلة = 'Smith' أو اسم العائلة = 'Jones'").

ذلك أيضاً توضح الإرشادات التالية الخاصة "بقيمة المعايير":

القيمة هي القيمة التي سيتم مقارنة قيم الحقل (على سبيل المثال، 'عامر،' # 8 / # 24/95 12.345 أو $ 50.00). استخدام علامات الاقتباس المفردة في السلاسل أو علامة الجنيه (#) مع التواريخ. أرقام, يمكنك استخدام النقاط العشرية و الدولار العلمي. إذا كان عامل التشغيل مثل قيمة يمكن استخدام أحرف البدل. فقط العلامة النجمية (*) النسبة المئوية (%) تسجيل مسموح بطاقات بدل و يجب أن تكون الحرف الأخير في السلسلة. لا يمكن أن تكون قيمة خالية.
خطوات إعادة إنشاء السلوك
===========================

  1. بدء جديد للمشروع Microsoft Visual Basic. يتم إنشاء Form1 بشكل افتراضي.
  2. تعيين مرجع Project إلى مكتبة 2.x كائنات بيانات ActiveX Microsoft.
  3. إدراج زر أمر في النموذج. يتم إنشاء Command1 بشكل افتراضي.
  4. أدخل التعليمة البرمجية التالية في المقطع "تعريف عام" Form1:
   Option Explicit   Dim cn As New ADODB.Connection   Dim rs As New ADODB.Recordset   Private Sub Command1_Click()       cn.Open "provider=SQLOLEDB;Data Source=<your data source>;User ID=<uid>;" _     "password=;Initial Catalog=pubs;"       On Error Resume Next       cn.Execute "drop table tblFilterTest"       On Error GoTo errh       ' Create the test table       cn.Execute "create table tblFilterTest(ID int primary key, Field1      varchar(20), Field2 varchar(20))"       ' Open ADO recordset       rs.Open "select * from tblFilterTest", cn, adOpenKeyset,     adLockOptimistic       ' Add first record       rs.AddNew       rs("ID") = 1       rs("Field1") = "A"       rs("Field2") = "B"       rs.Update       rs.Requery          ' Add 2nd record       rs.AddNew       rs("ID") = 2       rs("Field1") = "D"       rs("Field2") = "C"       rs.Update       rs.Requery           ' Print original recordset       Debug.Print "Original Recordset:"       Debug.Print "====================="       While Not rs.EOF            Debug.Print rs("Field1") & vbTab & rs("Field2")              rs.MoveNext       Wend       rs.MoveFirst       ' You get error 3001 on the following line       rs.Filter = " Field1 > Field2 "       ' To demonstrate the workaround, comment the preceding line and       ' uncomment the following line:       ' Call Filter       Exit Sub   errh:       Debug.Print "Error Number:", Err.Number       Debug.Print "Error Source:", Err.Source       Debug.Print "Error Description:", Err.Description   End Sub   Private Sub Filter()       Debug.Print "Filtered Recordset: "       Debug.Print "====================="           While Not rs.EOF         If rs("Field1") > rs("Field2") Then             Debug.Print rs("Field1") & vbTab & rs("Field2")          End If         rs.MoveNext       Wend   End Sub				
اضغط F5 لتشغيل المشروع, وينسخ الخطأ 3001 يحدث.
مراجع
لمزيد من المعلومات، الرجاء مراجعة وثائق تعليمات ADO.
للحصول على مزيد من المعلومات، الرجاء مراجعة المقالة التالية في "قاعدة المعارف لـ Microsoft:
195222PRB: بحث ADO أسلوب معايير يعتمد واحد فقط

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 216873 - آخر مراجعة: 08/24/2001 08:40:00 - المراجعة: 1.0

Microsoft ActiveX Data Objects 2.0, Microsoft ActiveX Data Objects 2.01, Microsoft ActiveX Data Objects 2.1, Microsoft ActiveX Data Objects 2.1 Service Pack 2, Microsoft ActiveX Data Objects 2.5, Microsoft ActiveX Data Objects 2.6, Microsoft ActiveX Data Objects 2.7

  • kbmt kbcode kbdatabase kbfix kbprb KB216873 KbMtar
تعليقات
/html>did=1&t=">/html>