Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
Коллеги, подскажите как бороться с дурью...
Среда - 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-х годов, с тех пор был большой перерыв и вот все заново.....
9 июн 05, 14:43    [1609890]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Прохожий1111
Guest
Попробуй изменить тип аргумента на datetime
9 июн 05, 15:00    [1610015]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Прохожий1111
Guest
"только как и на что"?
Там же в "мастерской" работы с запросами. Очевидно это переменная :StartDate
9 июн 05, 15:03    [1610038]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
ЗоринАндрей
Member

Откуда: Санкт-Петербург
Сообщений: 3004
А может попробовать явно задать формат в DBParm ?
SQLCA.DBParm = "..........,Date='dd.mm.yyyy'"
9 июн 05, 15:04    [1610046]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
ЗоринАндрей
А может попробовать явно задать формат в DBParm ?
SQLCA.DBParm = "..........,Date='dd.mm.yyyy'"

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

Попробуй изменить тип аргумента на datetime
сегодня, 15:00 Там же в "мастерской" работы с запросами. Очевидно это переменная :StartDate

И это пробовал, также не спасает.
Бред какой то. Пробовал даже определить параметр как String, а потом в запросе писать Date(:StartDate). Только в этом случае случае выдает "не могу конвертировать 0 в timestamp"
9 июн 05, 15:31    [1610226]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Прохожий1111
Guest
Это конечно через ж...у, но если возможно, измени тип поля в базе с timestamp на date или datetime.
9 июн 05, 15:44    [1610302]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
PL99
Member

Откуда: Moscow
Сообщений: 1367
Если я все правильно перепутал, аналогичная ситуация,причем именно с таким числом (14.07.1990), возникала при попытках модификации sql-запроса в пятой версии PB в Win9x. При создании DW ошибок не было. Обходили это дело как обычно - через экспорт в файл.


Со строкой тоже можно попробовать поработать, только я бы явно указал вот такой формат
"yyyy-mm-dd hh:mm:ss"
9 июн 05, 15:52    [1610348]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
Прохожий1111
Это конечно через ж...у, но если возможно, измени тип поля в базе с timestamp на date или datetime.


Будете смеяться, но...
Пробовал менять тип поля wbil_date с даты на DateTime. На Timestamp не пробовал, но думаю, что не спасет.
Может еще какие-то мысли будут или опять в Sybase обращаться????????
9 июн 05, 15:52    [1610350]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
PL99
Если я все правильно перепутал, аналогичная ситуация,причем именно с таким числом (14.07.1990), возникала при попытках модификации sql-запроса в пятой версии PB в Win9x. При создании DW ошибок не было. Обходили это дело как обычно - через экспорт в файл.

Не понял, как это спасет от беды. Т.е. дальше то что???


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


Пробовать не пробовал, но уж больно как то влом руками все приводить к этому формату. Ввел человек в окне ввода критерий отбора в формате "09.06.02005", а мне его переворачивать!!!??
Формат "dd.mm.yyy hh:mm:ss" как-то привычнее....
9 июн 05, 15:57    [1610379]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
pbdeveloper
Member

Откуда: Columbus, oh
Сообщений: 15
если вы работаете в Oracle можно еще попробовать так:

"way_bills"."wbil_date" >= to_date(:StartDate, "дд/мм/гггг")
9 июн 05, 17:09    [1610737]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
pbdeveloper
если вы работаете в Oracle можно еще попробовать так:

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


Если бы я работал в любимом мною Оракле я бы горя не знал. Это то мы знаем, плавали.
А здесь ASA 9.0.2 да еще под КПК. Сказано в начале сообщения. И главное тут явно проблема не в базе, а в PocketBuilder.
9 июн 05, 17:12    [1610753]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
pbdeveloper
если вы работаете в Oracle можно еще попробовать так:

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

А кто мешает для ASA аналогично написать:
"way_bills"."wbil_date" >= CONVERT(:StartDate, 104)
и передавать параметр строкой. Или же попробовать для ASA указать опцию БД:
SET OPTION PUBLIC.DATE_ORDER = 'DMY'
9 июн 05, 17:19    [1610783]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
ASCRUS
[quot pbdeveloper]если вы работаете в Oracle можно еще попробовать так:

"way_bills"."wbil_date" >= to_date(:StartDate, "дд/мм/гггг")
А кто мешает для ASA аналогично написать:
"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 указать опцию БД:
SET OPTION PUBLIC.DATE_ORDER = 'DMY'

Это я уже пробовал
9 июн 05, 17:32    [1610838]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Странно, в BOL и такого SQLState даже нет. А нельзя как нибудь через SQLPreview вывести полный текст запроса, что же PB посылает то на ASA. Кстати интересно, если не через PB в ASA запрос выполнить, будет ли работать ?
9 июн 05, 17:40    [1610891]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
ASCRUS
Странно, в BOL и такого SQLState даже нет. А нельзя как нибудь через SQLPreview вывести полный текст запроса, что же PB посылает то на ASA. Кстати интересно, если не через PB в ASA запрос выполнить, будет ли работать ?


