سؤال

لقد قمت بتصميم استفسار في عرض SQL باستخدام MS Access:

select floor(num1) from t1;

عندما أقوم بتشغيله، أحصل على "أرضية غير محددة".

أحصل على أخطاء مماثلة ل Ceil, Mod,Power, Sign, Sqrt, Trunc, ، و initcap المهام.

هل لدى بناء جملة SQL لمحرك قاعدة بيانات Access وظائف مكافئة؟

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

المحلول

استبدال الكلمة () مع int (). لقد تعلمت ذلك من خلال البحث في ملفات مساعدة الوصول، في هذه الحالة، ضرب F1 أثناء وجوده في مصمم الاستعلام، والبحث عن "وظائف". أن أخذني إلى موضوع تعليمات مقارنة بوظائف VBA و T-SQL.

ربما يجب أن يكون لديك نظرة على Access قاعدة بيانات المحرك مرجع SQL. وبعد لا يمكنني العثور على مرجع جيد عبر الإنترنت للحصول على وظائف مدعومة من خلال خدمات JET / ACE والحقائق. بالنسبة لسبب غير معروف، لم تضمنت مساعدة الوصول تعبيرات Jet / Ace منذ Jet 3.0 وأخرج هذا المورد القديم أخيرا من MSDN قبل عام أو قبل :(

ضع في اعتبارك أن خدمة Expression Jet / Ace للاستخدام الخارجي يدعم الوصول الخارجي مجموعة فرعية أصغر بكثير من الوظائف التي يمكن استخدام خدمة تعبير الوصول عند تشغيل SQL داخل Access 2007. على نطاق واسع، وظائف VBA5 (كما تختلف عن الأساليب) تنطوي على أنواع بيانات بسيطة (كما هو مخصم من، كما أقول، صفائف أو كائنات) مدعومة خارج واجهة مستخدم الوصول؛ للحصول على قائمة تقريبية من أسماء الوظائف، راجع "استخدام عمليات وضع Sandbox مع حزمة خدمة Jet 4.0 وحزمة 3 ثم" لاحقا "من هذه المادة MSDN.

أيضا، يجب أن تكون المرجع الوظائف في مساعدة VBE مكانا بداية.

ملفات التعليمات ليست مثالية، ولكن يجب أن تحصل على القليل من البحث عن ما تحتاج إليه.

نصائح أخرى

Public Function Floor(ByVal x As Double) As Double
'Be Because VBA does not have a Floor function.
'Works for positive numbers
'Turns 3.9 -> 3
'Note: Round(3.9) = 4

    Dim s As String, dPos As Integer
    s = CStr(x)
    dPos = InStr(s, ".")
    Floor = CLng(Left(s, dPos - 1))
End Function

كما ذكر، لا يتوفر الكلمة في الوصول، يجب عليك استخدام Int () كبديل. إذا كنت تصر على استخدام الأرض، فيمكنك دائما إنشاء وظيفة وحدة VBA في ملف MDB مشابها أدناه، ولكن هذا ربما يكون مبالا.

Public Function floor(dblIn As Double, dec As Integer) As Double
  decPosition = InStr(Str(dblIn), ".")
  x = Left(dblIn, decPosition + dec - 1)
  floor = x
End Function

على غرار عمليات الرياضيات الأخرى التي وصفتها أعلاه، يمكنك إنشاء وظائف إضافية لإنشاء مجموعة الوظائف هذه.

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