Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Все я сдался, иду за помощью / 25 сообщений из 26, страница 1 из 2
09.06.2005, 14:43
    #33109601
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
Коллеги, подскажите как бороться с дурью...
Среда - PocketBuilder 2.0.1, ASA - 9.0.2
Есть запрос с аргументом типа Date на выборку данных
SELECT "way_bills"."wbil_date",
"way_bills"."wbil_number",
"clients"."short_name",
"way_bills"."wbil_id"
FROM "clients",
"way_bills"
WHERE ( "way_bills"."clnt_clnt_id" = "clients"."clnt_id" ) and
( ( "way_bills"."wbtp_wbtp_id" = :WbtpId ) AND
( "way_bills"."del_date" is null ) AND
( "way_bills"."store_store_id" = :StoreId ) AND
( "way_bills"."wbil_date" >= :StartDate )
)
При выходе из "мастерской" работы с запросами постоянно вонзникает сообщение об ошибке "Не могу конвертировать 14.07.1990 to timestamp" с предложением ее исправить ("только как и на что"?).
Дальше больше: говорю не надо править, возвращаюсь в DW, запускаю приложение на ноутбуке - все классно и работает (несмотря на ошибку).
Запускаю на КПК - получаю "не могу конвертировать 09.06.2005 to timestamp"
Как бороться с этим............
К сожалению последний раз работал с PowerBuilder в конце 90-х годов, с тех пор был большой перерыв и вот все заново.....
...
Рейтинг: 0 / 0
09.06.2005, 15:00
    #33109686
Все я сдался, иду за помощью
Попробуй изменить тип аргумента на datetime
...
Рейтинг: 0 / 0
09.06.2005, 15:03
    #33109701
Все я сдался, иду за помощью
"только как и на что"?
Там же в "мастерской" работы с запросами. Очевидно это переменная :StartDate
...
Рейтинг: 0 / 0
09.06.2005, 15:04
    #33109706
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
А может попробовать явно задать формат в DBParm ?
Код: plaintext
SQLCA.DBParm = "..........,Date='dd.mm.yyyy'"
...
Рейтинг: 0 / 0
09.06.2005, 15:31
    #33109845
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
ЗоринАндрейА может попробовать явно задать формат в DBParm ?
Код: plaintext
SQLCA.DBParm = "..........,Date='dd.mm.yyyy'"

Пробовал, не спасает. На настольном ПК работает, на КПК - нет.

Попробуй изменить тип аргумента на datetime
сегодня, 15:00 Там же в "мастерской" работы с запросами. Очевидно это переменная :StartDate
И это пробовал, также не спасает.
Бред какой то. Пробовал даже определить параметр как String, а потом в запросе писать Date(:StartDate). Только в этом случае случае выдает "не могу конвертировать 0 в timestamp"
...
Рейтинг: 0 / 0
09.06.2005, 15:44
    #33109892
Все я сдался, иду за помощью
Это конечно через ж...у, но если возможно, измени тип поля в базе с timestamp на date или datetime.
...
Рейтинг: 0 / 0
09.06.2005, 15:52
    #33109926
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
Если я все правильно перепутал, аналогичная ситуация,причем именно с таким числом (14.07.1990), возникала при попытках модификации sql-запроса в пятой версии PB в Win9x. При создании DW ошибок не было. Обходили это дело как обычно - через экспорт в файл.


Со строкой тоже можно попробовать поработать, только я бы явно указал вот такой формат
Код: plaintext
"yyyy-mm-dd hh:mm:ss"
...
Рейтинг: 0 / 0
09.06.2005, 15:52
    #33109927
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
Прохожий1111Это конечно через ж...у, но если возможно, измени тип поля в базе с timestamp на date или datetime.

Будете смеяться, но...
Пробовал менять тип поля wbil_date с даты на DateTime. На Timestamp не пробовал, но думаю, что не спасет.
Может еще какие-то мысли будут или опять в Sybase обращаться????????
...
Рейтинг: 0 / 0
09.06.2005, 15:57
    #33109944
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
PL99Если я все правильно перепутал, аналогичная ситуация,причем именно с таким числом (14.07.1990), возникала при попытках модификации sql-запроса в пятой версии PB в Win9x. При создании DW ошибок не было. Обходили это дело как обычно - через экспорт в файл.
Не понял, как это спасет от беды. Т.е. дальше то что???


Со строкой тоже можно попробовать поработать, только я бы явно указал вот такой формат
Код: plaintext
"yyyy-mm-dd hh:mm:ss"


