Как я могу загрузить имена столбцов из таблицы Access в переменную (я не уверен, какой из них использовать)?Я использую ADOTable в Delphi7 - PullRequest
2 голосов
/ 16 ноября 2010

Я пытаюсь импортировать имена столбцов из таблицы 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;  

Пожалуйста, помогите!Любые советы будут высоко ценится.

1 Ответ

3 голосов
/ 17 ноября 2010

Попробуйте:

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;

(код отредактирован согласно Джерри, ниже)

Вы также сказали "Любой совет будет оценен". Мой совет: не пытайтесь использовать базу данных как электронную таблицу. Сохраните данные обычным способом (в таблице со столбцом даты и значения) и затем денормализуйте для представления. Доступ делает это легко с помощью Crosstab Queries.

...