0

我创建了一个类,它必须使用 SQL 代码从我的数据库中进行验证检查,但是当我尝试运行我的程序时,它不使用我表单中的 ADOquery。我试图通过将我的主要单元添加到我班级的单元来修复它,但它随后给出了循环错误。我也尝试将 Form1 添加到用途中(这是我的表单的名称,我只有一个表单),但它不理解 Form1。如果有人可以提供帮助,将不胜感激。

orait 这是在我的课上:

procedure TCheckA.CheckIfAdmin;
var iRecordA : Integer;
begin
    qryInfo.Active := False;
    qryInfo.SQL.Clear;
    qryInfo.SQL.Add(' Select [Lid Naam], [Lid Wagwoord], Adminustrateur ');
    qryInfo.SQL.Add(' From [CATSA Lede] ');
    qryInfo.SQL.Add(' Where [Lid Naam] = "'+fgebruikernaam+'"and [Lid Wagwoord] = "'+fpassword+'" and Adminustrateur = True ');
    qryInfo.Active := True;
    iRecordA := qryinfo.recordcount;


 if iRecordA = 1
  then begin
   fAdminAnswer := True;
   end
  else begin
   fAdminAnswer := False;
  end;
end;

然后它通过这个错误:[Error] IntekenCheck.pas(29): Undeclared identifier: 'qryInfo'

然后,如果我尝试将主要单元放在班级的单元中,例如:

unit IntekenCheck;

interface
 uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Buttons, jpeg, ExtCtrls, XPMan, Grids,
  DBGrids, DB, ADODB, Math, AdminCheck, Chairmin_u{main unit};

那么错误是:[Fatal Error] IntekenCheck.pas(7): Circular unit reference to 'IntekenCheck'

4

1 回答 1

1

将查询传递给您的类,并在那里使用它:

procedure TCheckA.CheckIfAdmin(const Query: TAdoQuery);
begin
  AQuery.Active := False;
  AQuery.SQL.Clear;
  AQuery.SQL.Add(' Select [Lid Naam], [Lid Wagwoord], Adminustrateur ');
  AQuery.SQL.Add(' From [CATSA Lede] ');
  AQuery.SQL.Add(' Where [Lid Naam] = "' + fgebruikernaam +
                 '"and [Lid Wagwoord] = "'+ fpassword + 
                 '" and Adminustrateur = True ');
  AQuery.Active := True;
  fAdminAnswer := (AQuery.RecordCount = 1);
end;

(您还应该更改为使用参数化查询而不是使用+.[delphi] parameter query

于 2013-09-17T20:02:11.570 回答