Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / ввод / 21 сообщений из 21, страница 1 из 1
04.12.2006, 12:39
    #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
04.12.2006, 13:28
    #34174582
AIZ
AIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
ll_row = dw_5.InsertRow(0)
dw_5.SetItem(ll_row, "date_my", Today())
...
Рейтинг: 0 / 0
04.12.2006, 14:43
    #34174932
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
Тоже через dot
dw_5.object.date_my[ll_row]=Today()
Может иногда потребоваться
dw_5.object.date_my[ll_row]=datetime(Today())
...
Рейтинг: 0 / 0
04.12.2006, 14:44
    #34174939
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
RTFM
...
Рейтинг: 0 / 0
04.12.2006, 14:55
    #34174986
AIZ
AIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
А можно еще и в Initial Value колонки Today написать
...
Рейтинг: 0 / 0
04.12.2006, 21:51
    #34176069
PavelBuilder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
VoitovychPower Builder9
Как реализовать при вводе новых записей
В поле типа ‘date’ ввод даты из компьютера
СПАСИБО

подобные stamp`ы, а именно это ты хочешь сделать - фиксация даты ввода/последней правки надо делать через триггер - просто и элегантно. Кроме того при всей моей не любви к триггерам, здесь это весьма оправданное использование, до кучи можешь еще прописывать имя login`а тогда в случае чего, всегда можно найти того человека и поинтересоваться зачем он что то ... в то то время поправил.
...
Рейтинг: 0 / 0
04.12.2006, 22:05
    #34176078
ZhV
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
05.12.2006, 03:04
    #34176274
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
ZhV AIZА можно еще и в Initial Value колонки Today написать

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

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

Да точно. Виноват. Работает - но только как ключевое слово "today", но не функция "today()" - этого очень недостаточно.
Как минимум - проинициализировать содержимое column Datawindow с помощью функциональных выражений невозможно. Например - как проинициализировать дату вчерашним днем или началом текущего месяца/квартала/года, имя (или id) юзера ? создаешь глобальную функцию
Date f_my_date(integer type_date)
и юзаешь также как today :)
...
Рейтинг: 0 / 0
06.12.2006, 11:13
    #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
06.12.2006, 11:46
    #34179833
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
А AcceptText() пробовал перед Update()?
...
Рейтинг: 0 / 0
06.12.2006, 11:57
    #34179898
Владимир2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
авторА AcceptText() пробовал перед Update()?

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

СПАСИБО
...
Рейтинг: 0 / 0
07.12.2006, 11:09
    #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
08.12.2006, 01:50
    #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
08.12.2006, 08:43
    #34185052
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
Может быть, не выбрано, что это поле обновляемое
А мы тут всем форумом трх...ся
В данном случае можно всего ожидать
...
Рейтинг: 0 / 0
08.12.2006, 11:22
    #34185552
Владимир2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ввод
авторНеплохо было привести структуру таблицы
и проверить установлено ли Updateable Column для date/pldor/

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

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

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

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


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