Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Привет мастерам! Как вызвать процедуру в DataModule из Unit`a.   Найти похожие ветки 

 
vegarulez ©   (2006-04-25 18:40) [0]

Привет мастерам.
У меня есть форма и дата модуль, где есть элемент свзи с бд.
Вопрос:
как из unit1 вызвать процедуру создания  датамодуля
(procedure TDataModule2.DataModuleCreate(Sender: TObject);)
в unit2?
просто вообще не знаю, как вызывать процедуры из разных unit-ов. если есть ссыль где описан вызов процедуры (желательно с примером) - киньте плз. прочту.


 
Джо ©   (2006-04-25 18:56) [1]

uses ..., DataModuleUnit, ...;


 
vegarulez ©   (2006-04-25 19:38) [2]

2 Джо: Что-то не совсем понятно...
Я ещё пока лам в Дэльфях, вот пока что у меня получилось, неподскажешь как добавить (там закоментено, где я хочу вызов вставить):

===========
unit Unit1;

interface

uses
 SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs,
 QStdCtrls;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Edit4: TEdit;
   Button1: TButton;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   procedure Button1Click(Sender: TObject);

 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.xfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage("Ok");
if (DataModule2.SQLTest1.Connected=True) then

       begin
       datamodule2.SQLnum.SQL.Clear;
       datamodule2.SQLnum.SQL.Add("INSERT INTO `test1` (`num` , `sum` , `sec` ) VALUES ("+ edit1.text + ", "+ Edit2.Text +", "+ edit4.text +")");
       datamodule2.SQLnum.ExecSQL();
       end
else
begin

// вот здесь нужно как-то вызвать процедуру из unit2
//procedure TDataModule2.DataModuleCreate(Sender: TObject);
// чтобы он попытался ещё раз подконнектится, если не получилось,
//то допустим писать данные в текстовый файлик писать (но
//с текстовым  я уже сам сделаю :) )

end;

end;

end.

===============

unit Unit2;

interface

uses
 SysUtils, Classes, DBXpress, FMTBcd, DB, SqlExpr;

type
 TDataModule2 = class(TDataModule)
   SQLTest1: TSQLConnection;
   SQLnum: TSQLQuery;
   procedure DataModuleCreate(Sender: TObject);

 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 DataModule2: TDataModule2;

implementation

{$R *.xfm}

procedure TDataModule2.DataModuleCreate(Sender: TObject);
begin
try
Datamodule2.SQLTest1.Connected:=true;
except
on E:Exception do
abort;
end;
end;

end.


 
Джо ©   (2006-04-25 19:42) [3]

Не нужно создавать датамодули пачками, если всего лишь захотелось "еще раз подконнектиться".


 
vegarulez ©   (2006-04-25 20:35) [4]

В смысле? Как понять пачками?
Может где-нибудь написано как это сделать???


 
Джо ©   (2006-04-25 20:49) [5]

1. Заводишь паблик-метод в классе TDataModule2, который будет выполнять коннект. Допустим, называешь его Connect.
2. Вызываешь его: DataModule2.Connect.
3. В блоке except ловишь возможное исключение и протоколируешь его.

Т.е, как-то так:

type
TDataModule2 = class(TDataModule)
 ...
public
  procedure Connect;
end;

procedure TDataModule2.Connect;
begin
 Datamodule2.SQLTest1.Connected:=true;
end;

...

procedure TForm1.Button1Click(Sender: TObject);
begin
if (DataModule2.SQLTest1.Connected=True) then

      begin
      datamodule2.SQLnum.SQL.Clear;
      datamodule2.SQLnum.SQL.Add("INSERT INTO `test1` (`num` , `sum` , `sec` ) VALUES ("+ edit1.text + ", "+ Edit2.Text +", "+ edit4.text +")");
      datamodule2.SQLnum.ExecSQL();
      end
else
begin

try
 DataModule2.Connect  
except
 on E: Exception do
 begin
   // протоколируешь ошибку
   
   // при необходимости пускаешь исключение дальше
   raise
 end;
end;

end;


Логику кода в ButtonClick не исправлял, какая-то она непонятная :)


 
vegarulez ©   (2006-04-25 21:22) [6]

Ахха спасип...
ща попробую...

логика там проста: если типа нет коннекта - писать в файл, потом когда он (коннект) появится, из файла будет выдёргиваться, всё то что не отправилось - и отправляться в бд...



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
2-1146132943
KyRo
2006-04-27 14:15
2006.05.14
Почему мне не удается зарегить сервис в системе


3-1142926431
Jane
2006-03-21 10:33
2006.05.14
Использование в коннектах через BDE user name заданных кириллицей


2-1145751737
parovoZZ
2006-04-23 04:22
2006.05.14
dll и экспортируемые функции


1-1144205966
SnapIn
2006-04-05 06:59
2006.05.14
Подсветка слова ссылкой под мышкой в TSynEdit


2-1146000528
Krants
2006-04-26 01:28
2006.05.14
ТМемо.Lines