powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / ввод
21 сообщений из 21, страница 1 из 1
ввод
    #34174370
Voitovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Power Builder9
Adaptive Server Anywhere Version 9.0

Как реализовать при вводе новых записей
В поле типа ‘date’ ввод даты из компьютера
Например, 03.12.2006 ?
Записи вводятся в data window
dw_5
, находящемся
На dialog window
W_5 поле ‘date_my’.

СПАСИБО
...
Рейтинг: 0 / 0
ввод
    #34174582
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ll_row = dw_5.InsertRow(0)
dw_5.SetItem(ll_row, "date_my", Today())
...
Рейтинг: 0 / 0
ввод
    #34174932
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже через dot
dw_5.object.date_my[ll_row]=Today()
Может иногда потребоваться
dw_5.object.date_my[ll_row]=datetime(Today())
...
Рейтинг: 0 / 0
ввод
    #34174939
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM
...
Рейтинг: 0 / 0
ввод
    #34174986
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно еще и в Initial Value колонки Today написать
...
Рейтинг: 0 / 0
ввод
    #34176069
PavelBuilder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoitovychPower Builder9
Как реализовать при вводе новых записей
В поле типа ‘date’ ввод даты из компьютера
СПАСИБО

подобные stamp`ы, а именно это ты хочешь сделать - фиксация даты ввода/последней правки надо делать через триггер - просто и элегантно. Кроме того при всей моей не любви к триггерам, здесь это весьма оправданное использование, до кучи можешь еще прописывать имя login`а тогда в случае чего, всегда можно найти того человека и поинтересоваться зачем он что то ... в то то время поправил.
...
Рейтинг: 0 / 0
ввод
    #34176078
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIZА можно еще и в Initial Value колонки Today написать

Надо же - когда-то в 6.5 пробовал - не работало. Даже не поленился проверить в 9.0 - инициализация выражением - все равно не работает.

По этому поводу давным давно для datawindow т.н. ASK-вида ( то есть предназначенные именно для ввода данных) был придуман финт
1) каждой колонке datasource ввода может быть (но может и не быть!) поставлено в соответствие computed поле с именем вида <columnname>_def; естественно - это поле лучше сделать visible=0
2) тип значения выражения этого вычислимого поля должен соответствовать типу column, за исключением - все числовые поля {decimal,number,long} - в данном случае эквивалентны
3) имеется специальный сервис
- который перебирает все columns
- проверяет существование для каждого из них <*>_def - настроек
- проверяет соответствие типов
- вычисляет выражение в <*>_def
- присвавает его сооттетствующей column

Примерно так - в запросе периода отчета имеются column {beg_date и end_date}
Для них в этом же datawindow имеются computed колонки с выражениями
end_date_def.expression = 'Today()'
beg_date_def.expression = 'Date(Year(end_date_def),Month(end_date_def),1)'

В итоге - автоматом получаем запрос на период с начала месяца по текущий день.

***
Более того - точно такой же сервис существует и в режиме postevent - с помошью определения computed полей с именами <*>_post
Этот сервис запускается непосредственно перед Update() - заданные поля , может быть даже и недоступные для редактирования, заполняются по вычисляемым значениям - из других введенных значений или даже просто глобальной функцией.
Например поля Id для inserted строк
g_GetUId("special_options")
...
Рейтинг: 0 / 0
ввод
    #34176274
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhV AIZА можно еще и в Initial Value колонки Today написать

Надо же - когда-то в 6.5 пробовал - не работало. Даже не поленился проверить в 9.0 - инициализация выражением - все равно не работает.
Работает во ВСЕХ версиях - без проблем.
...
Рейтинг: 0 / 0
ввод
    #34176601
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, работало во всех версиях
Просто некоторые пытались проинициализить неверным значением
...
Рейтинг: 0 / 0
ввод
    #34176606
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппРаботает во ВСЕХ версиях - без проблем.

Да точно. Виноват. Работает - но только как ключевое слово "today", но не функция "today()" - этого очень недостаточно.
Как минимум - проинициализировать содержимое column Datawindow с помощью функциональных выражений невозможно. Например - как проинициализировать дату вчерашним днем или началом текущего месяца/квартала/года, имя (или id) юзера ?
...
Рейтинг: 0 / 0
ввод
    #34177368
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhV ФилиппРаботает во ВСЕХ версиях - без проблем.

Да точно. Виноват. Работает - но только как ключевое слово "today", но не функция "today()" - этого очень недостаточно.
Как минимум - проинициализировать содержимое column Datawindow с помощью функциональных выражений невозможно. Например - как проинициализировать дату вчерашним днем или началом текущего месяца/квартала/года, имя (или id) юзера ? создаешь глобальную функцию
Date f_my_date(integer type_date)
и юзаешь также как today :)
...
Рейтинг: 0 / 0
ввод
    #34179694
Владимир2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В data window введена текущая дата
05.12.2006 как с помощью

dw_1.SetItem(ll_new_row, "datepldor", Today())

так и вручную при добавлении

почему поле даты за NULL воспринимает несмотря на то,
что поле заполнено 2-мя способами ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
При выполнении Update
// Update the DataWindow
к нижеидущему коду проблем нет, он работал правильно.
dw_1.SetRedraw (false)
if dw_1.Update() = - 1  then
	rollback;
else
	commit;
