2

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

请帮忙!任何建议将不胜感激。

4

1 回答 1

3

尝试:

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 使用交叉表查询使这变得容易。

于 2010-11-16T21:17:36.193 回答