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 に答える