0

データベースから検証チェックを行うために SQL コードを使用する必要があるクラスを作成しましたが、プログラムを実行しようとすると、フォームから ADOquery が使用されません。メインユニットをクラスのユニットに追加して修正しようとしましたが、循環エラーが発生します。また、Form1 を使用に追加しようとしました (これは私のフォームの名前であり、フォームは 1 つしかありません) が、Form1 を理解できません。誰かが助けることができれば、それは非常に高く評価されます.

これは私のクラスにあります:

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 に関連する他の多くの質問があります。すばやく検索する[delphi] parameter queryと、それらが見つかるはずです。)

于 2013-09-17T20:02:11.570 に答える