PRB: المطلوب إرجاعها كـ NULL استخدام OpenRecordset DAO قيم Excel

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

اضغط هنا لرابط المقالة باللغة الانجليزية194124
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
عند الاتصال في "جدول" بيانات Excel باستخدام الأسلوب DAO OpenRecordset بعض القيم في عمود Excel قد يتم إرجاع أنها خالية عندما تكون القيمة الأساسية غير قيمة خالية Null. ويحدث هذا عادةً عند رقمية ثم يتم intermixed أنواع البيانات النص داخل نفس العمود من Excel.
السبب
تحدث هذه المشكلة بواسطة تحديد برنامج تشغيل ISAM Excel في أنه بمجرد أن يحدد نوع البيانات لعمود Excel فإنه يعود لدى defaulted Null عن أية قيمة ليست من نوع البيانات برنامج تشغيل ISAM لهذا العمود Excel. برنامج تشغيل ISAM Excel يحدد نوع البيانات لعمود Excel عن طريق فحص القيم الفعلية في بعض الصفوف الأولى ومن ثم اختيار نوع بيانات الذي يمثل معظم القيم في أخذ العينات الخاص به.
الحل
هناك نوعان الحلول لهذا السلوك:
  1. التأكد من إدخال البيانات في Excel كنص. فقط إعادة تهيئة Excel العمود إلى نص سوف لا إنجاز هذا. عليك إعادة إدخال قيم موجودة بعد إعادة تهيئة العمود Excel. في Excel، يمكنك استخدام F5 إلى إعادة إدخال القيم الموجودة في الخلية المحددة.
  2. يمكنك إضافة خيار IMEX = 1; سلسلة في أسلوب OpenDatabase الاتصال إلى Excel. على سبيل المثال:
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _            False, True, "Excel 8.0; HDR=NO; IMEX=1;")						
    ملاحظة: IMEX إعداد = 1 بإعلام برنامج التشغيل لاستخدام وضع الاستيراد. في هذه الحالة إعداد ImportMixedTypes التسجيل = سيتم ملاحظة النص. هذا يفرض البيانات المختلطة إلى تحويل إلى نص. هذا للعمل بشكل يعتمد عليه قد يتوجب عليك أيضاً تعديل إعداد تسجيل TypeGuessRows = 8. ISAM برنامج التشغيل بشكل افتراضي بالبحث في الصفوف الثمانية الأولى و من أخذ العينات التي تحدد نوع البيانات. إذا كان هذا ثمانية صف يتم أخذ العينات كافة رقمية ثم تعيين IMEX = لا سوف 1 من تحويل نوع البيانات الافتراضي إلى نص; سيبقى رقمية.

    يجب أن تكون حذراً ذلك IMEX = 1 لا يمكن استخدام indiscriminately. هذا هو استيراد وضع ولذا قد تكون النتائج غير متوقعة إذا حاولت القيام بإلحاق أو تحديث البيانات في هذا الوضع.

    الإعدادات الممكنة IMEX:
            0 is Export mode        1 is Import mode        2 is Linked mode (full update capabilities)						
    المفتاح التسجيل حيث توجد الإعدادات المذكورة أعلاه:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel

    راجع قسم "المراجع" في هذه المقالة للحصول على معلومات على عندما يحتوي جدول بيانات Excel النص في رؤوس الأعمدة مع بيانات رقمية.
تصريح
يعتبر هذا السلوك حسب التصميم.
معلومات أخرى

خطوات إعادة إنشاء السلوك

لتكرار هذه المشكلة أولاً إنشاء مصنف Excel مع جدول بيانات ورقة1 افتراضي. في العمود الأول من الورقة1 أدخل القيم التالية - 123 ، aaa 456 bbb 789. حفظ هذا المصنف في الدليل C:\Temp ثم اسم Book1.XLS.

في Visual Basic، قم بإنشاء مشروع جديد EXE قياسي ثم اتبع الخطوات التالية:
  1. جعل مرجع إلى مكتبة كائنات Microsoft DAO 3.5. في Visual Basic 6.0 ، ستكون مكتبة كائنات Microsoft DAO 3.51.
  2. إضافة CommandButton إلى نموذج جديد.
  3. ضع التعليمات البرمجية التالية في مقطع Declarations عام للنموذج:
          Dim Db As Database      Dim Rs As Recordset      Private Sub Command1_Click()          Set Rs = Db.OpenRecordset("Sheet1$")          'This will print the spreadsheet Text values as Nulls.          Do While Not Rs.EOF              Debug.Print Rs(0)              Rs.MoveNext          Loop      End Sub      Private Sub Form_Load()          'HDR refers to the Excel header row.      Set Db = OpenDatabase("C:\Temp\Book1.xls", _               False, True, "Excel 8.0; HDR=NO;")      End Sub      Private Sub Form_Unload(Cancel As Integer)          Db.Close          Set Db = Nothing      End Sub						
    تشغيل المشروع عن طريق ضغط المفتاح F5 ولاحظ أن في إطار Debug القيم النصية يتم طباعة Null. لو معظم القيم في جدول بيانات Excel على النص ثم يمكن عكس الناتج من التعليمات البرمجية أعلاه. أي، القيم الرقمية بالرجوع كـ بالقيم الخالية.
مراجع
للحصول على مزيد من المعلومات، الرجاء مراجعة المقالة التالية في "قاعدة المعارف لـ Microsoft:

190195: HOWTO: استخراج معلومات من ورقة Excel مع DAO
kbDSupport kbdse جدول بيانات المصنف kbDAO350 kbDAO300 kbDAO250 kbIISAM kbExceL kbVBp400 kbVBp500 kbVBp600 kbVBp kbRegistry

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

خصائص

رقم الموضوع: 194124 - آخر مراجعة: 12/05/2015 09:27:46 - المراجعة: 4.0

Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 4.0 Enterprise Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0

  • kbnosurvey kbarchive kbmt kbprb KB194124 KbMtar
تعليقات