Запрос без PB прекрасно работает. Все как часы... Было бы странно, чтобы такая простая вещь не работала. И повторяю, что на обычном компе, не смотря на ошибку в процессе содания DW, все работает. А вот на КПК окно не открывается и ругается на ошибку преобразования типа.......
9 июн 05, 17:43    [1610906]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
ЗоринАндрей
Member

Откуда: Санкт-Петербург
Сообщений: 3004
RTFM!!!!

CONVERT( datetime , <date>, 104 )
9 июн 05, 17:44    [1610909]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
ЗоринАндрей
RTFM!!!!

CONVERT( datetime , <date>, 104 )

Это да - тип то я забыл поставить для CONVERT. Но что то мне слабо верится, что Александр на это купился :)
9 июн 05, 17:46    [1610921]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
ЗоринАндрей
Member

Откуда: Санкт-Петербург
Сообщений: 3004
Попробовал в PB9 задать формат в профиле. Сгенерился dbparm вот такого вида:
SQLCA.DBParm = "..... ,Date=' \''dd.mm.yyyy\'' '"
что чуток отличается от того что я постил ранее.
9 июн 05, 17:49    [1610944]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
ASCRUS
ЗоринАндрей
RTFM!!!!

CONVERT( datetime , <date>, 104 )

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


Ладно, всем спасибо. Я уже отписался в Sybase. Посмотрим, что там ответят. Будут новости сообщу в чем была загвоздка.
9 июн 05, 17:52    [1610964]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
pbdeveloper
Member

Откуда: Columbus, oh
Сообщений: 15
а что если конвертировать оба поля:
CONVERT("way_bills"."wbil_date", 104) >= CONVERT(:StartDate, 104)
9 июн 05, 17:54    [1610973]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Black Savage
Member

Откуда:
Сообщений: 736
To Александр Старшинин
Когда возникает всякая хрень с датами в запросах, меня всегда выручает стринг.
Т.е. пущай твой юзер работает с Data. Когда будешь вызывать DW, напиши типа:

Retrieve(String(ld_Data, "yyyymmdd"))

Такой формат проходит всегда. Ну и в селекте, соответственно, должен стоять аргумент типа String
10 июн 05, 09:08    [1611850]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
iLLer
Member

Откуда:
Сообщений: 705
Понятное дело, что на одном компе работает, а на другом нет. То что работает на одном не показатель, что оно должно работать на всех.
По поводу формата:
Попробуйте на КПК на ПБ выполнить селект типа:
select *
from table
where field='01.01.1990';
Вот если тут получите ту же ошибку, то все понятно, разбирайтесь с установкой формата даты/датывремени для подключения.
Попробуйте выполнить
select *
from table
where field='1990.01.01';
Проходит? Значит дело в кривых настройках, идем и разбираемся со свойствами подключения.
Для контроля могу посоветовать подключиться с КПК к БД на нормальной машине и Централом поглядеть на свойства подключения. Устанавливаются ли они, эти свойства.
А Sybase тут непричем, пошлют они.
10 июн 05, 13:30    [1613350]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
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) ) )
В общем заработало, всем спасибо.
10 июн 05, 14:42    [1613739]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
iLLer
Member

Откуда:
Сообщений: 705
Александр Старшинин

( "way_bills"."wbil_date" >= convert(datetime,:StartDate,104) ) AND
( "way_bills"."wbil_date" <= convert(datetime,:EndDate,104) ) )

Да, честно говоря, ничего смешного нет. Известная хрень, когда формат не выставлен.
С конвертом-то понятно. Но лучше разобраться с установкой формата в свойствах подключения, сделать по-нормальному и не заставлять сервак заниматься ерундой, типа конвертации констант в константы.
P.S.: Может я и не прав, но это мое мнение.
10 июн 05, 15:32    [1614023]     Ответить | Цитировать Сообщить модератору
 Re: Все я сдался, иду за помощью  [new]
Александр Старшинин
Member

Откуда:
Сообщений: 86
iLLer
Александр Старшинин

( "way_bills"."wbil_date" >= convert(datetime,:StartDate,104) ) AND
( "way_bills"."wbil_date" <= convert(datetime,:EndDate,104) ) )

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


В том то и вопрос, что танцы с бубном вокруг формата даты в свойствах подключения результата не дали. Т.е. на компе-то все работает, нет проблем, а вот на КПК категорически отказывается. Хотя может что-то я и не доглядел......
10 июн 05, 15:48    [1614098]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / PowerBuilder Ответить