delphi - 如何将 Access 表中的列名加载到变量中(我不确定使用哪一个)?我在 Delphi7 中使用 ADOTable

标签 delphi ms-access delphi-7 tadotable

我正在尝试将列名从 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/

相关文章:

c# - Access : Invalid UPDATE statement

Delphi 二进制/文本文件必要性

每个类的 Delphi 类变量

ms-access - 3061 VBA 错误 - SQL 查询 "Too few parameters. Expected 1."简单查询

delphi - Delphi 2009之前如何处理UTF-8和ANSI转换?

sql - 女士 Access 排名前三名

delphi - 如何在运行时创建TDataSet查找字段?

Delphi 7,使用 UNC 选择目录

delphi - 将变体值存储在 TStringList 的对象属性中

delphi - 如何使用SVN管理项目版本?