Пробовать не пробовал, но уж больно как то влом руками все приводить к этому формату. Ввел человек в окне ввода критерий отбора в формате "09.06.02005", а мне его переворачивать!!!??
Формат "dd.mm.yyy hh:mm:ss" как-то привычнее....
...
Рейтинг: 0 / 0
09.06.2005, 17:09
    #33110198
pbdeveloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
если вы работаете в Oracle можно еще попробовать так:

"way_bills"."wbil_date" >= to_date(:StartDate, "дд/мм/гггг")
...
Рейтинг: 0 / 0
09.06.2005, 17:12
    #33110212
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
pbdeveloperесли вы работаете в Oracle можно еще попробовать так:

"way_bills"."wbil_date" >= to_date(:StartDate, "дд/мм/гггг")

Если бы я работал в любимом мною Оракле я бы горя не знал. Это то мы знаем, плавали.
А здесь ASA 9.0.2 да еще под КПК. Сказано в начале сообщения. И главное тут явно проблема не в базе, а в PocketBuilder.
...
Рейтинг: 0 / 0
09.06.2005, 17:19
    #33110231
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
pbdeveloperесли вы работаете в Oracle можно еще попробовать так:

"way_bills"."wbil_date" >= to_date(:StartDate, "дд/мм/гггг")
А кто мешает для ASA аналогично написать:
Код: plaintext
"way_bills"."wbil_date" >= CONVERT(:StartDate,  104 )
и передавать параметр строкой. Или же попробовать для ASA указать опцию БД:
Код: plaintext
SET OPTION PUBLIC.DATE_ORDER = 'DMY'
...
Рейтинг: 0 / 0
09.06.2005, 17:32
    #33110268
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
ASCRUS[quot pbdeveloper]если вы работаете в Oracle можно еще попробовать так:

"way_bills"."wbil_date" >= to_date(:StartDate, "дд/мм/гггг")
А кто мешает для ASA аналогично написать:
Код: plaintext
"way_bills"."wbil_date" >= CONVERT(:StartDate,  104 )
и передавать параметр строкой. ")

Не спасло. По прежнему получаю сообщение, дословно:
"SQLSTATE=37000
[Sybase][ODBC Driver][Adaptive Server Anywhere]Syntax error or access violation:Syntax error near:'14.07.1990' on line 1"
И дальше предложение исправить ошибку

ASCRUS Или же попробовать для ASA указать опцию БД:
Код: plaintext
SET OPTION PUBLIC.DATE_ORDER = 'DMY'

Это я уже пробовал
...
Рейтинг: 0 / 0
09.06.2005, 17:40
    #33110303
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
Странно, в BOL и такого SQLState даже нет. А нельзя как нибудь через SQLPreview вывести полный текст запроса, что же PB посылает то на ASA. Кстати интересно, если не через PB в ASA запрос выполнить, будет ли работать ?
...
Рейтинг: 0 / 0
09.06.2005, 17:43
    #33110313
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
ASCRUSСтранно, в BOL и такого SQLState даже нет. А нельзя как нибудь через SQLPreview вывести полный текст запроса, что же PB посылает то на ASA. Кстати интересно, если не через PB в ASA запрос выполнить, будет ли работать ?

Запрос без PB прекрасно работает. Все как часы... Было бы странно, чтобы такая простая вещь не работала. И повторяю, что на обычном компе, не смотря на ошибку в процессе содания DW, все работает. А вот на КПК окно не открывается и ругается на ошибку преобразования типа.......
...
Рейтинг: 0 / 0
09.06.2005, 17:44
    #33110315
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
RTFM!!!!

CONVERT( datetime , <date>, 104 )
...
Рейтинг: 0 / 0
09.06.2005, 17:46
    #33110323
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
ЗоринАндрейRTFM!!!!

CONVERT( datetime , <date>, 104 )
Это да - тип то я забыл поставить для CONVERT. Но что то мне слабо верится, что Александр на это купился :)
...
Рейтинг: 0 / 0
09.06.2005, 17:49
    #33110334
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
Попробовал в PB9 задать формат в профиле. Сгенерился dbparm вот такого вида:
SQLCA.DBParm = "..... ,Date=' \''dd.mm.yyyy\'' '"
что чуток отличается от того что я постил ранее.
...
Рейтинг: 0 / 0
09.06.2005, 17:52
    #33110349
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
ASCRUS ЗоринАндрейRTFM!!!!

CONVERT( datetime , <date>, 104 )
Это да - тип то я забыл поставить для CONVERT. Но что то мне слабо верится, что Александр на это купился :)

Ладно, всем спасибо. Я уже отписался в Sybase. Посмотрим, что там ответят. Будут новости сообщу в чем была загвоздка.
...
Рейтинг: 0 / 0
09.06.2005, 17:54
    #33110353
pbdeveloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
а что если конвертировать оба поля:
CONVERT("way_bills"."wbil_date", 104) >= CONVERT(:StartDate, 104)
...
Рейтинг: 0 / 0
10.06.2005, 09:08
    #33110904
Black Savage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
To Александр Старшинин
Когда возникает всякая хрень с датами в запросах, меня всегда выручает стринг.
Т.е. пущай твой юзер работает с Data . Когда будешь вызывать DW , напиши типа:

Retrieve(String(ld_Data, "yyyymmdd"))

Такой формат проходит всегда. Ну и в селекте, соответственно, должен стоять аргумент типа String
...
Рейтинг: 0 / 0
10.06.2005, 13:30
    #33111822
iLLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
Понятное дело, что на одном компе работает, а на другом нет. То что работает на одном не показатель, что оно должно работать на всех.
По поводу формата:
Попробуйте на КПК на ПБ выполнить селект типа:
select *
from table
where field='01.01.1990';
Вот если тут получите ту же ошибку, то все понятно, разбирайтесь с установкой формата даты/датывремени для подключения.
Попробуйте выполнить
select *
from table
where field='1990.01.01';
Проходит? Значит дело в кривых настройках, идем и разбираемся со свойствами подключения.
Для контроля могу посоветовать подключиться с КПК к БД на нормальной машине и Централом поглядеть на свойства подключения. Устанавливаются ли они, эти свойства.
А Sybase тут непричем, пошлют они.
...
Рейтинг: 0 / 0
10.06.2005, 14:42
    #33112076
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
iLLerПонятное дело, что на одном компе работает, а на другом нет. То что работает на одном не показатель, что оно должно работать на всех.
По поводу формата:
Попробуйте на КПК на ПБ выполнить селект типа:
select *
from table
where field='01.01.1990';
Вот если тут получите ту же ошибку, то все понятно, разбирайтесь с установкой формата даты/датывремени для подключения.
Попробуйте выполнить
select *
from table
where field='1990.01.01';
Проходит? Значит дело в кривых настройках, идем и разбираемся со свойствами подключения.
Для контроля могу посоветовать подключиться с КПК к БД на нормальной машине и Централом поглядеть на свойства подключения. Устанавливаются ли они, эти свойства.
А Sybase тут непричем, пошлют они.


Вы будете смеяться, но в итоге на второй день я КПК "уговорил" на вариант
SELECT "way_bills"."wbil_date",
"way_bills"."wbil_number",
"clients"."short_name",
"way_bills"."wbil_id"
FROM "clients",
"way_bills"
WHERE ( "way_bills"."clnt_clnt_id" = "clients"."clnt_id" ) and
( ( "way_bills"."wbtp_wbtp_id" = :WbtpId ) AND
( "way_bills"."del_date" is null ) AND
( "way_bills"."store_store_id" = :StoreId ) AND
( "way_bills"."wbil_date" >= convert(datetime,:StartDate,104) ) AND
( "way_bills"."wbil_date" <= convert(datetime,:EndDate,104) ) )
В общем заработало, всем спасибо.
...
Рейтинг: 0 / 0
10.06.2005, 15:32
    #33112217
iLLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
Александр Старшинин
( "way_bills"."wbil_date" >= convert(datetime,:StartDate,104) ) AND
( "way_bills"."wbil_date" <= convert(datetime,:EndDate,104) ) )

Да, честно говоря, ничего смешного нет. Известная хрень, когда формат не выставлен.
С конвертом-то понятно. Но лучше разобраться с установкой формата в свойствах подключения, сделать по-нормальному и не заставлять сервак заниматься ерундой, типа конвертации констант в константы.
P.S.: Может я и не прав, но это мое мнение.
...
Рейтинг: 0 / 0
10.06.2005, 15:48
    #33112251
Александр Старшинин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все я сдался, иду за помощью
iLLer Александр Старшинин
( "way_bills"."wbil_date" >= convert(datetime,:StartDate,104) ) AND
( "way_bills"."wbil_date" <= convert(datetime,:EndDate,104) ) )

Да, честно говоря, ничего смешного нет. Известная хрень, когда формат не выставлен.
С конвертом-то понятно. Но лучше разобраться с установкой формата в свойствах подключения, сделать по-нормальному и не заставлять сервак заниматься ерундой, типа конвертации констант в константы.
P.S.: Может я и не прав, но это мое мнение.

В том то и вопрос, что танцы с бубном вокруг формата даты в свойствах подключения результата не дали. Т.е. на компе-то все работает, нет проблем, а вот на КПК категорически отказывается. Хотя может что-то я и не доглядел......
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Все я сдался, иду за помощью / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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