end if
dw_1.SetRedraw (true)
Выводится сообщение:

SQLSTATE = 23000
[Sybase][ODBC Driver][Adaptive Server Anywhere] integrity constraint
violation: Column ‘date’ in table “ttt”
cannot be NULL

СПАСИБО
...
Рейтинг: 0 / 0
ввод
    #34179833
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А AcceptText() пробовал перед Update()?
...
Рейтинг: 0 / 0
ввод
    #34179898
Владимир2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА AcceptText() пробовал перед Update()?

НЕТ, еду , ПОПРБУЮ - нет интернета,
поэтому только завтра выход в интернет

СПАСИБО
...
Рейтинг: 0 / 0
ввод
    #34182493
Владимир2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА AcceptText() пробовал перед Update()?

Да , пробовал, но НЕ ТО, как было так и осталось.
В data window 5 полей из одной таблицы,
Поле даты ‘datepldor’ идёт вторым, номерация полей с 1.

если текущую дату успешно с Вашей помощью вводим в поле типа дата таблицы, то за 2 дня сам не в силах решить. Сам, естественно, пытался сделать, но не выходит.Если
гуру можете, прошу о помочь:
Я установил, что :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 1 . текущую дату, например,  07 . 12 . 2006  запишем в поле, сохраним при условии, что с помощью Sybase Central в свойствах 
во вкладке Value установлю ‘current date’. 
При этом другую дату нельзя ввести.
Если даже введу, то после выполнения Update
всё равно будет текущая из компьютера.
Здесь я поменял на выбор текущей даты и уже аварийно не завершается.

 2 . Если с помощью Sybase Central в свойствах убрать 
во вкладке Value ‘current date’, то error:

SQLSTATE =  23000 
[Sybase][ODBC Driver][Adaptive Server Anywhere] integrity constraint 
violation: Column ‘date’ in table “ttt”
cannot be NULL

Код таков:
 1 .В событии Open окна:
dw_1.SetTransObject(SQLCA) 
dw_1.SetRowFocusIndicator(Hand!)
dw_1.Modify("DataWindow.ReadOnly = YES") 

 2 .ниже строка заполняет data window  3   500  записями
и к кнопке отдельной прикреплена:
dw_1.Retrieve()

 3 . к очередной кнопке прикрепил код добавления
пустой строки для заполнения полей новой добавляемой записи:

dw_1.enabled = true 
dw_1.Modify("DataWindow.ReadOnly = NO") 
long	ll_new_row 
ll_new_row = dw_1.InsertRow( 0 )

dw_1.SetFocus()
dw_1.ScrollToRow(ll_new_row)
dw_1.SetColumn( 1 )
// 1  dw_1.AcceptText()  пробовал эту строку
dw_1.object.datepldor[ll_new_row]=Today()

// пробовал и ниже идущую строку
// 2  dw_1.object.datepldor[ll_new_row]=datetime(Today())
dw_1.AcceptText()  // suggest from forum , но к успеху не привело
СПАСИБО
...
Рейтинг: 0 / 0
ввод
    #34184863
Igor Domnith
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В сообщнгии о ошибке приведена ссілка на поле <date> в таблице <ttt>
>>SQLSTATE = 23000
>>[Sybase][ODBC Driver][Adaptive Server Anywhere] integrity constraint
>>violation: Column ‘date’ in table “ttt”
>>cannot be NULL
А в коде скрипта <datepldor>
>>dw_1.object.datepldor[ll_new_row]=Today()
Это в датавиндов название колонки изменено или может это различные поля?

Неплохо было привести структуру таблицы
и проверить установлено ли Updateable Column для date/pldor/
...
Рейтинг: 0 / 0
ввод
    #34185052
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть, не выбрано, что это поле обновляемое
А мы тут всем форумом трх...ся
В данном случае можно всего ожидать
...
Рейтинг: 0 / 0
ввод
    #34185552
Владимир2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНеплохо было привести структуру таблицы
и проверить установлено ли Updateable Column для date/pldor/

авторМожет быть, не выбрано, что это поле обновляемое
А мы тут всем форумом трх...ся
В данном случае можно всего ожидать

СПАСИБО ВСЕМ ЗА ЖЕЛАНИЕ ПОМОЧЬ,
Я К СОЖАЛЕНИЮ НЕ В РЕЖИМЕ ONLINE
(нет интернета) и нужно время
на проверку того, что я натворил.
...
Рейтинг: 0 / 0
ввод
    #34185573
Владимир2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
 1 . текущую дату, например,  07 . 12 . 2006  запишем в поле, сохраним при условии, что с помощью Sybase Central в свойствах 
во вкладке Value установлю ‘current date’. 
При этом другую дату нельзя ввести.
Если даже введу, то после выполнения Update
всё равно будет текущая из компьютера.
Здесь я поменял на выбор текущей даты и уже аварийно не завершается.

если бы поле не было обновляемым, то текущая дата
бы не записывалась, я так понимаю?
...
Рейтинг: 0 / 0
ввод
    #34185692
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текущую дату у тебя СУБД отрабатывает, а не dw
Так что похоже все так и есть
...
Рейтинг: 0 / 0
ввод
    #34188899
Igor Domnith
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<<если бы поле не было обновляемым, то текущая дата
<<бы не записывалась, я так понимаю?

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


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