Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Идиотский баг! / 20 сообщений из 20, страница 1 из 1
09.12.2004, 11:59
    #32820321
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
В dw_1 есть поле "order_date". При открытии окна туда автоматически добавляется текущая дата. Теперь, если пользователь табом (или мышкой) проходит по этому полю ничего не меняя (или меняя), то после нажатия на кнопочку "save" ( dw_1.Update() ), в БД сохраняется все, как надо. НО! Если пользователь не зашел в поле "order_date" вообще, то в БД сохраняется дата на один день меньше! Проблему решил проверкой: заходил ли клиент в поле "order_date". Но это же не есть хорошо. Кто-нибудь сталкивался с такой проблемой?
PB 8.0 / Access
...
Рейтинг: 0 / 0
09.12.2004, 12:18
    #32820404
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
RiskaВ dw_1 есть поле "order_date". При открытии окна туда автоматически добавляется текущая дата. Теперь, если пользователь табом (или мышкой) проходит по этому полю ничего не меняя (или меняя), то после нажатия на кнопочку "save" ( dw_1.Update() ), в БД сохраняется все, как надо. НО! Если пользователь не зашел в поле "order_date" вообще, то в БД сохраняется дата на один день меньше! Проблему решил проверкой: заходил ли клиент в поле "order_date". Но это же не есть хорошо. Кто-нибудь сталкивался с такой проблемой?
PB 8.0 / Access
А как добавляется текущая дата - через INITIAL или SETITEM ? И куда именно - в существующие записи или на новые ?
...
Рейтинг: 0 / 0
09.12.2004, 12:20
    #32820414
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Гм... Вообще-то, к подобным вопросам неплохо бы прилагать скрипты связанных событий (в вашем случае это, как минимум, itemchanged), синтаксис DW и анализ того, что отсылается в БД.
А так - ответ простой - это ваш subj.
...
Рейтинг: 0 / 0
09.12.2004, 12:55
    #32820561
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
ASCRUSА как добавляется текущая дата - через INITIAL или SETITEM ? И куда именно - в существующие записи или на новые ?
Открывается окно и срабатывает событие кнопки "New":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
long ll_new_row
date ld_today = Today()

ll_new_row = dw_2.InsertRow( 0 )

dw_2.ScrollToRow(ll_new_row)
dw_2.SetFocus()

dw_2.SetItem(ll_new_row, 'order_date', ld_today)
На кнопке "Save" идут разные проверки, а потом
Код: plaintext
dw_2.Update()
...
Рейтинг: 0 / 0
09.12.2004, 13:34
    #32820675
Guest_1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Riska ASCRUSА как добавляется текущая дата - через INITIAL или SETITEM ? И куда именно - в существующие записи или на новые ?
Открывается окно и срабатывает событие кнопки "New":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
long ll_new_row
date ld_today = Today()

ll_new_row = dw_2.InsertRow( 0 )

dw_2.ScrollToRow(ll_new_row)
dw_2.SetFocus()

dw_2.SetItem(ll_new_row, 'order_date', ld_today)
На кнопке "Save" идут разные проверки, а потом
Код: plaintext
dw_2.Update()


Случайно в таблице MS Access не стоит в поле значение по умолчанию - текущая дата? Файл с БД лежит на другой машине? Может проверить совпадает ли дата/время на машинах?
...
Рейтинг: 0 / 0
09.12.2004, 13:58
    #32820756
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Guest_1Случайно в таблице MS Access не стоит в поле значение по умолчанию - текущая дата? Файл с БД лежит на другой машине? Может проверить совпадает ли дата/время на машинах?
БД лежит на другой машине. Даты совпадают. По умолчанию ничего нет.
Можно было бы искать разумное объяснение, если бы при прохождении курсора баг бы оставался. Но на событиях получения и потери фокуса ничего не написано, а баг сам собой исчезает.
...
Рейтинг: 0 / 0
09.12.2004, 14:22
    #32820866
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
RiskaМожно было бы искать разумное объяснение, если бы при прохождении курсора баг бы оставался. Но на событиях получения и потери фокуса ничего не написано, а баг сам собой исчезает.
Обычно это бывает, если перед сохранением не вызвать dw.AcceptText().
...
Рейтинг: 0 / 0
09.12.2004, 14:36
    #32820951
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Dim2000 RiskaМожно было бы искать разумное объяснение, если бы при прохождении курсора баг бы оставался. Но на событиях получения и потери фокуса ничего не написано, а баг сам собой исчезает.
Обычно это бывает, если перед сохранением не вызвать dw.AcceptText().
AcceptText никакого влияния на данные, введенные через SetItem не оказывает. Пока это действительно выглядит, как идиотский баг.
...
Рейтинг: 0 / 0
09.12.2004, 14:45
    #32820998
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Riska При открытии окна туда автоматически добавляется текущая дата.
А зачем через переменные и SetItem?
Не проще ли прямо в datawindow прописать today в свойство Initial ( Column Specifications -> order_date -> Initial )
Причем именно так - без каких бы то ни было скобок.

