みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
win7,ファイルメーカー8
全角文字、半角カタカナが混ざった「商品名」というフィールドがあります。
この商品名を左から36バイト分に区切ってcsv書き出しをしたいのですが
どのようにすればいいでしょうか。
Offline
取り込み先のシステムが36桁以上あると、エラーではじかれる仕組みになっていて
ファイルメーカー側で書き出す際に36バイトにして出力する必要があります。
なるべく多くの文字数を取り込みたいので、カタカナ英字は半角にしてあります。
例えば「あいうえお」という文字から9バイト抽出した場合、最後の「お」が文字化けしてしまうので
そこを何とかしたいのですが、やはり全角半角混在していると難しいですかね。。。
Offline
「あいうえお」という文字から9バイト抽出した場合、最後の「お」が文字化けしてしまう
どのように取り出しているのか分りませんが、
このような場合は8バイトで区切ってはダメなのですか?
Offline
あ、スイマセン。そもそもまだ36桁以上はまだ取り出せてませんでした…
文字化けの件はシステム側の担当者に言われたんですが、
Case ( Length ( 商品名 & Filter ( 商品名 ; RomanHankaku ( KanaHankaku ( 商品名 ) ))) ≤ 36 ; 商品名 )
で36バイト以内の商品名だけ取り出せてます。
今のところ、全角が(36バイト37バイト目に)きた場合表示されていないので
36バイト以内の商品名はこのまま書き出せば大丈夫そうですが
36バイト以上の商品名を、36バイトで区切って取り出す方法が分からないです。
Offline
全角が(36バイト37バイト目に)きた場合
この場合は35バイトで区切る
とすれば、
左から一文字ずつバイト数を数えてゆき、
37バイト以上になった時点の文字数から-1した文字数を取り出せばいいですよね。
これをスクリプトにすればいいですが、、
再帰式の計算フィールドでもできそうですが、私は苦手。。
Offline
なるほど。ありがとうございます。
ちょっと調べてやってみます。
Offline
Pages: 1
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 573.13 KiB (Peak: 602.89 KiB) ]