ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE 問題作です。 /senkun (02/01/10(Thu) 17:56) [128]


親記事 / 返信無し
NO.128  問題作です。
□投稿者/ senkun -(2002/01/10(Thu) 17:56:22)
□U R L/
業務っぽい作品が無かったので、とりあえずUP。
やっていることは単純に、CSVを(SQL)Insert文に変えるだけです。

使用方法は、
@読込ボタンにて、CSVの読込。
A二段目のエディタに以下の呪文を記入する。
N:数値
C:文字列
EX・・・列A(数字),列B(文字),列C(数字)のとき
N,C,N
B変換ボタンを押すと、グリッドに内容が格納。
C生成ボタンで、Insert用のファイルを作成します。

なぜ、このようなお恥ずかしいソースを載せたのかと言うと、
実は、これ100行程度でしか、動作しません。
それ以上だと、超遅いのか固まります。

昔(ひまわりV0.90ぐらいのとき)につくって、そのまま解決してなく、
現在は、汎用性のない何本かのCSV関連処理があるのですが、
結局は、このソースが動かないのが気になります。
質問のコーナーではないのですが、もし、問題がわかる方は、
ご指摘いただけると幸いです。


'----------------------------------- (以下ソース
現在のVersion="0.10"
母艦の、可視は、オフ。

' [フォーマット内容]
' N(デフォルト) :数字         ・・・そのまま出力
' C            :文字(時間) ・・・「''」で括る

母艦の、テキストは、「CSV Tool@ 〜Insert文作成編〜」。
この背景色は、RGB(255,231,181)。

*初期化処理
'-- 画面初期化
この背景色で、画面クリア。

文字サイズは、11
(10,10)へ、移動。
TXT表示欄を、メモとして、作成。
その、幅は、530
その、高さは、180

基礎INSERT文を、エディタとして、作成。
その、幅は、530。
その、高さは、10。

CSV表示欄を、グリッドとして、作成。
その、幅は、530。
その、高さは、180。

(550,10) へ、移動。
読込ボタンを、ボタンとして、作成。
その、テキストを、読込に、設定。
その、イベントを、読込押下時に、設定

変換ボタンを、ボタンとして、作成。
その、テキストを、変換に、設定。
その、イベントを、変換押下時に、設定

生成ボタンを、ボタンとして、作成。
その、テキストを、生成に、設定。
その、イベントを、生成押下時に、設定

閉じるボタンを、ボタンとして、作成。
その、テキストを、閉じるに、設定。
その、イベントを、閉じる押下時に、設定。

母艦の、可視は、オン。
待機。

'****************************** イベント処理群 ***************************
*読込押下時
「CSVファイル|*.csv|テキストファイル|*.txt」 の、 読込ファイル選択
選択ファイルは、それ。
選択ファイルの、要素数。{行数でも、同じ結果です!}
もし(それ=0)ならば、
   待機。
もし(それ=1)ならば、
   読み込みファイルは、選択ファイル#0
もし(それ>1)ならば、
   (
   それは、選択ファイル
   「\n」を、「|」に、置換。
   「選択項目を1つに絞ってください。」が,それの, どれか尋ねる。
   読み込みファイルは、それ。
)

もし、読み込みファイル=""ならば、
   待機。

読み込みファイルを、読む。
TXTデータは、それ。
TXT表示欄の、テキストを、TXTデータ{表示用}に、設定。
待機。   

*変換押下時

編集済みデータは、基礎INSERT文の、テキスト&「\n」&TXT表示欄の、テキスト。
TXT表示欄の、テキストは、""

編集済みデータを、母艦のパス&「tmp_insert」に、書く。
母艦のパス&「tmp_insert」を、読む。

基礎INSERT文の、テキストを、「INSERT INTO table名 ({編集済みデータ#0})」に、設定。

CSV表示欄の、テキストを、編集済みデータに、設定。
待機。

*生成押下時

「.csv」の、書込ファイル選択。
出力ファイルは、それ。

もし (出力ファイル="")ならば、
   待機。
CSVデータは、編集済みデータ   
CSVデータの、要素数。
CSV行数は、それ。   

CSVデータ#0を、","で、区切る。
それの、要素数。
CSV列数は、それ。
列カウンタは、0
行カウンタは、0

CSV列数回{だけ、繰り返す}(
もし、(CSVデータ#列カウンタ#0="C")ならば、(
   '// 列単位に、洗いなおす
   (CSV行数-1)回{だけ、繰り返す}(
CSVデータ#列カウンタ#回数 =『'』& CSVデータ#列カウンタ#回数 &『'』
)
)
列カウンタは、列カウンタ+1
)

出力データは、「」。
CSVデータを、反復(
行データは、それ。
もし、(回数<>1)ならば、(
出力データは、出力データ & 「{基礎INSERT文} VALUES({行データ})\n」
)
)


それは、出力データ。{なので、}出力ファイルへ、書く。
待機。

*閉じる押下時
おわり。







- Child Tree -