更新时间:2023-11-15 14:06:46
而不是创建变量 ADOQuery1
, ADOQuery2
, ADOQuery3
等类型 TADOQuery
,创建一个数组:
ADOQueries:数组的TADOQuery;
然后设置其中的元素数量,当你知道他们将有多少:
SetLength(ADOQueries,NumberOfQueries);
或者,如果您从头开始知道将有多少元素,您可以定义 ADOQueries
改为静态数组:
ADOQueries:array [0..7 ]的TADOQuery;
现在你可以做
procedure TForm1.QueryChange(sqltext:String; query:Integer);
begin
ADOQueries [Query] .Close;
ADOQueries [Query] .SQL.Clear;
ADOQueries [Query] .SQL.Add(sqltext);
ADOQueries [Query]。打开;
结束
Firstly, I am new to these and the question could be stupid. Anyway, I have a procedure like this:
procedure Tform1.QueryChange(sqltext : String; query : Integer);
begin
if query = 1 then begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqltext);
ADOQuery1.Open;
end;
if query = 2 then begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(sqltext);
ADOQuery2.Open;
end;
I would like to remove the if blocks and make one united code:
ADOQuery+query.Close; (know that looks very silly)
ADOQuery+query.SQL.Clear;
ADOQuery+query.SQL.Add(sqltext);
ADOQuery+query.Open;
My goal is when query=1 code will use ADOQuery1.Close; etc. when query=2 code will use ADOQuery2.Close;
Instead of creating variables ADOQuery1
, ADOQuery2
, ADOQuery3
etc of type TADOQuery
, create an array:
ADOQueries: array of TADOQuery;
Then set the number of elements in it, when you know how many they will be:
SetLength(ADOQueries, NumberOfQueries);
Alternatively, if you know from the beginning how many elements there will be, you can define ADOQueries
to be a static array instead:
ADOQueries: array[0..7] of TADOQuery;
Now you can do
procedure TForm1.QueryChange(sqltext: String; query: Integer);
begin
ADOQueries[Query].Close;
ADOQueries[Query].SQL.Clear;
ADOQueries[Query].SQL.Add(sqltext);
ADOQueries[Query].Open;
end;