Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Пожалуйста, помогите решить задачу, функции 
:(
    Опции темы
Tigris
  Дата 26.2.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Привет всем!
Я учусь программировать на Дельфи и мне очень нравится smile
Помогите, пожалуйста, решить такую задачу...у меня не получается smile
Есть 2 файла, краткое содержание кот. привожу ниже:

1) ********File1.pas*********
Код
unit File1;

interface

uses
  Windows, Messages, SysUtils, Classes, Forms, ADODB, Db, StdCtrls,
  Controls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    adoLConnect: TADOConnection;
    adoLQuery: TADOQuery;
    Edit1: TEdit;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses File2;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  mb: String;
begin
  idF := StrToInt(Edit1.Text);

  adoLQuery.Active := false;
  adoLQuery.SQL.Text := iNumber(idF);
  adoLQuery.Active := true;
  mb := adoLQuery.Fields[0].AsString;

  Application.MessageBox(PChar(mb),'Test',MB_OK + MB_iconinformation);
end;

end.


2) ********File2.pas*********
Код
unit File2;

interface

uses SysUtils;

var
  idF: Integer;

  function iNumber(idF:integer): string; far;

implementation

uses File1;

function iNumber(idF:integer): string;
var
   str: String;
begin
  str := 'select Name from Family where IDFam=';
  Result := str + IntToStr(idF);
end;

end.

*****************************

Все работает.
Хочу сделать так, чтобы кусок из File1.pas:
***
Код
  adoLQuery.Active := false;
  adoLQuery.SQL.Text := iNumber(idF);
  adoLQuery.Active := true;
  mb := adoLQuery.Fields[0].AsString;

***
был в File2.pas, например:

Код
function qSel: string;
var
  mb: String;
begin

  adoLQuery.Active := false;
  adoLQuery.SQL.Text := iNumber(idF);
  adoLQuery.Active := true;
  mb := adoLQuery.Fields[0].AsString;
end;


А, в File1.pas вызвался так:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  idF := StrToInt(Edit1.Text); //Вставляется число, кот.потом берется из БД

  Application.MessageBox(PChar(qSel),'Test',MB_OK + MB_iconinformation);
end;


Писала так, но не работает...не пойму почему... smile
Очень надо, т.к. будет часто использоваться "кусок (qSel)" в др. файлах.
Пожалуйста, помогите! Заранее благодарю.
Tigr@


M
Girder
Название темы должно отражать ее суть!

PM MAIL   Вверх
Foley
Дата 26.2.2006, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фсемба Яцца
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 31.1.2006
Где: Россия, Арх.обл

Репутация: нет
Всего: 7



Во-первых функция объявляется не в разделе "var"...
а если чато использоваться будет, то сделай отдельный файл (откомпиленный) скопируй его в папку Дельфи (какую именно не помню) и потом объявляй в разаделе Юзес...

PM MAIL ICQ   Вверх
Tigris
Дата 26.2.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Спасибо, что переместили smile

>>Во-первых функция объявляется не в разделе "var"...
А, где?

>>а если чато использоваться будет, то сделай отдельный файл (откомпиленный) скопируй его в папку >>Дельфи (какую именно не помню) и потом объявляй в разаделе Юзес...
Такой вариант неудобен, т.к. это д.б. в папке создаваемой программы или не так поняла...
PM MAIL   Вверх
Vas
Дата 27.2.2006, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Делаем так:
Код

unit File2;
interface
uses SysUtils, ADODB, DB;

function qSel(AADOQuery:TADOQuery; idF:integer):string;
  
var
  idF: Integer;

implementation

function qSel(AADOQuery:TADOQuery; idF:integer):string;
begin
     if AADOQuery.Active then AADOQuery.Active:= false;
     AADOQuery.SQL.Text :=   'select Name from Family where IDFam=' + IntToStr(idF);
     try
       AADOQuery.Open;
       Result := AADOQuery.Fields[0].AsString;
     except
       Result := 'Ошибка выполнения запроса!';
     end;
end;

end.


Вызов так:
Код

unit File1;
interface
uses
  Windows, Messages, SysUtils, Classes, Forms, ADODB, Db, StdCtrls,
  Controls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    adoLConnect: TADOConnection;
    adoLQuery: TADOQuery;
    Edit1: TEdit;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
uses File2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
  mb: String;
begin
  mb := qSel(adoLQuery, StrToInt(Edit1.Text)); //здесь передаем указатель на наш ADOQuery и число
  Application.MessageBox(PChar(mb),'Test',MB_OK + MB_iconinformation);
end;
end.


Вроде должно работать, правда не проверял, ну если что допишем smile


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Foley
Дата 27.2.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фсемба Яцца
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 31.1.2006
Где: Россия, Арх.обл

Репутация: нет
Всего: 7



Цитата(Tigris @ 26.2.2006, 23:50 Найти цитируемый пост)
Такой вариант неудобен, т.к. это д.б. в папке создаваемой программы или не так поняла...

нет в папке Дельфи
Папка Delphi->Lib туда скопируй, потом и в других проектах сможешь использовать...
и д.б тут не причем...
PM MAIL ICQ   Вверх
Tigris
Дата 27.2.2006, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Цитата(Vas @ 27.2.2006, 08:10)
Делаем так:
Код

unit File2;
interface
uses SysUtils, ADODB, DB;

function qSel(AADOQuery:TADOQuery; idF:integer):string;
  
var
  idF: Integer;

implementation

function qSel(AADOQuery:TADOQuery; idF:integer):string;
begin
     if AADOQuery.Active then AADOQuery.Active:= false;
     AADOQuery.SQL.Text :=   'select Name from Family where IDFam=' + IntToStr(idF);
     try
       AADOQuery.Open;
       Result := AADOQuery.Fields[0].AsString;
     except
       Result := 'Ошибка выполнения запроса!';
     end;
end;

end.


Вызов так:
Код

unit File1;
interface
uses
  Windows, Messages, SysUtils, Classes, Forms, ADODB, Db, StdCtrls,
  Controls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    adoLConnect: TADOConnection;
    adoLQuery: TADOQuery;
    Edit1: TEdit;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
uses File2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
  mb: String;
begin
  mb := qSel(adoLQuery, StrToInt(Edit1.Text)); //здесь передаем указатель на наш ADOQuery и число
  Application.MessageBox(PChar(mb),'Test',MB_OK + MB_iconinformation);
end;
end.


Вроде должно работать, правда не проверял, ну если что допишем  smile

Хотя уже разобралась smile.
Написала похоже, как описал Vas, кот. передаю огромное спасибо за оказанное внимание! smile
Добавлено @ 21:12
Цитата(Foley @ 27.2.2006, 13:26)
нет в папке Дельфи
Папка Delphi->Lib туда скопируй, потом и в других проектах сможешь использовать...
и д.б тут не причем...

Это совсем не то, что нужно smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.