Paradox テーブルのフィールド名をDelphiから変更するには

解決


hiro  2005-08-17 08:56:06  No: 17083

[A]のテーブル形式のparadoxのテーブルが3000程度あり稼動中のデータベースですが、
検索条件で[B]のクエリを使用したいのですがフィールド'day'でエラーとなります。
フィールド名を変更すると正常に動作しますのでSQL文に'day'は使用できないようです。
環境はDelphi7,XP,BDE,Paradoxです。

解決策としては、
(1)フィールド名を変更するプログラムで全てのファイルのフィールド名変更する。
    Alter Table でできそうな気がするのですがDelphiでの使用の仕方が分かりません。
(2)SQL文で'day'が使える文に変更する。
    なにか方法があると思うのですが?

どちらもいろいろ試行してみたのですが、うまくいかなずクリンチになっています。
どちらでもいいのでいい方法ないでしょか。

[A]---------------------------------------------------
           with BDETable1.FieldDefs do
                begin
                  Clear;
                  Add('Day', ftDate, 0, False);
                  Add('Hp', ftinteger, 0, False);
                  Add('Tp', ftinteger, 0, False);
                  Add('Yp', ftinteger, 0, False);
                  Add('Op', ftinteger, 0, False);
                  Add('Cp', ftinteger, 0, False);
                       ----省略-------
           end;
[B]--------------------------------------------------------
         // mDir:string;//パス名
         // mFile:String;//ファイル名   (指定ファイルを指定期間の条件で絞り込む)

           Query1.Active:=False;
           Query1.DatabaseName:=mDir;
           mstr:='select dbn.* from'+ mFile +'where day>=:pday01 and day<=:pday02';
           Query1.SQL.Text:=mstr;
           Query1.Params[0].AsDate:=DateTimePicker1.Date;
           Query1.Params[1].AsDate:=DateTimePicker2.Date;
           Query1.Active:=true;


hiro  2005-08-17 09:03:46  No: 17084

SQL文試行途中の文になっていました。以下が元の文です。
                 mstr:='select * from '+ mFile +' where day>=:pday01 and day<=:pday02';


hiro  2005-08-17 16:50:21  No: 17085

CreateTable で他のフォルダにテーブルを作成し、データをコピーすることで解決しました。


HOta  2005-08-17 17:03:20  No: 17086

フィールド名をAlter TableなどのSQLで変更することはdayが予約語ですから使えません。DataBase Disktopで変更するしかないようです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加