Рейтинговые книги
Читем онлайн Советы по Delphi. Версия 1.4.3 от 1.1.2001 - Валентин Озеров

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 22 23 24 25 26 27 28 29 30 ... 123

• включена поддержка 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.

1 ... 22 23 24 25 26 27 28 29 30 ... 123
На этой странице вы можете бесплатно читать книгу Советы по Delphi. Версия 1.4.3 от 1.1.2001 - Валентин Озеров бесплатно.

Оставить комментарий