powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Идиотский баг!
20 сообщений из 20, страница 1 из 1
Идиотский баг!
    #32820321
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В dw_1 есть поле "order_date". При открытии окна туда автоматически добавляется текущая дата. Теперь, если пользователь табом (или мышкой) проходит по этому полю ничего не меняя (или меняя), то после нажатия на кнопочку "save" ( dw_1.Update() ), в БД сохраняется все, как надо. НО! Если пользователь не зашел в поле "order_date" вообще, то в БД сохраняется дата на один день меньше! Проблему решил проверкой: заходил ли клиент в поле "order_date". Но это же не есть хорошо. Кто-нибудь сталкивался с такой проблемой?
PB 8.0 / Access
...
Рейтинг: 0 / 0
Идиотский баг!
    #32820404
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RiskaВ dw_1 есть поле "order_date". При открытии окна туда автоматически добавляется текущая дата. Теперь, если пользователь табом (или мышкой) проходит по этому полю ничего не меняя (или меняя), то после нажатия на кнопочку "save" ( dw_1.Update() ), в БД сохраняется все, как надо. НО! Если пользователь не зашел в поле "order_date" вообще, то в БД сохраняется дата на один день меньше! Проблему решил проверкой: заходил ли клиент в поле "order_date". Но это же не есть хорошо. Кто-нибудь сталкивался с такой проблемой?
PB 8.0 / Access
А как добавляется текущая дата - через INITIAL или SETITEM ? И куда именно - в существующие записи или на новые ?
...
Рейтинг: 0 / 0
Идиотский баг!
    #32820414
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм... Вообще-то, к подобным вопросам неплохо бы прилагать скрипты связанных событий (в вашем случае это, как минимум, itemchanged), синтаксис DW и анализ того, что отсылается в БД.
А так - ответ простой - это ваш subj.
...
Рейтинг: 0 / 0
Идиотский баг!
    #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
Идиотский баг!
    #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
Идиотский баг!
    #32820756
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest_1Случайно в таблице MS Access не стоит в поле значение по умолчанию - текущая дата? Файл с БД лежит на другой машине? Может проверить совпадает ли дата/время на машинах?
БД лежит на другой машине. Даты совпадают. По умолчанию ничего нет.
Можно было бы искать разумное объяснение, если бы при прохождении курсора баг бы оставался. Но на событиях получения и потери фокуса ничего не написано, а баг сам собой исчезает.
...
Рейтинг: 0 / 0
Идиотский баг!
    #32820866
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RiskaМожно было бы искать разумное объяснение, если бы при прохождении курсора баг бы оставался. Но на событиях получения и потери фокуса ничего не написано, а баг сам собой исчезает.
Обычно это бывает, если перед сохранением не вызвать dw.AcceptText().
...
Рейтинг: 0 / 0
Идиотский баг!
    #32820951
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000 RiskaМожно было бы искать разумное объяснение, если бы при прохождении курсора баг бы оставался. Но на событиях получения и потери фокуса ничего не написано, а баг сам собой исчезает.
Обычно это бывает, если перед сохранением не вызвать dw.AcceptText().
AcceptText никакого влияния на данные, введенные через SetItem не оказывает. Пока это действительно выглядит, как идиотский баг.
...
Рейтинг: 0 / 0
Идиотский баг!
    #32820998
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Riska При открытии окна туда автоматически добавляется текущая дата.
А зачем через переменные и SetItem?
Не проще ли прямо в datawindow прописать today в свойство Initial ( Column Specifications -> order_date -> Initial )
Причем именно так - без каких бы то ни было скобок.

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

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

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

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

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

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

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

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

imho из-за этого ...
тогда как обЪяснитъ то, что при прохождении курсора все нормалъно?
можно погадать, только зачем ??? поле datetime а в него date суют, вот и subj ;)
...
Рейтинг: 0 / 0
Идиотский баг!
    #32822078
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставлю бокал пива на то, что если заменить
Код: plaintext
date ld_today = Today()
на
Код: plaintext
1.
date ld_today
ld_today = Today()
то все заработает :)
...
Рейтинг: 0 / 0
Идиотский баг!
    #32824745
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexis glinskiможно погадать, только зачем ??? поле datetime а в него date
Access нормалъно работает и с date . Он сам добавляет "нолики" ('00:00:00') на время.
...
Рейтинг: 0 / 0
Идиотский баг!
    #32824830
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyСтавлю бокал пива на то, что если заменить
Код: plaintext
date ld_today = Today()
на
Код: plaintext
1.
date ld_today
ld_today = Today()
то все заработает :)
Действителъно баг пропал!
По поводу бокала: будете у нас в Израиле, заходите!
...
Рейтинг: 0 / 0
Идиотский баг!
    #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
20 сообщений из 20, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Идиотский баг!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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