AXForum  
Zurück   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 12.09.2006, 10:37   #1  
Iskatel ist offline
Iskatel
Участник
 
86 / 10 (1) +
Registriert seit: 18.09.2006
Angry
Люди, помогите. Я в программировании на C/AL новичок. С толкнулся вот с чем.

На форме есть таблица и текстовые поля, связанные с полями таблицы. Нужно содержание текстового поля передать в глобальную переменную. Не знаю как это сделать.
Alt 12.09.2006, 11:11   #2  
romeo ist offline
romeo
Участник
Benutzerbild von romeo
 
564 / 10 (2) +
Registriert seit: 31.03.2004
Zitat:
Zitat von Programmer Beitrag anzeigen
Люди, помогите. Я в программировании на C/AL новичок. С толкнулся вот с чем.

На форме есть таблица и текстовые поля, связанные с полями таблицы. Нужно содержание текстового поля передать в глобальную переменную. Не знаю как это сделать.
Можно узнать зачем, а не как вы это пытаетесь сделать? Условие задачи ..
Alt 12.09.2006, 11:23   #3  
Greggy_imported ist offline
Greggy_imported
Участник
Benutzerbild von Greggy_imported
 
291 / 10 (1) +
Registriert seit: 24.09.2004
У формы есть переменная Rec которая ссылается на запись таблицы на которой стоит курсор - и соответсвенно присвоить переменной значение поля будет Переменная = Rec.Поле
Alt 12.09.2006, 11:27   #4  
Iskatel ist offline
Iskatel
Участник
 
86 / 10 (1) +
Registriert seit: 18.09.2006
Переменная (не важно какая глобальная или локальная) должна содержать значение текстового поля (Text Box), a не значение поля в таблице. Затем значение этой переменной передать во внешний модуль.
Alt 12.09.2006, 11:30   #5  
romeo ist offline
romeo
Участник
Benutzerbild von romeo
 
564 / 10 (2) +
Registriert seit: 31.03.2004
Zitat:
Zitat von Programmer Beitrag anzeigen
Переменная (не важно какая глобальная или локальная) должна содержать значение текстового поля (Text Box), a не значение поля в таблице. Затем значение этой переменной передать во внешний модуль.
На OnFormat поля передавайте значение в переменную.
Стремно все у вас там как-то...
Alt 12.09.2006, 12:36   #6  
Iskatel ist offline
Iskatel
Участник
 
86 / 10 (1) +
Registriert seit: 18.09.2006
Как именно это сделать: передать значение и где написать?

Например. Есть глобальная переменная N. И поле Number в таблице Blanck Table. На форме есть Text Box, который отображает значения этого поля. Его св-во SourceExpr установлено - Number.

Заранее спасибо.
Alt 12.09.2006, 12:48   #7  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Ну на том же OnAfterGetRecord пишите: N := Rec.Number (я правильно понимаю, что таблица отображается в TableBox?)
Затем передавайте во внешний модуль... (ВнешнийМодуль.SetValue(N))
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Alt 12.09.2006, 12:53   #8  
romeo ist offline
romeo
Участник
Benutzerbild von romeo
 
564 / 10 (2) +
Registriert seit: 31.03.2004
Zitat:
Zitat von Programmer Beitrag anzeigen
Как именно это сделать: передать значение и где написать?

Например. Есть глобальная переменная N. И поле Number в таблице Blanck Table. На форме есть Text Box, который отображает значения этого поля. Его св-во SourceExpr установлено - Number.

Заранее спасибо.
Не знаю в какой момент вам нужно иметь в переменной N значение поля Number таблицы Blanck Table, но достаточно просто написать N := Rec.Number. И все. Переменная Rec представляет записи таблицы, лежащей в соурсе формы (Blanck Table). Если мы обращаемся к ней, указав имя поля, то получаем значение этого поля той записи, на которой находится в данный момент курсор (либо, если обрабатываем в коде, то записи, которую обрабатываем в данный момент).
ПС. Смотрите код других форм. Ваши задачи наверное будут не сильно отличаться от тех, что уже реализованы в нави. Делайте по аналогии, стараясь понять почему так.
И .. потом у вас есть наставник -) А вы его ученик, насколько я понял -)
Alt 12.09.2006, 13:42   #9  
Iskatel ist offline
Iskatel
Участник
 
86 / 10 (1) +
Registriert seit: 18.09.2006
Ваши решения работают. Спасибо за консультацию. Опишу более подробно ситуацию.

Таблица отображается в Table Box. Она работает только на чтение. Text Box содержит значения поля Number. Изменения данных, производящиеся в Text Box, не должны происходить в таблице. Измененные данные должны попасть в переменную N.
Alt 12.09.2006, 14:20   #10  
romeo ist offline
romeo
Участник
Benutzerbild von romeo
 
