سؤال

أنا أعمل على مشروع 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.

مع أطيب التحيات،

ديريك

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