Создание свойств и методов формы на языке X++
Создание свойств формы
Вот сейчас начинается самое интересно, наконец-то мы добрались до самого языка X++. Для работы нашей формы и всех ее методов нам необходимо два свойства, которые описываются в методе classDeclaration формы ADO_Form:
public class FormRun extends ObjectRun { // объявляем свойства формы COM Conn; COM RecordSet; }

В тот момент когда форма запустилась необходимо проинициализировать объявленые свойства. Это делается в метода Run формы.
public void run() { // инициализируем переменные как COM-объекты Conn = new COM("ADODB.Connection"); RecordSet = new COM("ADODB.RecordSet"); super(); }
Создание методов формы
Теперь создадим у формы два пользовательских метода, т.е. они будут вызываться не самой формой при выполнении какого либо системного события (как напр. метод Run), а вызов будет инициализировать сам пользователь при нажатии на кнопки.
Метод NewString. Создание строки подключения.
void NewString() { // инициализируем переменную как COM-объект COM DataLinks = new COM("DataLinks"); // вызываем окно настройки OLEDB-соединения Conn.ConnectionString(StringEditConnect.text()); DataLinks.PromptEdit(Conn); // результат устанавливаем в элемент формы StringEditConnect StringEditConnect.text(Conn.ConnectionString()); }
Данный метод будет вызываться при нажатии но кнопку ButtonNewStringConnection и открывать стандартное окно настройки строки OLEDB-соедиения, которое выглядит следующим образом:

Данное окно возвращает строку соединения, которое мы передаем в элемент управления StringEditConnect. Строку соединения можно задать и вручную.
Метод Connect. Выполнение соединения с базой данны и выполнения запроса.
void Connect() { // объявляем локальные переменные int col; int row; str Name; COM Fields; COM Item; COMVariant Value; formStringControl c; // создаем OLEDB-соединение с источником данных, // описанным в StringEditConnect Conn.Open(StringEditConnect.text()); // получаем результат выполнения SQL-запроса, // написанным в StringEditSQL RecordSet.Open(StringEditSQL.text(),Conn); // инициализируем шаг для обхода колонок row = 0; // перебираем все записи в результате запроса, // пока не "наткнемся" на конец (eof) while(!RecordSet.eof()) { // получаем очередное поле записи Fields = RecordSet.Fields(); // перебираем все колонки в этой записи for (col=0; col<=(Fields.Count()-1); col++) { Item = Fields.Item(col); // получаем текущую ячейку Name = Item.Name(); // получаем ее имя Value = Item.Value(); // получаем ее значение // если счетчик еще в нуле, то определяем // имя текущей колонки if (row == 0) { // в колонку (col,0) записываем значение Name Table.cell(col,0).data(Name); // определяем количество колонок Table.columns(col); } // записываем значение ячейки Table.cell(col,row+1).data(Value.bStr()); // определяем количество строк Table.rows(row+1); } // получаем следующую запись в результате SQL-запроса RecordSet.MoveNext(); // увеличиваем шаг обхода колонок row = row + 1; } // закрываем OLEDB-соединение Conn.Close(); }
Данный метод будет вызываться при нажатии но кнопку ButtonConnect. Метод выполняет соединение с базой данных по введенной строке соединения, затем выполняем SQL-запро, введенный в поле StringEditSQL и отображает результат его обработки в таблицу Table.
Описывать каждую строчку кода я не буду, т.к. мне кажется что все должно быть понятно, особенно с написанными комментариями.
Создание методов у кнопок
Для связи кнопок ButtonNewStringConnection и ButtonConnect с методами NewString и Connect, нужно создать у этих кнопок методы cliced, в котором будет происодить вызов необходимых методов.
Для кнопки ButtonNewStringConnection.
void clicked() { // вызываем метод формы NewString element.NewString(); super(); }
Для кнопки ButtonConnect.
void clicked() { // вызываем метод формы Connect element.Connect(); super(); }
Запуск формы
Все готово для запуска формы. Запускаем, вводим строку соединения и SQL-запрос и нажимаем кнопку "Connect".
Я ввел строку соединения к базе данных Northwind, на ходящуюся на SQL-сервере: "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=MAVCOMP" и простейщий запрос по таблице Employees "SELECT * FROM Employees".

У кого не получилось все сделать самостоятельно - можно загрузить файл готового проекта этого шага здесь (4 Кб).
На этом данный шаг в изучении языка X++ я и завершу. Конечно он не охватывает всех тонкостей языка, но является показательным в том, что представляет из себя этот язык.
Автор: Андрей Михайлов aka MAV