我正在尝试将列名从 MS Access 表(名为 Learners)导入到某个变量(不确定使用哪一个)。该列的名称是日期。单击 btnSave (TButton) 时,代码应确定是否已创建具有当前日期的列。如果没有,那么它应该创建它。这是我到目前为止得到的代码:
procedure TForm1.btnSaveClick(Sender: TObject);
var
bFound: boolean;
K: integer;
strColumnNames : TStringList;
begin
strColumnNames := TStringList.Create;
tblLeerders.GetFieldNames(strColumnNames);
bFound := False;
for K := 1 to tblLeerders.IndexFieldCount
do
begin
if strColumnNames.Strings[K] <> FormatDateTime('dd/mm/yyyy', Date())
then
begin
bFound := True;
end;
end;
if bFound = False
then
begin
with qryLearners
do
begin
SQL.Text := 'Alter TABLE Leerders ADD COLUMN ' + FormatDateTime('dd/mm/yyyy', Date()) + ' Boolean ';
ExecSQL;
end;
end;
end;
请帮忙!任何建议将不胜感激。
最佳答案
尝试:
if Assigned(tblLeerders.FindField(FormatDateTime('dd/mm/yyyy', Date()))) then
begin
qryLearners.SQL.Text := 'Alter TABLE Leerders ADD COLUMN ' +
FormatDateTime('dd/mm/yyyy', Date()) + ' Boolean ';
qryLearners.ExecSQL;
end;
(根据 Gerry 编辑的代码,如下)
您还说过“如有任何建议,我们将不胜感激”。我的建议是不要尝试使用电子表格之类的数据库。以正常方式存储数据(在具有日期和值列的表中),然后进行非规范化以进行演示。 Access 可以通过交叉表查询轻松完成此操作。
关于delphi - 如何将 Access 表中的列名加载到变量中(我不确定使用哪一个)?我在 Delphi7 中使用 ADOTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4197742/