【问题标题】:How can I load column names from an Access table into a variable (I'm not sure which one to use)? I'm using an ADOTable in Delphi7如何将 Access 表中的列名加载到变量中(我不确定要使用哪一个)?我在 Delphi7 中使用 ADOTable
【发布时间】:2010-11-16 18:41:37
【问题描述】:

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

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

【问题讨论】:

    标签: delphi ms-access delphi-7 tadotable


    【解决方案1】:

    试试:

    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 通过交叉表查询让这一切变得容易。

    【讨论】:

    • 如果字段不存在会导致异常。您需要改用if FindField(DateStr) &lt;&gt; nil
    • 非常感谢!我是 11 年级...所以,是的,我仍然需要学习一些关于使用什么和不使用什么的知识(就将数据库用作电子表格而言)。但感谢您的建议。 :)
    • 另一件事。该程序应该说明学习者当天是否缺席或在场。学员的姓名垂直列出,日期水平列出。然后,查询应“检查”日期下的访问框。我应该使用什么 SQL?目前我正在使用以下内容,但我收到一条错误消息,提示查询表达式中的字符串语法错误 '[Leerder Naam En Van] = "(#K':
    • qryLearners.SQL.Text := 'UPDATE Leerders SET [' + FormatDateTime('dd/mm/yyyy', Date) + '] = True WHERE [Leerder Naam En Van] = "' + arrLeerders[K] + '"';
    猜你喜欢
    • 2020-08-24
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    相关资源
    最近更新 更多