Отчеты в InTouch посредством SQL Access Manager

Вопросы, не попадающие в другие разделы.

Отчеты в InTouch посредством SQL Access Manager

Сообщение dEVILoper » Пт май 07, 2010 7:25 am

Доброе время суток! При создании системы генерации отчетов InTouch через SQL Access Manager столкнулся со следующей проблемой: если пытаться после Select'a вставить текстовый тег с именем колонки, в соответсвующий тег инфа не записывается... В чем проблема? Запрос типа:SQLSetStatement(ConnectionID,"SELECT Date,Time,'"+IndirectATag.Name+"' FROM MyTable"); и Sqlexecute... (столбец базы называется именем аналогового тега), возвращает только дату и время . Если же ввести имя тега вручную, например SQLSetStatement(ConnectionID,"SELECT Date,Time,ATagname FROM MyTable"); все отлично работает...
Последний раз редактировалось dEVILoper Вт май 11, 2010 11:14 am, всего редактировалось 1 раз.
dEVILoper
 
Сообщения: 50
Зарегистрирован: Пт май 07, 2010 7:06 am
Откуда: Russia

Сообщение Klinkmann_Msk » Пт май 07, 2010 8:03 am

To dEVILoper:

А что в логах на момент выполнения команды?
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение dEVILoper » Пт май 07, 2010 8:32 am

To Klinkmann_Msk:
В том-то и проблема, что никаких ошибок не возвращает: дата и время читаются корректно! Есть мысль, что такая конструкция неприемлема для поля Select (хотя звучит довольно бредово, ибо на выходе должна получитья строка запроса, все равно как составленная). Поле .Name идентично тому, что набираю руками - и в первом случае в теге, связанном с полем, ничего нет, во втором (когда руками) - информация есть... В то же время использование текстовых тегов в конструкции Where отрабатываются на ура... Есть какие-нибудь мысли?
Последний раз редактировалось dEVILoper Вт май 11, 2010 11:16 am, всего редактировалось 1 раз.
dEVILoper
 
Сообщения: 50
Зарегистрирован: Пт май 07, 2010 7:06 am
Откуда: Russia

Сообщение Klinkmann_Msk » Пт май 07, 2010 9:09 am

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 + "'");
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение dEVILoper » Пт май 07, 2010 11:16 am

To Klinkmann_Msk:
Первый вариант ничего не изменил, Второй - поле не с чем сравнивать, ибо заранее я не знаю имя столбца, для чего собст-но и затеял поиск, используя тэг. Вобщем, в результате многочисленных тестов, пришел к выводу, что, действительно, тэги можно использовать только в операциях сравнения - попытка поместить весь запрос в текстовый тег и сделать на него ссылку в операторе SQLSetStatement() ни к чему не приводит, пояляется ошибка IncorrectSyntax c выделением всей строки. Жаль... Спасибо за ответы!
dEVILoper
 
Сообщения: 50
Зарегистрирован: Пт май 07, 2010 7:06 am
Откуда: Russia

Сообщение Klinkmann_Msk » Пт май 07, 2010 11:58 am

To dEVILoper:

Но-но! Рано отчаиваться :)
Попробуйте ВЕСЬ запрос запихнуть в тег Memory Message. Что то вроде:
MyMsgTag="SELECT Date, Time, " + IndirectATag.Name + " FROM MyTable";
А затем
SQLSetStatement(ConnectionID,MyMsgTag);
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Useful » Пт май 07, 2010 12:37 pm

IndirectATag.Name=ATag.name;
SQLSetStatement(ConnectionID,"SELECT Date,Time,'"+IndirectATag.Name+"' FROM MyTable"); и Sqlexecute...

опробовал этот вариант на своей базе PostgreSQL все работает одно НО
'"+IndirectATag.Name+"' зачем здесь двойные кавычки?

попробуйте resultcode=SQLExecute(connectionid, Ваш_bindlist);
и посмотрите что SQLErrorMsg(resultcode) напишет.
Последний раз редактировалось Useful Пт май 07, 2010 12:43 pm, всего редактировалось 1 раз.
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение dEVILoper » Пт май 07, 2010 12:41 pm

To Klinkmann_Msk:

Ну конечно! То-то я смотрю в одном случае работае, в другом - нет. Дело в том, что при сравнении в выражении Where используются апострофы (') для вставки текстовых тэгов, а здесь, для Select'a, достаточно просто плюсануть этот тэг, как строку. :D Спасибо огромное, а то не знаю скока бы еще сидел разбирался))
Последний раз редактировалось dEVILoper Вт май 11, 2010 11:15 am, всего редактировалось 1 раз.
dEVILoper
 
Сообщения: 50
Зарегистрирован: Пт май 07, 2010 7:06 am
Откуда: Russia

Сообщение dEVILoper » Пт май 07, 2010 12:52 pm

To Useful:
В том-то и дело, что там по краям лишие апострофы стоят) Где вы были раньше? :)
dEVILoper
 
Сообщения: 50
Зарегистрирован: Пт май 07, 2010 7:06 am
Откуда: Russia

Сообщение Useful » Пт май 07, 2010 1:02 pm

тут была лажа
Последний раз редактировалось Useful Пт май 07, 2010 1:32 pm, всего редактировалось 1 раз.
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Klinkmann_Msk » Пт май 07, 2010 1:23 pm

To Useful:

Тут был копипаст лажи :lol:
Последний раз редактировалось Klinkmann_Msk Пт май 07, 2010 1:42 pm, всего редактировалось 1 раз.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Useful » Пт май 07, 2010 1:33 pm

нет это вы меня простите, глупость сморозил
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm


Вернуться в Другое

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 50