KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Валентин Озеров, "Советы по Delphi. Версия 1.4.3 от 1.1.2001" бесплатно, без регистрации.
Перейти на страницу:

• включена поддержка 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:sqllibmisc программу 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 отвечает:

В Удаленный Модуль Данных бросьте компонент TDatabase, затем добавьте процедуру автоматизации (пункт главного меню Edit | Add To Interface) для Login.

Убедитесь, что свойство HandleShared компонента TDatabase установлено в True.

procedure Login(UserName, Password: WideString);

begin

 { DB = TDatabase }

 { Something unique between clients }

 DB.DatabaseName := UserName + 'DB';

 DB.Params.Values['USER NAME'] := UserName;

 DB.Params.Values['PASSWORD'] := Password;

 DB.Open;

end;

После того, как Вы создали этот метод автоматизации, Вы можете вызывать его с помощью:

RemoteServer1.AppServer.Login('USERNAME','PASSWORD');

Paradox 

Byte-поля Paradox

Delphi 2 

Что за магия при записи в поле Paradox Byte? По этому поводу в документации ничего не сказано.

Есть 2 пути получить доступ к данным в TBytesField.

Просто вызовите метод GetData, передавая ему указатель на буфер, где сам буфер должен иметь размер, достаточный для хранения данных:

procedure SetCheckBoxStates;

var CBStates: array[1..13] of Byte;

begin

 CBStateField.GetData(CBStates);

 { Здесь обрабатываем данные… }

end;

Для записи значений вы должны использовать SetData.

Используйте свойство Value, возвращающее вариантный массив байт (variant array of bytes):

procedure SetCheckBoxStates;

var CBStates: Variant;

begin

 CBStates := CBStateField.Value;

 { Здесь обрабатываем данные… }

end;

Первый метод, вероятно, для вас будет легче, поскольку вы сразу докапываетесь до уровня байт. Запись данных также получится сложнее, поскольку вам нужно будет работать с variant-методами типа VarArrayCreate и др.

– Mark Edington

Доступ к таблицам Paradox на CD или c флагом только для чтения

Тема: Доступ к таблицам Paradox на CD или на дисках c флагом только для чтения

Данный совет поможет вам разобраться в таком вопросе, как доступ к таблицам Paradox, расположенным на CD-ROM или диске, имеющем флаг "только для чтения".

Механиз блокирования файлов Paradox требует наличие файла PDOXUSRS.LCK, осуществляющий логику работы блокировки. Данный файл обычно создается во время выполнения приложения и располагается в том же каталоге, где и таблицы. Тем не менее, в случае с CD-ROM, во время выполнения программы нет никакой возможности создать на нем описанный выше файл. Решение простое: мы создаем этот файл и помещаем его на CD-ROM во время его (CD) создания. Следующая простейшая программка позволит создать вам файл PDOXUSRS.LCK и поместить его в образ компакта для его последующего копирования на CD-ROM:

1. Стартуйте пустой проект и добавьте на форму следующие компоненты: TEdit, TButton и TDatabase.

2. В обработчике кнопки OnClick используйте следующий код:

procedure TForm1.Button1Click(Sender: TObject);

begin

 if ChkPath then Check(DbiAcqPersistTableLock(Database1.Handle, 'PARADOX.DRO','PARADOX'));

end;

3. Функция ChkPath является методом, определенным пользователем для формы. Она просто проверяет путь, введенный пользователем в поле редактирования и убеждается, что он существует. Вот функция:

function TForm1.ChkPath : Boolean;

var s: array[0..100] of char;

begin

 If DirectoryExists(Edit1.Text) then begin

DataBase1.DatabaseName:= 'TempDB';

  DataBase1.DriverName:= 'Standard';

  DataBase1.LoginPrompt:= false;

  DataBase1.Connected := False;

  DataBase1.Params.Add('Path=' + Edit1.Text);

  DataBase1.Connected := TRUE;Result := TRUE;

 end else begin

StrPCopy(s,'Каталог : ' + Edit1.text + ' не найден');

  Application.MessageBox(s, 'Ошибка!', MB_ICONSTOP);

  Result := FALSE;

 end;

end;

{ Примечание: Не забудьте добавить объявление функции в секцию public формы.}

4. Перед компиляцией необходимо вспомнить еще об одной вещи: в список Uses нужно добавить следующие модули:

Delphi 1.0: FileCtrl, DbiProcs, DbiTypes, DbiErrs.

Delphi 2.0: FileCtrl, BDE

После компиляции и выполнения, программа создаст два файла в определенном вами каталоге. Создаваемые два файла: PDOXUSRS.LCK и PARADOX.LCK.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*