|  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 
				__________________ С уважением, Роман Кошелев. | 
|  | 
|  | 
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
| 
 |