Страница 1 из 1
Отчеты в InTouch посредством SQL Access Manager
Добавлено:
Пт май 07, 2010 7:25 am
dEVILoper
Доброе время суток! При создании системы генерации отчетов InTouch через SQL Access Manager столкнулся со следующей проблемой: если пытаться после Select'a вставить текстовый тег с именем колонки, в соответсвующий тег инфа не записывается... В чем проблема? Запрос типа:SQLSetStatement(ConnectionID,"SELECT Date,Time,'"+IndirectATag.Name+"' FROM MyTable"); и Sqlexecute... (столбец базы называется именем аналогового тега), возвращает только дату и время . Если же ввести имя тега вручную, например SQLSetStatement(ConnectionID,"SELECT Date,Time,ATagname FROM MyTable"); все отлично работает...
Добавлено:
Пт май 07, 2010 8:03 am
Klinkmann_Msk
To dEVILoper:
А что в логах на момент выполнения команды?
Добавлено:
Пт май 07, 2010 8:32 am
dEVILoper
To Klinkmann_Msk:
В том-то и проблема, что никаких ошибок не возвращает: дата и время читаются корректно! Есть мысль, что такая конструкция неприемлема для поля Select (хотя звучит довольно бредово, ибо на выходе должна получитья строка запроса, все равно как составленная). Поле .Name идентично тому, что набираю руками - и в первом случае в теге, связанном с полем, ничего нет, во втором (когда руками) - информация есть... В то же время использование текстовых тегов в конструкции Where отрабатываются на ура... Есть какие-нибудь мысли?
Добавлено:
Пт май 07, 2010 9:09 am
Klinkmann_Msk
To dEVILoper:
Замечено, что SQL Access или MSSQL придирается к пустому месту
Буквально. Т.е. к пробелу или его отсутствию.
Попробуйте:
SQLSetStatement(ConnectionID,"SELECT Date, Time, '" + IndirectATag.Name + "' FROM MyTable");
Или:
SQLSetStatement(ConnectionID,"SELECT Date, Time, MyName FROM MyTable Where MyName = '" + IndirectATag.Name + "'");
Добавлено:
Пт май 07, 2010 11:16 am
dEVILoper
To Klinkmann_Msk:
Первый вариант ничего не изменил, Второй - поле не с чем сравнивать, ибо заранее я не знаю имя столбца, для чего собст-но и затеял поиск, используя тэг. Вобщем, в результате многочисленных тестов, пришел к выводу, что, действительно, тэги можно использовать только в операциях сравнения - попытка поместить весь запрос в текстовый тег и сделать на него ссылку в операторе SQLSetStatement() ни к чему не приводит, пояляется ошибка IncorrectSyntax c выделением всей строки. Жаль... Спасибо за ответы!
Добавлено:
Пт май 07, 2010 11:58 am
Klinkmann_Msk
To dEVILoper:
Но-но! Рано отчаиваться
Попробуйте ВЕСЬ запрос запихнуть в тег Memory Message. Что то вроде:
MyMsgTag="SELECT Date, Time, " + IndirectATag.Name + " FROM MyTable";
А затем
SQLSetStatement(ConnectionID,MyMsgTag);
Добавлено:
Пт май 07, 2010 12:37 pm
Useful
IndirectATag.Name=ATag.name;
SQLSetStatement(ConnectionID,"SELECT Date,Time,'"+IndirectATag.Name+"' FROM MyTable"); и Sqlexecute...
опробовал этот вариант на своей базе PostgreSQL все работает одно НО
'"+IndirectATag.Name+"' зачем здесь двойные кавычки?
попробуйте resultcode=SQLExecute(connectionid, Ваш_bindlist);
и посмотрите что SQLErrorMsg(resultcode) напишет.
Добавлено:
Пт май 07, 2010 12:41 pm
dEVILoper
To Klinkmann_Msk:
Ну конечно! То-то я смотрю в одном случае работае, в другом - нет. Дело в том, что при сравнении в выражении Where используются апострофы (') для вставки текстовых тэгов, а здесь, для Select'a, достаточно просто плюсануть этот тэг, как строку.
Спасибо огромное, а то не знаю скока бы еще сидел разбирался))
Добавлено:
Пт май 07, 2010 12:52 pm
dEVILoper
To Useful:
В том-то и дело, что там по краям лишие апострофы стоят) Где вы были раньше?
Добавлено:
Пт май 07, 2010 1:02 pm
Useful
тут была лажа
Добавлено:
Пт май 07, 2010 1:23 pm
Klinkmann_Msk
To Useful:
Тут был копипаст лажи
Добавлено:
Пт май 07, 2010 1:33 pm
Useful
нет это вы меня простите, глупость сморозил