А насчет бага - любопытно. Можно сделать маленький изолированный примерчик?
...
Рейтинг: 0 / 0
09.12.2004, 15:52
    #32821264
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
ЗоринАндрейНе проще ли прямо в datawindow прописать today в свойство Initial ( Column Specifications -> order_date -> Initial )
Причем именно так - без каких бы то ни было скобок.
Так работает. Спасибо.
...
Рейтинг: 0 / 0
09.12.2004, 18:00
    #32821692
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
order_date в базе date или datetime ???
...
Рейтинг: 0 / 0
09.12.2004, 18:39
    #32821792
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
alexis glinski order_date в базе date или datetime ???
datetime
...
Рейтинг: 0 / 0
09.12.2004, 19:20
    #32821882
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
вот в SetItem и надо datetime передавать ;)

Код: plaintext
datetime ldt_Today = DateTime( Today() )

imho из-за этого ...
...
Рейтинг: 0 / 0
09.12.2004, 19:22
    #32821889
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
alexis glinskiвот в SetItem и надо datetime передавать ;)

Код: plaintext
datetime ldt_Today = DateTime( Today() )

imho из-за этого ...
Да кстати правильно замечено - SetItem абсолютно не проверяет, что там в него передают, к типам не приводит, имеет тип any и получить кучу ошибок, а то и вылетаний в случае его неправильного заполнения совсем недолго.
...
Рейтинг: 0 / 0
09.12.2004, 19:24
    #32821891
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
alexis glinskiвот в SetItem и надо datetime передавать ;)

Код: plaintext
datetime ldt_Today = DateTime( Today() )

imho из-за этого ...
тогда как обЪяснитъ то, что при прохождении курсора все нормалъно?
...
Рейтинг: 0 / 0
09.12.2004, 19:42
    #32821933
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Riska alexis glinskiвот в SetItem и надо datetime передавать ;)

Код: plaintext
datetime ldt_Today = DateTime( Today() )

imho из-за этого ...
тогда как обЪяснитъ то, что при прохождении курсора все нормалъно?
можно погадать, только зачем ??? поле datetime а в него date суют, вот и subj ;)
...
Рейтинг: 0 / 0
09.12.2004, 23:58
    #32822078
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Ставлю бокал пива на то, что если заменить
Код: plaintext
date ld_today = Today()
на
Код: plaintext
1.
date ld_today
ld_today = Today()
то все заработает :)
...
Рейтинг: 0 / 0
12.12.2004, 10:38
    #32824745
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
alexis glinskiможно погадать, только зачем ??? поле datetime а в него date
Access нормалъно работает и с date . Он сам добавляет "нолики" ('00:00:00') на время.
...
Рейтинг: 0 / 0
12.12.2004, 14:36
    #32824830
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Anatoly MoskovskyСтавлю бокал пива на то, что если заменить
Код: plaintext
date ld_today = Today()
на
Код: plaintext
1.
date ld_today
ld_today = Today()
то все заработает :)
Действителъно баг пропал!
По поводу бокала: будете у нас в Израиле, заходите!
...
Рейтинг: 0 / 0
12.12.2004, 21:06
    #32824972
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идиотский баг!
Riska Anatoly MoskovskyСтавлю бокал пива на то, что если заменить
Код: plaintext
date ld_today = Today()
на
Код: plaintext
1.
date ld_today
ld_today = Today()
то все заработает :)
Действителъно баг пропал!

Это не баг. В первом случае значение вычисляется при компиляции приложения, а во втором - при выполнении.
Такое поведение описано в доке: PowerScript Reference -> PowerScript Topics -> Declarations -> Declaring Variables -> Syntax of a variable declaration -> Initial values for variables, раздел Specifying an expression as an initial value.
Там даже пример дословно повторяет Ваш.

По поводу бокала: будете у нас в Израиле, заходите!
Непременно :)
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Идиотский баг! / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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