11.04.2012, 11:56 | #1 |
Участник
|
Ошибка расширенного диапазона запроса: Ожидается правая круглая скобка рядом с 0.
Хай. Требуется такой запрос: select field1 from table1 where ((field1 = var1) or (field2 = var2))
Получился такой код: query query = new query(); queryBuildDatasource qbds; ; qbds = query.addDataSource(tablenum(table1)); qbds.addRange(fieldNum(Table1, Field1)).value(strfmt("((%1 == %2) || (%3 == %4))", fieldNum(Table1, Field1), var1, fieldNum(Table1, Field2), var2)) ; qbds в инфологе выглядит так: SELECT FIRSTFAST * FROM table1 WHERE ((((30001 == var1) || (30002 == var)))) . Проблема : если в var1, var2 использовать число, все работает. Но у таблицы поля стринг и условие должно быть строка. А вот если var1, var2 строка, например 'f', выдается ошибка расширенного диапазона запроса. Что еще заметил: без скобок ошибок нет, но без скобок мне не нужно. Т.е. когда запрос в инфологе получается только с 2 скобками, ошибки нет. Так, если записать qbds.addRange(fieldNum(Table1, Field1)).value(strfmt("%1 == %2 || %3 == %4", fieldNum(Table1, Field1), var1, fieldNum(Table1, Field2), var2)) ; В инфологе будет SELECT FIRSTFAST * FROM table1 WHERE ((30001 == var1) || (30002 == var)) без ошибки. Пробовал strfmt("(%1 == N'%2') || (%3 == N'%4')", ... Пробовал менять местами кавычки '' и "". Ошибка - Неправильные типы аргументов операции сравнения. Что за беда. Мож знает кто. Последний раз редактировалось uskutus; 11.04.2012 в 12:08. |
|