Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

DB2 

Как заставить работать DB2 через протокол IPX?

Nomadic отвечает:

Связь Win-клиента c DB2 в сети Netware

Hастройка доступа к DB2

1. Связь с использованием протокола IPX/SPX.

Возможны два варианта доступа:

• через сервер NETWARE;

• прямая адресация.

1.1. Конфигурация для доступа через сервер.

Замечание: Проверялся доступ через сервера NW 3.11 и 3.12. Для 4.х нужно еще разобраться.

1.1.1. DB2 Сервер

• должна быть

установлена OS/2 Warp или OS/2 Warp Connect;

• включена поддержка NETWARE;

• в CONFIG.SYS в переменную среды DB2COMM добавить (через запятую) IPXSPX и перезагрузить систему;

• создать командный файл DBIPXSET.CMD следующего вида:

db2 update dbm cfg using fileserver objectname dbserver

где – <NWSERVER> – имя сервера;

• выполнить командный файл DBIPXSET.CMD;

• перестартовать сервер базы данных;

• создать командный файл DBIPXREG.CMD следующего вида:

db2 register nwbindery user

где – <USERNAME> – имя пользователя, обладающего правами администратора на сервере <NWSERVER>;

• выполнить командный файл DBIPXREG.CMD;

• ответить на запрос пароля.

1.1.2. WINDOWS-клиент

• установить WINDOWS 3.1 или WfWG 3.11;

• установить клиента NETWARE от версии 4.х;

• при установке влючить поддержку WINDOWS;

• установить клиента DB2 для WINDOWS;

• используя программу Client Setup описать новый узел – сервер базы данных:

Name – <любое имя>

Protocol – IPX/SPX

File server – <NWSERVER>

Object name – dbserver

• описать базу данных и разрешить доступ к ней через ODBC.

1.2. Конфигурация для доступа через прямую адресацию

1.2.1. DB2 Сервер

• см. п 1.1.1;

• найти в директории x:\sqllib\misc программу DB2IPXAD.EXE и выполнить ее;

• записать полученный адрес;

1.2.2. WINDOWS-клиент

• см. п. 1.1.2. (первые три шага);

• используя программу Client Setup описать новый узел – сервер базы данных:

Name – <любое имя>

Protocol – IPX/SPX

File server – *

Object name – <адрес полученный от DB2IPXAD.EXE>

• описать базу данных и разрешить доступ к ней через ODBC. 

Почему DB2 ругается на Create Trigger?

Nomadic отвечает:

Я тут писал по поводу того, что у меня не работали триггеры. Все дело оказалось в правиле написания команды «create trigger». Если все остальные команды корректно воспpинимаются на любом регистре, то эта – только набранная одними большими буквами.

Модули данных 

Модуль данных для каждого MDIChild

Delphi 2 

Когда во время разработки вы устанавливаете "DataSource"-свойство в БД-компонентах для указания на модуль данных, VCL во время выполнения приложения будет пытаться создать связь с существующим TDataModule, основываясь на его свойтсве Name. Так, если вы добавите модуль данных к вашему проекту и переместите его в свойстве проекта из колонки автоматически создаваемых форм в колонку доступных, вы сможете разработать форму, содержащую элементы управления для работы с базами данных, после чего несколькими строчками кода можете создать экземпляр формы, имеющий

экземпляр собственного модуля данных.

С помощью Репозитория создайте "standard MDI application" (стандартное MDI-приложение), в котором модуль TMDICHild будет похож на приведенный ниже. Добавленные строки имеют комментарий {!}. Хитрости спрятаны в конструкторе create и задании другого порядка следования операторов.

unit Childwin;

interface

uses Windows, Classes, Graphics, Forms, Controls,ExtCtrls, DBCtrls, StdCtrls, Mask, Grids, DBGrids,DataM; {!} // Модуль TDataModule1

type

 TMDIChild = class(TForm)

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBNavigator1: TDBNavigator;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

 private { Private declarations }

 public { Public declarations }

{!} DM:TDataModule1;

{!} constructor Create(AOwner:TComponent); override;

 end;

implementation

{$IFDEF XOXOXOX} // DataM должен находиться в секции interface. Необходимо для среды

uses DataM; // времени проектирования. Определение "XOXOXOX" подразумевает,{$ENDIF}

// что это никогда не будет определено, но чтобы компилятор видел это.

{$R *.DFM}

{!} constructor TMDIChild.Create;

{!} begin

{!} DM := TDataModule1.Create(Application);

{!} inherited Create(AOwner);

{!} DM.Name := '';

{!} end;

procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);

begin

 Action := caFree;

end;

end.

– Pat Ritchey 

Как передать UserName и Password в удаленный модуль данных (remote datamodule)?

Nomadic отвечает:

Поделиться с друзьями: