к оглавлению   к 4GL - визуальному программированию

Связывание с данными в WFC

Для получения доступа к данным из проекта Java обычно используются ADO-объекты (ActiveX Data Objects), которые определяют модель программирования данных для WFC-приложений. Основными ADO-объектами являются Connection, Command и Recordset. Объект Connection позволяет соединяться с базой данных, в результате чего можно запрашивать базу данных для получения набора записей. Объект Recordset представляет записи, возвращенные по запросу. Для задания запроса используют либо строку на языке SQL, либо объект Command.

Кроме того, ADO предоставляет компонент DataSource, в котором сочетаются функциональные возможности объектов Connection, Command и Recordset. Информацию о программировании при помощи объектов ADO см. в «ADO Tutorial (VJ + +)» в интерактивной документации к Microsoft ActiveX Data Objects. Классы ADO определены в пакетах com.ms.wfc.data и com.ms.wfc.data.ui.

Примечание Toolbox в Forms Designer предоставляет только элемент управления DataSource; объекты Connection, Command и Recordset используются только в коде.

После получения набора записей (через объект Recordset или компонент DataSource) его можно связать с WFC-компонентом. WFC поддерживает как простое (simple), так и сложное (complex) связывание данных, описанное в следующей таблице.

Тип связывания

Описание

Сложное Обозначает непосредственное взаимоотношение между набором записей и WFC-компонентом.

Простое

Обозначает взаимоотношение между полем в наборе записей и свойством WFC-компонента. Такое связывание называется простым потому, что компоненту не нужны точные знания о протоколе передачи данных или об их источнике.

Обратите внимание, что типы курсора и блокировки набора записей определяют, будут ли данные в наборе записей динамически отражать изменения информации ,в базе данных и могут ли быть изменены данные в наборе записей.

Дополнительную информацию об ADO см. в разделе «Getting Started with ADO 2.0» интерактивной документзации на Microsoft ActiveX Data Objects.

Простое связывание данных

Простое связывание данных обозначает взаимоотношение между полем в наборе записей и свойством WFC-компонента. Когда последнее связано с полем данных, то данные автоматически пересылаются между ними.

Примечание При попытке обновить набор записей, предназначенный только для чтения, набор записей сгенерирует ADO-исключение. Его можно перехватить и присвоить свойству предыдущее значение; в противном случае значение свойства и значение поля не будут совпадать.

Свойства с возможностями связывания

Простое связывание данных в WFC выполняется с помощью компонента DataBinder, который осуществляет и контролирует связывание поля со свойством. Компонент DataBinder связывает свойство, если оно доступно посредством методов, отвечающих следующей структуре:

public <PropertyType>

get<PropertyName>()

public void set<PropertyName>(<PropertyType>)

Обратите внимание, что если в Classlnfo этого компонента свойство помечено как BindableAttribute.YES, то оно значится в окне Properties и на странице проектирования (design page) компонента в DataBinder. (Свойство, которое не обозначено как связываемое (bindable), все же можно связывать программно или вручную, вводя его имя в окне Properties или на странице проектирования.)

Уведомления об изменениях атрибутов

Компонент, имеющий связанное свойство, может сгенерировать событие <propertyName>Changed с целью обозначить изменение значения свойства. Когда это событие происходит, компонент DataBinder помечает данную связку как подозрительную (dirty). Впоследствии, когда пользователь переходит к новой записи или когда программно вызывается метод DataBinder.commitChanges, компонент DataBinder определяет подозрительные связи и обновляет их в наборе записей.

Примечание Если Ваш компонент не предоставляет событие <рrоpertyName>Changed для свойства, связанного посредством компонента DataBinder, то связывание доступно только для чтения, а Ваш компонент будет заблокирован. Чтобы обойти это ограничение, Вы вправе самостоятельно программно управлять связыванием путем чтения-записи набора записей напрямую.

Компонент DataBinder

Компонент DataBinder определен в ADO для выполнения простого связывания данных. Этот компонент создает и контролирует связывание полей в наборе записей и связываемых свойств WFC-компонентов. Подробнее о возможности связывания свойства см. в разделе «Свойства с возможностями связывания».

Хотя один компонент DataBinder может управлять несколькими связываниями, он ассоциируется только с единственным набором записей. Чтобы связывать поля из второго набора записей, нужно использовать другой компонент DataBinder. Кроме того, компонент DataBinder можно использовать только для связывания компонентвв, находящихся на одной и той же форме.

Если компонент со связанным свойством поддерживает уведомление об изменениях этого свойства, то при изменении значения свойства компонент DataBinder помечает эту связь как подозрительную. Набор данных обновляется при переходе пользователя на новую запись или при программном вызове метода DataBinder.commitChanges. Подробности см. в предыдущем разделе «Уведомления об изменениях атрибутов».

Пример

В следующем примере показано, как программно выполнить простое связывание данных с помощью компонента DataBinder. Обратите внимание, что для управления связыванием компонент DataBinder использует массив объектов DataBinding.

import com.ms.wfc.data, *;

import com.ms.wfc.data.ui.*;

import com.ms.wfc.ui.*;

/* Используем компоненты Connection и Recordset

для соединения с .базой данных и получения набора записей. */

Connection с = new Connection();

с. setConnectionSt ring("dsn=myDSN; uid=myUID; pwd=myPWD");

c.open();

Recordset rs = new Recordset();

rs.setActiveConnection(c);

rs.setSource("select * from authors");

