Question

I'm working on a c# project that use a Versant Object Database back end and I'm trying to build a query that contains an arithmetic operator. The documentation states that it is supported but lack any example.

I'm trying to build something like this:

SELECT * FROM _orderItemObject WHERE _qtyOrdered - _qtySent > 0

If I try this statement in the Object Inspector I get a synthax error near the '-'.

Anyone has an example of a working VQL with that kind of statement?

Thanks

Was it helpful?

Solution

I am not sure that the Object Inspector will know the syntax for the arithmtic expression. However, in your code you should be referring to the fully qualified class. Then the syntax you are using should be perfectly fine.

Query query = new Query( session, "select * from com.yourCompany.yourClass where _qtyOrdered - _qtySent > 0 ");

QueryResult result = query.execute();

I just tried this out on one of my classes and it worked fine.

Cheers, -Robert

OTHER TIPS

With C# and OQL you have to make sure you select the proper class extent. This is done by adding the "Extent" suffix to the class name. For example, in my Pet class I would identify all the pets with "PetExtent" in the OQL string.

Class members are accessed in the predicate by defining a local moniker, p in the code below. Any arithmetic expressions will be evaluated by the query engine.

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());

The best way to test OQL with Versant's C# binding is to use the OQL Query Browser integrated into Visual Studio. Look under the Versant Menu drop down in Visual Studio.

Best Regards,

Derek

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top