powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Embedded SQL
15 сообщений из 15, страница 1 из 1
Embedded SQL
    #34710548
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день Уважаемые!
Есть ПБ10.5, ПФЦ, SQL Server-профайлер не доступен.
Не работают конструкции типа select a from b where t=:ldt;
Где ldt - ессно datetime.
Ошибка которую дает база - Invalid syntax near ".2007".
Приложение уже готовое и работает-поэтому данную конструкцию лучше не менять. А что менять?

Каким моментом или чем определяется формат представления дейт-тайм в ПБ в таких конструкциях.
...
Рейтинг: 0 / 0
Embedded SQL
    #34710864
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замечено, что ПБ берет форматы даты и времени из региональных настроек винды.
Возможно они не совпадают с форматом сервера, т.к. ошибку выдает сервак.
Еще может последний билд на ПБ накатить нада ...
...
Рейтинг: 0 / 0
Embedded SQL
    #34710910
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самый простой вариант перейти на форум 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.
...
Рейтинг: 0 / 0
Embedded SQL
    #34712112
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Estets
Программа чужая и работающая, нужно делать свою работу, если зацепить еще и чужую, то никаких сроков не хватит!
Спасибо всем!
...
Рейтинг: 0 / 0
Embedded SQL
    #34712196
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
включить sqlca.dbms="TRACE XXX"
посмотреть лог запросов
и что это за .2007

ЗЫ: для sybase баз PB передает datetime не ввиде строки, а в родном для базы формате.
уверен что и для MSSQL тоже.
...
Рейтинг: 0 / 0
Embedded SQL
    #34713831
KOLCHOZ_PSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мужчина,а вы уверены,что ваш синтакс правильный?
По законам Embedded SQL не хватает into

select a into :l_a from b where t=:ldt;
...
Рейтинг: 0 / 0
Embedded SQL
    #34717393
PavelBuilder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select a into :a from b where t= ' 20070709 ';
...
Рейтинг: 0 / 0
Embedded SQL
    #34721548
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOLCHOZ_PSTEVENTМужчина,а вы уверены,что ваш синтакс правильный?
По законам Embedded SQL не хватает into

select a into :l_a from b where t=:ldt;
Синтаксис правильный! Меня интересует поведение конструкции t=:ldt; при разных вариантах настройки REGIONAL SETTINGS. То есть вопрос переносимости программы по белому свету. Вот уже перевод с немецкого в России не сработал именно из-за этой конструкции. И в строке связи был явно указан формат date-time, но что то не то. Хотелось бы НИЧЕГО не переделывая - через настройки - заставить программу работать и здесь в Москве и где нибудь еще.
...
Рейтинг: 0 / 0
Embedded SQL
    #34721984
18-я весна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoМеня интересует поведение конструкции t=:ldt; при разных вариантах настройки REGIONAL SETTINGS. То есть вопрос переносимости программы по белому свету. Вот уже перевод с немецкого в России не сработал именно из-за этой конструкции. И в строке связи был явно указан формат date-time, но что то не то. Хотелось бы НИЧЕГО не переделывая - через настройки - заставить программу работать и здесь в Москве и где нибудь еще.

Была похожая проблема. Приложение было отлажено с базой ODBC/ASA, а после перевода на ODBC/Firebird возникли ошибки на переменных datetime в еmbedded запросах.
Нормального решения не нашел (правда не особо активно искал).
Обошел проблему передачей времени в String в формате 'yyyy-mm-dd hh:mi:ss'.

Сейчас когда есть время подумать (а приложение уже сдано заказчику :) ) я думаю, что помогло бы
Код: plaintext
SQLCA.DBParm = "...,DateTime=' \''yyyy-mm-dd hh:mi:ss\'' '"
Но не уверен.
...
Рейтинг: 0 / 0
Embedded SQL
    #34722232
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понимаете,что меня смутило в вашем вопросе,это то,что речь идёт о синтаксической ошибке.Ну,скажем,компайлер базы не кушает дату,было бы сообщение,типа,Arithmetic Owerflow.
У вас же,синтакс-ошибка,лишние кавычки,что-ли,когда подаёте дату,sql,поди формируется динамически на уровне data-window,не совсем embedded,a?
...
Рейтинг: 0 / 0
Embedded SQL
    #34722939
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOLCHOZ_POSTEVENTПонимаете,что меня смутило в вашем вопросе,это то,что речь идёт о синтаксической ошибке.Ну,скажем,компайлер базы не кушает дату,было бы сообщение,типа,Arithmetic Owerflow.
У вас же,синтакс-ошибка,лишние кавычки,что-ли,когда подаёте дату,sql,поди формируется динамически на уровне data-window,не совсем embedded,a?
Дело в том что я пока ничего не делаю...
Запускаю работающую программу в которой изменились ТОЛЬКО regional settings. И сразу полезло сообщение, что пересылаемый sql который содержит только одно date-time в виде field = :ldt содержит ошибку о которой писалось в 1 посте. Как то раньше на таком не спотыкался - поэтому и знания по этому вопросу небольшие = все само работало ...:-)
...
Рейтинг: 0 / 0
Embedded SQL
    #34723095
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю,что здесь без копалова не понять.
Ловите полный текст запроса.
Мне кажется,что этот запрос к базе не уходит,валится уже на этапе datawindow.
Может ещё,экзешник сформировали incremetal ребилдом,тогда,ваще,может быть всё,что угодно.
...
Рейтинг: 0 / 0
Embedded SQL
    #34723526
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот провел тест

PB script:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
datetime dt
long i

SQLCA.DBMS = "TRACE ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=MDM'"
connect;

dt=datetime(  2005 - 10 - 14 ,  01 : 36 : 00 )

select count(*) into :i from sysobjects where crdate>:dt;
messageBox('count',i)

при абсолютно разных региональных настройках это работает без проблем.
база MSSQL2005. PB 10.2
в логе видно что дата передается в виде параметра DATETIME и никак не в виде строки:
Код: plaintext
1.
2.
(f43e30): select count ( *) from sysobjects where crdate > ?
(f43e30): DATETIME Length= 0  ID=? (DBI_PREPARE_WITHPARM) ( 384 . 294  MS /  2267 . 189  MS)
(f43e30): EXECUTE:(DBI_DYN_EXECUTE) ( 444 . 872  MS /  2712 . 061  MS)
...
Рейтинг: 0 / 0
Embedded SQL
    #34724346
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, при такой записи проблем быть не должно
--------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Embedded SQL
    #34724883
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя вина-не указал что драйвер OLE DB!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Embedded SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]