564 / 10 (2) +
Registriert seit: 31.03.2004
Zitat:
Zitat von Programmer Beitrag anzeigen
Ваши решения работают. Спасибо за консультацию. Опишу более подробно ситуацию.

Таблица отображается в Table Box. Она работает только на чтение. Text Box содержит значения поля Number. Изменения данных, производящиеся в Text Box, не должны происходить в таблице. Измененные данные должны попасть в переменную N.
Предложил бы использовать для этого поле, не привязанное к полю таблицы. Свободный текстбокс со своей переменной в качестве Sourc'a. На OnValidate() этого поля (на OnValidate() нормально отрабатывает ошибку без схлопывания формы) повесить передачу введенного значения во внешний модуль. На OnAfterGetRecord() формы присваивать значение текстбокса из значения поля Number таблицы.
Alt 12.09.2006, 15:37   #11  
Iskatel ist offline
Iskatel
Участник
 
86 / 10 (1) +
Registriert seit: 18.09.2006
Ваше предложение работает.

Но все же желательно, чтобы текстбокс был один, который был бы привязан к полю таблицы и можно было бы изменять эти данные не внося изменений в таблицу, а отправляя это изменение в переменную.
Alt 12.09.2006, 15:51   #12  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Ну расположите текстбокс (сорс - переменная) не на тейблбоксе, в где-нибудь мимо него.
В остальном - все то же самое.
На OnAfterGetRecord получаете в переменную значение поля, на OnValidate отправляете изменение значения переменной в свой "внешний модуль".
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Alt 12.09.2006, 15:56   #13  
romeo ist offline
romeo
Участник
Benutzerbild von romeo
 
564 / 10 (2) +
Registriert seit: 31.03.2004
Zitat:
Zitat von Дуд Beitrag anzeigen
Ну расположите текстбокс (сорс - переменная) не на тейблбоксе, в где-нибудь мимо него.
Почему мимо? Можно и в гриде ..
Alt 12.09.2006, 16:20   #14  
Iskatel ist offline
Iskatel
Участник
 
86 / 10 (1) +
Registriert seit: 18.09.2006
Как имеено получить значение текстбокса, который связан с таблицей, в переменную?
Alt 12.09.2006, 19:34   #15  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Значение текстбокса - это его соурсэкспрешн (может переменная, может поле таблицы...).
Переменная N
Соурсэкспрешн S
N := S;
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Alt 13.09.2006, 12:34   #16  
Iskatel ist offline
Iskatel
Участник
 
86 / 10 (1) +
Registriert seit: 18.09.2006
Огромное спасибо за помощь и предложенные варианты. Разобрался как делать.
Появился еще один вопрос: как получить ID строки?

Со столбцом все понятно. Код будет следующий:

P:=xRec.FIELDNO(xRec."Number office");

где P - переменная, а Number office - второй столбец в таблице Table_2. В результате P содержит 2.

Как примерно тоже самое сделать со сторокой?
Alt 13.09.2006, 12:39   #17  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Вы о чем?
Зачем Вам FIELDNO, что Вы собираетесь с ним делать?
Что Вы подразумеваете под ID строки?
Есть понятие "первичный ключ", который однозначно определяет запись в таблице. Вы об этом?
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Alt 13.09.2006, 12:45   #18  
romeo ist offline
romeo
Участник
Benutzerbild von romeo
 
564 / 10 (2) +
Registriert seit: 31.03.2004
Zitat:
Zitat von Programmer Beitrag anzeigen
Появился еще один вопрос: как получить ID строки?
Ниччего не понимаю ... Ненавижен это. Не навижен )
Alt 13.09.2006, 12:49   #19  
Iskatel ist offline
Iskatel
Участник
 
86 / 10 (1) +
Registriert seit: 18.09.2006
Дуд правильно понял!!!

Переменная P должна содержать значение "первичного ключа" строки, а не столбца.

Извениите! Вновь опечатался.

Переменная P должна содержать "первичный ключ" записи.
Alt 13.09.2006, 12:52   #20  
romeo ist offline
romeo
Участник
Benutzerbild von romeo
 
564 / 10 (2) +
Registriert seit: 31.03.2004
Zitat:
Zitat von Programmer Beitrag anzeigen
Дуд правильно понял!!!

Переменная P должна содержать значение "первичного ключа" строки, а не столбца.

Извениите! Вновь опечатался.

Переменная P должна содержать "первичный ключ" записи.
Создайте временную переменную типа Record, пусть будет ВремКопияРек и делайте вставку в нее, если нужны данные по массиву строк или просто присвоение, то есть :
ВремКопияРек := Rec;
ВремКопияРек.INSERT;
И будет у вас массив ID строк таблицы ...
 


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 17:27 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.