سؤال

لدي حزمة SSIS أقوم بتطويرها.أحاول كتابة البيانات من SQL Server 2005 إلى MS Access 2007.

أنا في حيرة من أمري بشأن كيفية تحويل حقل SQL char(1) إلى حقل Access Yes/No.

من المعلومات التي قمت بجمعها، سيكون مكافئ SQL لحقل نعم/لا في Access هو حقل بت، بقيم إما 0 أو 1.

يحتوي حقل SQL char(1) الخاص بي (وهو حقل المصدر الخاص بي) على "N" أو "Y".ليس لدي خيار استخدام حقل بت، ومن هنا معضلتي.لقد حاولت الإرسال إلى القيم المنطقية والأعداد الصحيحة ولم أحقق أي نجاح.

في مهمة تدفق البيانات الخاصة بي، حاولت إنشاء تعبيرات عادية دون جدوى، كما حاولت إنشاء أعمدة مشتقة وتحويلات بيانات وما إلى ذلك دون جدوى.انا عالق.

لقد رأيت بعض الأمثلة حول إنشاء عبارات شرطية تتكرر عبر مجموعات .Row.يبدو هذا أمرًا مبالغًا فيه بعض الشيء، حيث يتعين عليك كتابة شروط للتحققات NULL أو قيم السلسلة.

في رابط MSDN SSIS يعادل DTS تحويل خصائص مهمة البيانات ...يحتوي على بعض التعليمات البرمجية المشابهة إلى حد ما لهذا:

If DTSSource("Col010") = "Y" Then
  DTSDestination("X") =  -1
 Else
  DTSDestination("X") =  0
End If

هل يجب أن أكون قادرًا على التعامل مع قيم الصف مباشرة من خلال الكود؟بما أن الحقل المصدر من النوع نعم/لا، فهل يقبل القيم الصحيحة؟القيم السلبية؟نعم هو في الواقع "-1" في وصول MS، وأعتقد أن هذا يربكني.

يبدو أن التعبير العادي من شأنه أن يحل هذه المشكلة ولكني غير متأكد من كيفية استخدام ذلك أيضًا.

هل هناك شيء أغفله؟يجب أن تكون هناك طريقة لتحويل "CHAR" إلى "YES/NO".

** أعلم أنه من السهل الإشارة هنا إلى أن نظام SQL DTS الجيد ol' 2000 يمكنه التعامل مع هذا الأمر دون أي مشكلة، افتراضيًا، بمجرد إخراجه من الصندوق، وتثبيته بواسطة قرد.أجد نفسي أقضي الكثير من الوقت في حل المشاكل الصغيرة جدًا في مباحث أمن الدولة، مثل مشكلة نعم/لا الميدانية.

لا أستطيع العثور على أي وثائق حول موضوع حقول SSIS وMS Access نعم/لا.لن يسمح لي MSDN بنشر سؤال أيضًا.أعرف يا مسكين :(

هل واجه أي شخص هذه المشكلة مع SSIS وMS Access؟

هل كانت مفيدة؟

المحلول

يرى هذا الموضوع على MSDN للحصول على معلومات حول تحويل العمود المشتق.

إنه لا يتناول على وجه التحديد ما تحاول القيام به، ولكن بعض الأمثلة تشير ضمنا إلى أنك يجب أن تكون قادرا على تحقيق هدفك.قم بتعيين نوع عمود الإخراج المشتق على DT_BOOL واستخدم إصدارًا من سطر واحد من الكود الموجود أعلاه كتعبير (ربما مع عامل تشغيل ثلاثي؟).

ونعم، وصول يمثل Jet True كـ -1.خطأ = 0، وصحيح ليس خطأ.إذا قمت بتطبيق ليس على 0، فستحصل على النسخة المكملة للثنائي -1.

تحديث: وحدة التخزين الداخلية Jet لـ Boolean يكون كعدد صحيح (اذهب إلى الشكل--ولكن هذا ما اختاروه...).على هذا النحو، تقبل حقول Jet Yes/No الصفر (0) لـ False وغير الصفر (وليس فقط -1) لـ True. انظر التعليقات

نصائح أخرى

لحل هذه المشكلة، أنا خلق العمود مشتقة.

والتعبير العادي للعمود هو:

[column] == "Y" ? -1 : 0

ونوع البيانات هو:

single-byte signed integer [DT_I1]

ووفيولا! طائرة (ويعرف أيضا باسم MS الوصول، بفضل ديفيد جورج فنتون!)، يعرض الآن بلدي نعم / لا الحقول.

وبعد أن لاحظ أن سجل واحد فقط وتظهر في الجدول، لاحظت أن البيانات اختباري صالح وتصحيح القضية الأساسية.

وهذه هي وثائق جيدة حول كيفية يلقي SQL شار (1) تعني إن الحقل (مع "N" أو القيم "Y") لMS الوصول (oooops، يعني أنا جيت) نعم / لا الحقول.

وشكرا لمساعدة الجميع. ستاكوفيرفلوو لا يقدر بثمن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top