タイトルそのままですが、ボタンを押したらCSVデータをPARADOXに変換する。という具合に作りたいのですが、簡単な方法はあるのでしょうか? アクセスのデータをエクスポートするときにファイル形式を選んでPARADOXとして保存できますが、プログラム上で自動で実施させたいのです。どのような方法があるのかできれば具体的にご教授願えませんでしょうか。
テーブルを作成し、CSVファイルを読み込み、テーブルにデータを追加する。
でどうでしょうか?
igyさんご返事ありがとうございます。
PARADOXのテーブルを作成しておき、読み込んだCSVデータを、PARADOXテーブルに1行づつ追加していく。ということでしょうか? CSVデータの項目名や項目数が一定していないケースの場合には、その都度CSVデータ内容を見て、その項目名や項目数に合せたPARADOXテーブルを作成することは面倒なので、CSVデータの項目名も含めた全ての内容をPARADOXにコピーというイメージではできないものでしょうか。よろしくお願いします。
>PARADOXのテーブルを作成しておき、読み込んだCSVデータを、PARADOXテーブルに1行づつ追加していく。ということでしょうか?
はい。
>CSVデータの項目名や項目数が一定していないケースの場合には、その都度CSVデータ内容を見て、その項目名や項目数に合せたPARADOXテーブルを作成することは面倒なので、CSVデータの項目名も含めた全ての内容をPARADOXにコピーというイメージではできないものでしょうか。
テーブル内の項目のデータ型(サイズ)などを決め、テーブルを作成し、データを格納する。
という機能が必要でしたら、自分で作るしかないと思います。
(テキストメモ項目(ftMemo)一つだけ用意し、それに1行のデータすべてを格納するという方法も
ありますが、現実的ではないですよね。)
PARADOXのテーブルは、普通にプログラム上からも作成可能ですよ。
DDLもちゃんと実行されるので、create table文を
動的に作って実行したら、大丈夫だと思います。
サンプルソースです。
Queryには、適当なデータベース名を設定して下さい。
(プロパティ:DatabaseNameに作成済みSTANDARDのエリアスを設定して下さい)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Query: TQuery;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Query.SQL.Add('CREATE TABLE "サンプルテーブル.db"(');
Query.SQL.Add('ITEM1 VARCHAR(100),');
Query.SQL.Add('ITEM2 INTEGER, PRIMARY KEY(ITEM1))');
Query.ExecSQL;
end;
end.
ご返事が遅くなりまして申し訳ありませんでした。
まさ様、サンプルソースありがとうございました。
何となくやりたいことが出来そうな感じになってきました。
実際にソースを書いて実行しましたらばうまくいきましたが、ソースの意味が今一わからないので教えていただけませんでしょうか。
Query.SQL.Add('CREATE TABLE "サンプルテーブル.db"(');
Query.SQL.Add('ITEM1 VARCHAR(100),');
Query.SQL.Add('ITEM2 INTEGER, PRIMARY KEY(ITEM1))');
とありますが、'CREATE TABLE "サンプルテーブル.db"(’が文字列ならば、最後にあるカッコ( は何を意味するのですか?
また、PRIMARY KEY(ITEM1)と三行目のITEM2のところに書かれている意味はどういう意味なのでしょうか?
全く初歩的な質問をしているようで申し訳ありませんがよろしくお願いします。
また、本質問とは離れますが、動的に...という言葉をよくみかけますが、どのような意味なのでしょうか?
(あまりにひどい質問をしているようですみません。)
TQueryのSQL文を指定するプロパティ[SQL]はTStrings型ですので、
指定する文をAddを使って設定します。
このあたりは、HelpでTStringを調べると出てきます。
TStringのAddで設定した文字列を、Textで取り出すと、
Add毎に改行区切りで取り出せます。
また、CommaTextで取り出せば、改行がカンマになって取り出せます。
逆も可能です。
>Query.SQL.Add('CREATE TABLE "サンプルテーブル.db"(');
>Query.SQL.Add('ITEM1 VARCHAR(100),');
>Query.SQL.Add('ITEM2 INTEGER, PRIMARY KEY(ITEM1))');
とすると、Textでは
'CREATE TABLE "サンプルテーブル.db"(' + $A$D + 'ITEM1 VARCHAR(100),' + $A$D + 'ITEM2 INTEGER, PRIMARY KEY(ITEM1))'
になります。
CommaTextでは、'CREATE TABLE "サンプルテーブル.db"(','ITEM1 VARCHAR(100),','ITEM2 INTEGER, PRIMARY KEY(ITEM1))'
となります。
動的に...という言葉はプログラムで動作途中で追加したりすることです。
HOtaさまありがとうございます。
お陰様で何となくイメージがつかめました。あとは色々と試しながら理解を深めていきたいと思います。また不明な点がありましたらばその時はよろしくお願いします。一応解決とします。
ツイート | ![]() |