|
|
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
Добрый день Уважаемые! Есть ПБ10.5, ПФЦ, SQL Server-профайлер не доступен. Не работают конструкции типа select a from b where t=:ldt; Где ldt - ессно datetime. Ошибка которую дает база - Invalid syntax near ".2007". Приложение уже готовое и работает-поэтому данную конструкцию лучше не менять. А что менять? Каким моментом или чем определяется формат представления дейт-тайм в ПБ в таких конструкциях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 13:16 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
Замечено, что ПБ берет форматы даты и времени из региональных настроек винды. Возможно они не совпадают с форматом сервера, т.к. ошибку выдает сервак. Еще может последний билд на ПБ накатить нада ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 14:22 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
Самый простой вариант перейти на форум MS SQL FAQ: Задавайте дату в виде строки 'YYYYMMDD' (без разделителей) или дату-время 'YYYYMMDD HH:MM:SS'. Фича в том, что в указанном формате SQL-сервер всегда однозначно интерпретирует дату, независимо от региональных и прочих настроек. Например, " ... WHERE SomeDateField<'20010302' ... ". Эта дата при любом раскладе будет интерпретирована сервером как 2 марта 2001 года. Если вы по каким-то причинам не можете влиять на формат передаваемой серверу символьной строки, то можно - воспользоваться функцией CONVERT, у которой 3-ий параметер определяет формат. Например запрос select convert(datetime, '02/01/2004', 104) преобразует строку к дате 2-ое Января 2004 г а запрос select convert(datetime, '02/01/2004', 101) преобразует строку к дате 1-ое Февраля 2004 г - воспользоваться настройкой SET DATEFORMAT. Но она действует только для текущего коннекта и на время коннекта - Задать подходящий language для используемого sql login-а. С помощью системной процедуры sp_defaultlanguage или утилиты Enterprise Manager. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 14:32 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
2 Estets Программа чужая и работающая, нужно делать свою работу, если зацепить еще и чужую, то никаких сроков не хватит! Спасибо всем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:51 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
включить sqlca.dbms="TRACE XXX" посмотреть лог запросов и что это за .2007 ЗЫ: для sybase баз PB передает datetime не ввиде строки, а в родном для базы формате. уверен что и для MSSQL тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 19:19 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
Мужчина,а вы уверены,что ваш синтакс правильный? По законам Embedded SQL не хватает into select a into :l_a from b where t=:ldt; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 13:40 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
select a into :a from b where t= ' 20070709 '; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2007, 15:23 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
KOLCHOZ_PSTEVENTМужчина,а вы уверены,что ваш синтакс правильный? По законам Embedded SQL не хватает into select a into :l_a from b where t=:ldt; Синтаксис правильный! Меня интересует поведение конструкции t=:ldt; при разных вариантах настройки REGIONAL SETTINGS. То есть вопрос переносимости программы по белому свету. Вот уже перевод с немецкого в России не сработал именно из-за этой конструкции. И в строке связи был явно указан формат date-time, но что то не то. Хотелось бы НИЧЕГО не переделывая - через настройки - заставить программу работать и здесь в Москве и где нибудь еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2007, 12:21 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
sboykoМеня интересует поведение конструкции t=:ldt; при разных вариантах настройки REGIONAL SETTINGS. То есть вопрос переносимости программы по белому свету. Вот уже перевод с немецкого в России не сработал именно из-за этой конструкции. И в строке связи был явно указан формат date-time, но что то не то. Хотелось бы НИЧЕГО не переделывая - через настройки - заставить программу работать и здесь в Москве и где нибудь еще. Была похожая проблема. Приложение было отлажено с базой ODBC/ASA, а после перевода на ODBC/Firebird возникли ошибки на переменных datetime в еmbedded запросах. Нормального решения не нашел (правда не особо активно искал). Обошел проблему передачей времени в String в формате 'yyyy-mm-dd hh:mi:ss'. Сейчас когда есть время подумать (а приложение уже сдано заказчику :) ) я думаю, что помогло бы Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2007, 21:39 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
Понимаете,что меня смутило в вашем вопросе,это то,что речь идёт о синтаксической ошибке.Ну,скажем,компайлер базы не кушает дату,было бы сообщение,типа,Arithmetic Owerflow. У вас же,синтакс-ошибка,лишние кавычки,что-ли,когда подаёте дату,sql,поди формируется динамически на уровне data-window,не совсем embedded,a? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2007, 13:55 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
KOLCHOZ_POSTEVENTПонимаете,что меня смутило в вашем вопросе,это то,что речь идёт о синтаксической ошибке.Ну,скажем,компайлер базы не кушает дату,было бы сообщение,типа,Arithmetic Owerflow. У вас же,синтакс-ошибка,лишние кавычки,что-ли,когда подаёте дату,sql,поди формируется динамически на уровне data-window,не совсем embedded,a? Дело в том что я пока ничего не делаю... Запускаю работающую программу в которой изменились ТОЛЬКО regional settings. И сразу полезло сообщение, что пересылаемый sql который содержит только одно date-time в виде field = :ldt содержит ошибку о которой писалось в 1 посте. Как то раньше на таком не спотыкался - поэтому и знания по этому вопросу небольшие = все само работало ...:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 10:26 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
Я думаю,что здесь без копалова не понять. Ловите полный текст запроса. Мне кажется,что этот запрос к базе не уходит,валится уже на этапе datawindow. Может ещё,экзешник сформировали incremetal ребилдом,тогда,ваще,может быть всё,что угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 11:09 |
|
||
|
Embedded SQL
|
|||
|---|---|---|---|
|
#18+
вот провел тест PB script: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. при абсолютно разных региональных настройках это работает без проблем. база MSSQL2005. PB 10.2 в логе видно что дата передается в виде параметра DATETIME и никак не в виде строки: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 13:01 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=34723526&tid=1337040]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 130ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...