بيان OQL Versant مع مشغل حساب
-
25-09-2019 - |
سؤال
أنا أعمل على مشروع AC# الذي يستخدم نهاية قاعدة بيانات الكائنات المرتفعة وأحاول إنشاء استعلام يحتوي على مشغل حسابي. تنص الوثائق على أنه مدعوم ولكنها تفتقر إلى أي مثال.
أحاول بناء شيء مثل هذا:
SELECT * FROM _orderItemObject WHERE _qtyOrdered - _qtySent > 0
إذا جربت هذا البيان في مفتش الكائن ، أحصل على خطأ Synthax بالقرب من "-".
أي شخص لديه مثال على VQL العاملة مع هذا النوع من البيان؟
شكرًا
المحلول
لست متأكدًا من أن مفتش الكائن سيعرف بناء الجملة للتعبير الحسابي. ومع ذلك ، في الكود الخاص بك يجب أن تشير إلى الفصل المؤهل بالكامل. ثم يجب أن يكون بناء الجملة الذي تستخدمه جيدًا تمامًا.
استعلام الاستعلام = استعلام جديد (جلسة ، "حدد * من com.yourcompany.yourclass حيث _qtyordered - _qtysent> 0") ؛
نتيجة QueryResult = Query.execute () ؛
لقد جربت هذا للتو على أحد فصولي وعملت بشكل جيد.
هتافات ، -Robert
نصائح أخرى
مع C# و OQL ، عليك التأكد من تحديد مدى الفصل الصحيح. يتم ذلك عن طريق إضافة لاحقة "المدى" إلى اسم الفصل. على سبيل المثال ، في فئة الحيوانات الأليفة ، سأحدد جميع الحيوانات الأليفة مع "petextent" في سلسلة OQL.
يتم الوصول إلى أعضاء الفصل في المسند من خلال تحديد لقب محلي ، P في الكود أدناه. سيتم تقييم أي تعبيرات حسابية بواسطة محرك الاستعلام.
string query="SELECT * FROM PetExtent AS p WHERE p.Name = \"Ferris\" AND (p.age + 5) > 4";
IQueryResult result = scope.GetOqlQuery(query).Execute();
foreach (object o in result)
Out(o.ToString());
أفضل طريقة لاختبار OQL مع الربط C# في Versant هي استخدام متصفح الاستعلام OQL المدمج في Visual Studio. انظر تحت القائمة المرتفعة المنسدلة في Visual Studio.
مع أطيب التحيات،
ديريك