Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];

Вниз

Привет мастерам! Как вызвать процедуру в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
15-1145442914
Alex_C
2006-04-19 14:35
2006.05.14
интерфейсный модуль


2-1146083600
chai
2006-04-27 00:33
2006.05.14
Работа с поинтерами: корректен ли этот код?


15-1145291560
Yanis
2006-04-17 20:32
2006.05.14
ICQ не работает


15-1145531028
__DATA__
2006-04-20 15:03
2006.05.14
Русские буквы в английской WindowsXP Home ed SP2


2-1145272457
Сергей И
2006-04-17 15:14
2006.05.14
работа с DBgrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский