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;
[Delphi] Пожалуйста, помогите решить задачу
Я учусь программировать на Дельфи и мне очень нравится :)
Помогите, пожалуйста, решить такую задачу...у меня не получается :(
Есть 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@
mb := adoLQuery.Fields[0].AsString;
в ф-ии qsel, нужно
Result := adoLQuery.Fields[0].AsString;
Цитата:
Originally posted by uki_
Наверно вместо
mb := adoLQuery.Fields[0].AsString;
в ф-ии qsel, нужно
Result := adoLQuery.Fields[0].AsString;
Наверно вместо
mb := adoLQuery.Fields[0].AsString;
в ф-ии qsel, нужно
Result := adoLQuery.Fields[0].AsString;
Это тоже использовала :)
Цитата:
Originally posted by Tigr@
Это тоже использовала :)
Это тоже использовала :)
И не покатило? :)
Перед обращением к Query adoLConnect.Connected установлен в true?
Если программа будет использоваться в многих формах, тогда query и id нужно бы передать как параметр.
Код:
Целую!!!:D
Цитата:
Originally posted by Tigr@
uki_, спасибо тебе огромное за помощь!
Целую!!!:D
uki_, спасибо тебе огромное за помощь!
Целую!!!:D
:}