24.05.2011, 19:56 | #1 |
Участник
|
Динамическое обращение к полю таблицы по названию(номеру) возможно ли?
(Ведь есть функции возврата номера и имени) Необходимо динамически изменить значение поля зная его имя (номер), не используя хардкод. * Могу значения полей поменять через SQL, но триггеры Nav тогда не сработают. |
|
24.05.2011, 21:58 | #2 |
Участник
|
Я не понял, что нужно сделать ))
|
|
24.05.2011, 23:22 | #3 |
MCTS
|
FieldRef/RecordRef - не об этом речь?
|
|
25.05.2011, 13:23 | #4 |
Участник
|
Цель: Дать возможность юзеру группового изменения значения любого количества полей в списке строк любой таблицы.
Я хочу дать пользователю список полей(временная табличка). Затем он проставляет напротив них те значения, которые ему нужно. По кнопке ОК обновляются значения (со всеми триггерами). Список полей(+ название) у меня есть, как обратиться мне к полю чтобы проставить значение? Хочу избежать хардкода или дополнительной коррекции, и разместить в нужных формах(списках) |
|
25.05.2011, 15:02 | #5 |
Участник
|
Цитата:
Сообщение от Freinchman
Цель: Дать возможность юзеру группового изменения значения любого количества полей в списке строк любой таблицы.
Я хочу дать пользователю список полей(временная табличка). Затем он проставляет напротив них те значения, которые ему нужно. По кнопке ОК обновляются значения (со всеми триггерами). Список полей(+ название) у меня есть, как обратиться мне к полю чтобы проставить значение? Хочу избежать хардкода или дополнительной коррекции, и разместить в нужных формах(списках) Fld_ref := FIELD(НомерПоля); Fld_ref.VALIDATE(НовоеЗначение); MODIFY; Fld_Ref - переменная типа FieldRef |
|
25.05.2011, 23:30 | #6 |
Участник
|
Цитата:
Во-вторых надо RecRef'ом встать на определёную запись (через GET или FIND) и потом только изменять требуемыe поля в записи через FieldRef НО: Вот здесь и для меня непонятно, в чём конкретно задача: если надо изменить определённые поля ВО ВСЕХ записях таблицы, тогда всё просто Код: RecRef.OPEN('номер таблицы'); IF recref.FINDSET THEN BEGIN REPEAT FieldRef := recref.FIELD('номер поля 1 '); FieldRef.VALIDATE('AAA'); FieldRef := recref.FIELD('номер поля 2 '); FieldRef.VALIDATE('12345'); RecRef.MODIFY; UNTIL RecRef.NEXT = 0; END; Какая-то супер форма-список ВСЕХ записей таблицы, где напротив определённой записи user выбирает требуемые поля и к каждому полю проставляет новое значение? Если задача состоит в этом, то осуществить это очень трудоёмко, если вообще возможно. Остальные техн. дополнения (но без ниx по-моему нельзя) уже давно осущствлены в стандарте (в Mapping), хотя и поверхностно, но партнеры на то и партнеры, чтобы хорошую вещь усовершенствовать: надо будет руками проверять для каждого поля: - подходит ли новое значение к типу поля; - не превышает ли размер нового значения макс. допустимую величину (напр. Техт30 в Техт50) - подходят ли OptionValue для полей типа Option (напр. допустимые OptionValue в поле: 1,2,3, a user шарахет в него 99). - то же самое касается BOOLEAN-полей - Вы хотите не просто присваивать полям значения, а через VALIDATE: а про TableRelation в валидируемом поле подумали? |
|
26.05.2011, 10:12 | #7 |
Участник
|
Цитата:
Цитата:
Сообщение от AlexB
Остальные техн. дополнения (но без ниx по-моему нельзя) уже давно осущствлены в стандарте (в Mapping), хотя и поверхностно, но партнеры на то и партнеры, чтобы хорошую вещь усовершенствовать:
надо будет руками проверять для каждого поля: - подходит ли новое значение к типу поля; - не превышает ли размер нового значения макс. допустимую величину (напр. Техт30 в Техт50) - подходят ли OptionValue для полей типа Option (напр. допустимые OptionValue в поле: 1,2,3, a user шарахет в него 99). - то же самое касается BOOLEAN-полей - Вы хотите не просто присваивать полям значения, а через VALIDATE: а про TableRelation в валидируемом поле подумали? Я вставила все эти проверки на совпадение типов и рангов вводимого значения (кроме того, к изменению разрешены поля не всех типов). И есть еще одно но! которое упростило мне задачу: свою процедуру я писала исключительно для себя, чтобы облегчить себе жисть (т.е. предполагается что пользоваться подобной обработкой будет не простой пользователь, а администратор системы, которому иногда, время от времени, приходиится менять значения некоторых полей во всей таблице. Н-р, у нас недавно возникла необходимость удалить из некоторых таблиц лишние поля, а их, как известно, сначала нужно обнулить. И чтобы не писать каждый раз для каждой новой таблицы подобную обратоку, пришлось написать такую..... псевдо универсальную Было бы конечно удобно иметь подобную функцию с возможностью фильтрации записей таблицы. Но пока передо мной такой задачи не стояло, я и не обдумывала сей вариант. |
|
30.05.2011, 01:26 | #8 |
Участник
|
"Постановка" задачи Автором, видимо, крик души. "У пользователей постоянно возникает потребность что-то менять в любых таблицах. Я уже задолбался рисовать формы и выводить разные поля на них - все равно приходится в каждом случае делать что-то, а я уже устал от этого. Как бы сделать так, чтобы цифры сами менялись как надо пользователю в самых разных таблицах...", примерно так думаю это должно звучать.
Нарисовать можно все, что угодно, но значения тех самых полей либо придется руками вбивать сначала куда-то, а потом в любые поля любой таблицы, либо привлекать искусственный интеллект для этого. |
|