rs.open();

/* Создаем компонент DataBinder. Для связи этого

компонента с rs устанавливаем свойство dataSource. */

DataBinder db = new DataBinder();

db.setDataSou rce(rs);

/* Создаем компоненты, свойства которых подлежат связыванию. */

Edit edifl = new Edit();

Edit edit2 = new Edit();

/* Присваиваем свойству связывания компонента DataBinder

массив объектов DataBinding. Этот массив определяет

связывания свойства text каждого компонента Edit

с полями в наборе записей. */

db.setBindings(new DataBinding[] {

new DataBinding(edit1, "text", "firstName"), new DataBinding(edit2, "text", "lastName") } }; }

О свойстве dataSource компонента DataBinder см. в следующем разделе «Сложное связывание данных». Подробнее об использовании компонента DataBinder в Forms Designer см. в главе 4 «Доступ к данным».

Сложное связывание данных

Сложное связывание данных относится к компонентам, которые непосредственно взаимодействуют с набором записей. Компонент со сложным связыванием данных поддерживает свойства dataSource и data Member, описывающие набор записей, с которым он связывается. Обратите внимание, что свойства сложно связываемых компонентов допускают простое связывание посредством компонента DataBinder.

Свойства dataSource и dataMember

Свойство dataSource идентифицирует объект, который реализует интерфейс IDataSource. Объект предоставляет один или несколько наборов записей. Свойство dataMember задает имя набора записей, с которым происходит связывание компонента. Например:

/* Связывание компонента с набором записей "Products",

который предоставлен источником данных ds. */

dbComponent.setDataSource(ds);

dbComponent.setDataMember("Products");

Если свойство dataMember не установлено, выполняетея связывание с набором записей по умолчанию из источника данных. (Можно явно указать на набор записей по умолчанию, присвоив null свойству dataMember.)

/* Связываем компонент с набором записей по умолчанию

из источника данных ds. */ dbComponent.setDataSource(ds);

dbComponent.setDataMember(null); /*

Эта строка не обязательна. */

Заметьте, что компоненты Recordset и DataSource уже реализуют интерфейс IDataSource. Следовательно, можно присвоить один из этих компонентов напрямую свойству dataSource. В этом случае не нужно задавать свойство dataMember:

/* Присвоить свойству dataSource напрямую компонент rs типа Recordset

без установки свойства dataMember. */

dbComponent.setDataSou rce(rs);

Компоненты со сложным связыванием в Visual J++

Visual J++ поддерживает следующие компоненты со сложным связыванием с данными.

Компонент

Описание

DataBinder

 

 

DataGrid

DataNavigator

Связывает поле из набора записей со свойством WFC-компонента. (Хотя компонент DataBinder используется для простого связывания, сам по себе он предоставляет свойства dataSource и dataMember.)

Связывает несколько полей из набора записей и отображает данные в табличном формате.

Позволяет пользователю сменить текущую запись в наборе записей. Все прочие компоненты, связанные с этим же набором записей, обновляются в соответствии с данными в новой текущей строке.

Подробнее об использовании этих компонентов в Forms Designer см. в главе 4 «Доступ к данным».

 


к оглавлению   к 4GL - визуальному программированию

Знаете ли Вы, что такое "усталость света"?
Усталость света, анг. tired light - это явление потери энергии квантом электромагнитного излучения при прохождении космических расстояний, то же самое, что эффект красного смещения спектра далеких галактик, обнаруженный Эдвином Хабблом в 1926 г.
На самом деле кванты света, проходя миллиарды световых лет, отдают свою энергию эфиру, "пустому пространству", так как он является реальной физической средой - носителем электромагнитных колебаний с ненулевой вязкостью или трением, и, следовательно, колебания в этой среде должны затухать с расходом энергии на трение. Трение это чрезвычайно мало, а потому эффект "старения света" или "красное смещение Хаббла" обнаруживается лишь на межгалактических расстояниях.
Таким образом, свет далеких звезд не суммируется со светом ближних. Далекие звезды становятся красными, а совсем далекие уходят в радиодиапазон и перестают быть видимыми вообще. Это реально наблюдаемое явление астрономии глубокого космоса. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 20.10.2019 - 19:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> КОМПЬЮТЕРНО-СЕТЕВАЯ БЕЗОПАСНОСТЬ ДЛЯ ВСЕХ - Карим_Хайдаров.
20.10.2019 - 19:29: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ЗА НАМИ БЛЮДЯТ - Карим_Хайдаров.
19.10.2019 - 18:18: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Марины Мелиховой - Карим_Хайдаров.
18.10.2019 - 14:00: ЭКОЛОГИЯ - Ecology -> Биохимия мозга от проф. С.В. Савельева и не только - Карим_Хайдаров.
18.10.2019 - 07:39: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
18.10.2019 - 07:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
18.10.2019 - 07:26: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> КОЛЛАПС МИРОВОЙ ФИНАНСОВОЙ СИСТЕМЫ - Карим_Хайдаров.
17.10.2019 - 18:29: ЭКСПЕРИМЕНТАЛЬНАЯ ФИЗИКА - Experimental Physics -> Ядерные эксперименты - Карим_Хайдаров.
17.10.2019 - 06:01: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
16.10.2019 - 19:24: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Ю.Ю. Болдырева - Карим_Хайдаров.
13.10.2019 - 18:09: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Светланы Вислобоковой - Карим_Хайдаров.
13.10.2019 - 08:05: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution