30.01.2002, 12:22 | #1 |
Moderator
|
Обращение к полю таблицы
Есть форма. Помещаю в DataSource таблицу Unit. Создаю button, переопределяю метод clicked. В нем я хочу получать текущее значение поля UnitId из таблицы Unit. Перемещение по таблице происходит с помощью grid, расположенного на этой же форме. Как мне обратиться к этому полю, текущей записи ?
Пробовал так: Unit un; StaticText.text(un.UnitId); Данный код возвращает пустую строку. В принципе это понятно. Но почему не работают следующие варианты: 1) Unit_ds.UnitId 2) this.UnitId, если я вызываю это из метода, принадлежащего таблице, которая помещена в DataSource какой-либо формы. Спасибо. |
|
30.01.2002, 13:06 | #2 |
Участник
|
Привет!
Точно будет работать конструкция <Имя DataSource'а>.<Имя поля>. Если не работает - выйдите из Аксапты и зайдите вновь Ваши варианты не работают, т.к: 1. Вы имеете датасорс, а не запись таблицы 2. Простите, не понял... Успехов, Андрей Беседин |
|
30.01.2002, 13:36 | #3 |
Moderator
|
Цитата:
Andrew Besedin
Точно будет работать конструкция <Имя DataSource'а>.<Имя поля>. Если не работает - выйдите из Аксапты и зайдите вновь Unit.UnitId или InventTable.ItemId Не работает, хотя эти таблицы и помещены в DataSource формы. Перезагружал Аксапту, не помогло. Собственно говоря, когда я набираю Unit. в ниспадающем списке вообще нет имен полей. 1. Не могли бы Вы объяснить в чем различие в этиз подходах: а) Unit. б) Unit_ds. в) Unit un; un. Как я заметил, только в третьем случае я могу обратиться к полю, хотя список подстановки различен во всех трех случаях. 2. Создаю форму. Помещаю в DataSource таблицу (например Unit). Перекрываю какой-нибудь метод этой таблицы (в DataSource). В этом методе как мне казалось должен работать код: this.<имя поля> Как я понимаю this - указатель на самого себя. Если я употребляю его в методе таблицы, то указывать он должен на саму таблицу, а следовательно я могу добраться до любого ее поля. Ан нет - не работает. |
|
30.01.2002, 13:51 | #4 |
Участник
|
Скорее всего, Ваш датасорс называется Unit_1 (или InventTable_1). Лучше всего опубликуйте здесь картинку с деревом Вашей формы - станет яснее.
Разница (кратко) 1. <Имя Datasource> вернет указатель на ТЕКУЩУЮ запись соответств. таблицы. То есть, после точки Вы будете видеть все поля и методы ТАБЛИЦЫ 2. <Имя Datasource>_DS - возвращает экземпляр класса QueryRun (см. AOT/System Documentation/Classes - там немного про него написано) 3. Unit un; Это всего лишь табличная переменная. Сразу после объявления она ничему не равна Теперь насчет 2-го подхода. Вы опять видите методы КЛАССА QURYRUN, а не таблицы.
__________________
С уважением, Андрей Беседин |
|
30.01.2002, 14:39 | #5 |
Moderator
|
Спасибо за ответ.
Я прикрепил картинку с деревом моей формы. На ней видны все DataSource. Также на рисунке внизу представлен метод, в котором я и пытаюсь обратиться к полю таблицы. |
|
30.01.2002, 15:08 | #6 |
сибиряк
|
;
поставьте после
void clicked() { .. символ ";" --> void clicked() { ; Unit.Id; Очень часто помогает
__________________
С уважением, Вячеслав. |
|
30.01.2002, 15:20 | #7 |
Moderator
|
Спасибо помогло.
Раньше знал, но сейчас не догадался. :-)) |
|
31.01.2002, 11:59 | #8 |
Продавец игрушек
|
Угу, об это писалось уже достаточно давно:
http://www.axforum.info/forums/showt...s=&threadid=53
__________________
С уважением, Роман Кошелев. |
|