qryDoABC
function で言うクエリがありますDoABC
。この関数を初めて呼び出すと、すべて正常に動作しますが、2 回目に呼び出すと、qryDoABC do の行でアクセス違反の例外がスローされます。
procedure TMyForm.DoABC;
begin
with qryDoABC do
--
--
end;
グーグルで調べたところ、クエリが割り当てられているかどうかを確認する必要があることがわかりました。そのため、クエリが次のように割り当てられているかどうかも確認しています。
procedure TMyForm.DoABC;
begin
if assigned qryDoABC then
with qryDoABC do
--
--
end;
2回目のクエリが割り当てられていないため、例外はありません。しかし、私はこのqryを2回も発射しなければなりません。このクエリを 2 回目に割り当てるにはどうすればよいですか。
完全なコード:
function TMyForm.DoABC:boolean;
begin
try
if assigned(qryDoABC)then
with qryDoABCdo
begin
Close ;
SQL.Clear;
SQL.Text :=
'Some query';
Parameters.ParamByName('ABC').Value := ABC;
Parameters.ParamByName('XYZ').Value := XYZ;
Open;
if (Recordcount = 0) then
result := false
else
begin
result := true;
end;
Close;
end;
except
on E : Exception do
begin
result := false;
exit;
end;
end;
end;