Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Delphi] Пожалуйста, помогите решить задачу

15K
26 февраля 2006 года
Tigr@
4 / / 26.02.2006
Привет всем!
Я учусь программировать на Дельфи и мне очень нравится :)
Помогите, пожалуйста, решить такую задачу...у меня не получается :(
Есть 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;

Писала так, но не работает...не пойму почему...
Очень надо, т.к. будет часто использоваться "кусок (qSel)" в др. файлах.
Пожалуйста, помогите! Заранее благодарю.
Tigr@
7.9K
26 февраля 2006 года
uki_
122 / / 26.01.2006
Наверно вместо
mb := adoLQuery.Fields[0].AsString;
в ф-ии qsel, нужно
Result := adoLQuery.Fields[0].AsString;
15K
26 февраля 2006 года
Tigr@
4 / / 26.02.2006
Цитата:
Originally posted by uki_
Наверно вместо
mb := adoLQuery.Fields[0].AsString;
в ф-ии qsel, нужно
Result := adoLQuery.Fields[0].AsString;



Это тоже использовала :)

7.9K
27 февраля 2006 года
uki_
122 / / 26.01.2006
Цитата:
Originally posted by Tigr@
Это тоже использовала :)

И не покатило? :)

Перед обращением к Query adoLConnect.Connected установлен в true?

Если программа будет использоваться в многих формах, тогда query и id нужно бы передать как параметр.

Код:
function TForm1.qsel(qry: TAdoQuery; id: Integer): string;
begin
  qry.Connection.Connected := true; // на всякий случай
  //qry.Active := false; не нужен, так как qry.SQL.Text := ...
  //сама устанавливает его в false.
  qry.SQL.Text := iNumber(id);
  qry.Active := true;
  if qry.RecordCount<>0 then
    Result := qry.Fields[0].AsString
  else
    Result := 'Нет записи с IDFam =' + IntToStr(id);
end;
15K
27 февраля 2006 года
Tigr@
4 / / 26.02.2006
uki_, спасибо тебе огромное за помощь!
Целую!!!:D
7.9K
27 февраля 2006 года
uki_
122 / / 26.01.2006
Цитата:
Originally posted by Tigr@
uki_, спасибо тебе огромное за помощь!
Целую!!!:D

:}

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог