我是 Delphi 和软件编程的新手。
我想找到一些使用
.ini
文件中的查询的建议。
我的目的是,当我首先在 DBGrid 中选择一些文件名,然后单击显示我选择的文件名的按钮,如果它们正确,则单击“确定”以使用文件名执行查询。
在这种情况下,每次选择文件名都会改变。那么,如何在
.ini
文件中执行查询以获得动态结果?
首先,这是
Queries.ini
文件中的文本:
[Query]
QSELECTEDFN=SELECT * FROM TEST_01 WHERE FILE_NAME IN (:FILE_NAME);
这是我的代码:
ini := TIniFile.Create('C:\file dir\Queries.ini');
try
qSlctdByFN := ini.ReadString('QUERY', 'QSELECTEDFN', '');
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := qSlctdByFN;
ADOQuery1.Parameters.ParamByName('FILE_NAME').Value := slselectedFN.CommaText;
ADOQuery1.Active := true;
finally
ini.Free;
end;
当我选择
1.txt
、2.txt
时,查询应该是:
SELECT * FROM TEST_01 WHERE FILE_NAME IN ('1.txt,2.txt');
当我仅选择
3.txt
时,查询应该是:
SELECT * FROM TEST_01 WHERE FILE_NAME IN ('3.txt');
处理此问题的一个简单方法是将文件名放入
TStringList
中,将其 Delimiter
设置为 '
,然后使用 StringReplace()
将 SQL 字符串中的 ':FILE_NAME'
替换为 TStringList.DelimitedText
值.