過去の桐井戸端BBS (桐ver.5)
67 他ソフトからのデータの読込み不良 国岡 1998/1/20-07:47
はじめまして。初心者です。
私は、これまでアクセスのごく簡単なデータベースを使ってきましたが、このたび桐v6にデータを移行しようとして、うまくいかず苦労しております。
どなたかアドバイスをお願いします。
アクセスのデータベースでは1つのフィールド内に改行(段落)を不特定数入れることができますが、そのデータをcsv形式に変換して、桐で読み込むと、カンマより改行が優先されて、改行マークごとに次の行へ移ってしまい項目とデータがめちゃくちゃにずれてしまい上手に変換できません。
どなたか、良い方法がありましたらお教え下さい。 
68 Re: 幅田 1998/1/21-23:52
アクセスを使ったことがありませんでしたが、アクセスでサンプルを作って
テストしてみました。
ところがフィールド内に改行(段落)を入れる方法というのが分かりません。
改行を入れないでテストしてみたら、(当然と言えると思いますが)桐でちゃんと読み込めました。
そもそも改行を入れるというのはどういう事なのでしょうか?
69 Re: 平田昇治 1998/1/22-01:40
アクセスは、Ctrl+Enter でフィールド内に“改行そのもの”を入れられます。
たとえば、
+−−−−+
|長島茂雄|
|   三奈|
+−−−−+
なんていうフィールドを作ることができるのです。
桐で言うと
+−−−−−−−+
|長島茂雄/三奈|
+−−−−−−−+
などとしておいて、強制改行文字に「/」を指定する……
というのが近いといえば近いでしょうか。

私も悩んだことがありました。
で、出した結論は「できない」でした、残念ながら。
その時はどうしてもやらねばならない大量のデータだったので、エディタの「正規表現検索置換機能」やらを駆使してかなり“いきあたりばったり”的に力技でK3フォーマットに直していった記憶があります。
私もアクセスはほとんど使いませんのでよくわからないのですが
これってどこかでFAQになってるのかも知れませんね。
70 Re: 国岡 1998/1/22-07:58
幅田様、平田様コメント、アドバイスを頂き有難うございました。
やはり無理とのこと、今後は気をつけて、データ入力することにします。

ちなみに、試しに筆自慢v11に移行してみたら、上手くできたんです。筆自慢では、読み込みの時、第一行目のカンマと改行のデータをだけを基準にしているようです。

大好きな桐ですが、「読み込み」に関しては、少しあっさりしすぎているので、その方法にもっと幅があればいいなと感じました。

改めて皆様有難うございました。
71 Re: Ogo 1998/1/26-02:56
平田さん、そのサンプルデータ(テキストファイル)をもらえませんか?
72 Re: Ogo 1998/1/27-02:52
>アクセスは、Ctrl+Enter でフィールド内に“改行そのもの”を入れられます。

なるほど、何の工夫も感じられない 0D0A の CR + LF ですね。
Ctrl+Enter というから、特殊なコードを入れているのかと思ったら...
こりゃ面倒ですネェ...
その場の思い付きの「便利さ」の前にはルールを無視して省みない、MSの面目躍如というところか。
78 Re: natsu 1998/2/5-00:17
ACCESS上で、任意のフィールドに、任意の回数の改行があるレコードを区切り記号付きエクスポートしたファイルを、桐のテーブルで読み込み可能なファイルに変換する一括処理を作成してみました。

「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」

ACCESSから桐へのデータコンバート・・・・・

フィールド中に改行のあるデータのコンバートです

分野    関係   氏名     性別
−−−−−−−−−−−−−−−−−−−−−−−
野球    親子   長嶋一茂   男
           長嶋茂雄
サッカー  友達   前園     男
           中田
相撲    兄弟   若の花    男
           貴の花
−−−−−−−−−−−−−−−−−−−−−−−

このようなテーブルを
フィールド区切り:¥ テキスト区切り:なし の条件で区切り記号付きエクスポートすると

野球\親子\長嶋一茂
長嶋茂雄\男
サッカー\友達\前園
中田\男
相撲\兄弟\若の花
貴の花\男

確かに上記のようなテキストになって出力されます。これを、以下にあげた一括処理を行うと

野球\親子\長嶋一茂@長嶋茂雄\男
サッカー\友達\前園@中田\男
相撲\兄弟\若の花@貴の花\男

このテキストであれば 区切り:¥として、桐のテーブルで読み込み可能です。
任意のフィールドにある、任意の回数の改行に対応できると思います。 

用意する表
 変換.tbl (項目数2個) 
  項目名:データ   データ型 文字列  項目計算式 なし
  項目名:項目数 データ型 整数  項目計算式 #文字数(#文字置換([デー タ],\","\\"))-#文字数([データ])

 結果.tbl (項目数1個) 
  項目名:データ  データ型 文字列   項目計算式 なし   

強制改行文字を@とする(強制改行文字ではなく スペースでもOKです)。
取り扱うデータには @¥$ を含まないものとする(一括処理中の$に意味はありません)

一括処理中にフィールド数を聞いてきます。上に挙げた例だと 分野・関係・氏名・性別 でフィールド数は4になります。
また、読み込みや書き出しに使用するテキストファイルをパスに注意して入力して下さい。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

変数宣言 {&読込,&書出,&データ}
変数宣言 整数{&i,&n,&レコード数,&フィールド数}

名札  キー入力
  画面表示 (8,1)-(8,80),"フィールドの数を入力してください",中央,白
  キー入力 (10,10)-(10,80),プロンプト="→",&フィールド数
  画面消去 *
  画面表示 (8,1)-(8,80),"読み込むファイル名を入力してください",中央,白
  画面表示 (15,1)-(15,80),"拡張子(.txt)も入力してください",中央,赤
  キー入力 (10,15)-(10,80),プロンプト="→",&読込
  画面消去 *
  画面表示 (8,1)-(8,80),"書き出すファイル名を入力してください",中央,白
  画面表示 (15,1)-(15,80),"拡張子(.txt)も入力してください",中央,赤
  キー入力 (10,15)-(10,80),プロンプト="→",&書出
  画面消去 *
名札  処理
   表 "変換"
   行削除 *,圧縮
   表 "結果"
   行削除 *,圧縮
   編集表 1
   読み込み テキスト,&読込,区切り="$",空白削除=しない  
   代入 &レコード数=#総件数
   代入 &i=1
 繰り返し (&i=<&レコード数)  
   位置指定 行番号=&i
   代入 &n=[項目数]
   代入 &データ=[データ]
  名札 追加 
   分岐 (&フィールド数=1+&n),出力
   代入 &i=&i+1
   位置指定 行番号=&i
   代入 &データ=#連結(&データ,"@",[データ])   
   代入 &n=&n+[項目数]
   分岐 追加
名札  出力
   編集表 2
   行追加 [データ]=&データ
   代入 &i=&i+1
   代入 &データ=#未定義
   代入 &n=#未定義
   編集表 1   
 繰り返し終了
   編集表 2
   書き出し テキスト,&書出,区切り="$",*
終了
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
以上です。
99 うまくいきました! 国岡 1998/2/13-05:56
natsuさん わざわざコンバート用一括処理を作成くださいましてありがとうございました。おかげさまで、アクセスのデータが桐で使えるようになりました。
とてもうれしいです。

改めて桐v5の可能性に感心しました。私のように桐win空白時代に桐以外のデータベースソフトの使用を余儀なくされている人の中にこの一括処理が役に立つ人が方がいるものと想像してます。これを機会に私も一括処理が使いこなせるよう少し勉強してみます。

あらためて、ありがとうございました。

戻る