みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Win11 FMP18です。
表になっている文字データ(pdf)をWordに変換しました。
Wordから文字テキスト 例「a 電気総論」を、ファイルメーカーのフィールドに移動。
ファイルメーカーのフィールドには、Wordの文字テキストと同じテキスト「a 電気総論」と表示されています。
ところがこの文字列を使って、例えば「一致するレコードを検索」すると「この検索条件に一致するレコードがありません」、となります。
このとき検索された文字列は「a\ 電気総論」とか「a\ 電気総論 \」となっているためとわかりました。
Wordからドラッグアンドドロップで移動するとき、選択範囲がはみ出したりして移動後に余分なところを削除していたためと思います。
ファイルメーカーのテキストを、いったんメモ帳に移したのち同じフィールドに戻せば、変な¥なしのテキストになり、問題は解決します。
しかしレコード数が多く 切り取り-メモ帳貼り付け - コピー-ペースト、を繰り返すのは大変です。
スクリプトで「メモ帳に貼り付け」「メモ帳でコピー」ということをするにはどうしたらよいでしょうか。
Offline
そのフィールドをCode()で表示するとどうなってますか?
どのようなフォーマットで表になっているかは存じませんが…他ソフトからのデータ移行は様々な手法があると思います。
FileMakerはExcelとの親和性が割りと高く、ExcelファイルをFileMakerのショートカットにドロップするだけでインポートすることが可能です。
WordからのアプローチよりはExcelからのアプローチのほうが一気にインポート出来ると思われます。
少し手間にはなると思いますがExcelファイルにしてインポートを行えばいかがでしょうか?
PDF → Word → Excel → FileMaker
Offline
himadaneeさん ありがとうございます。
Code()で表示させると長い数字になるだけです。
ウィンさんありがとうございます。
表形式でとりこむというより、個々のテキストをドラッグ&ドロップしましたのでしましたので一気にインポートはできません。
すでにFileMakerに入力済みの500あまりのデータについて、もういちどメモ帳に貼って取り出してということが簡単にできないかを思案中です。
Offline
その Code() の結果が見たいのです。
Offline
文字コードが分かれば全置換で除去できるかもしれませんので。
テキスト形式でエクスポートして、メモ帳で開いて保存しなおして、それをインポート
でも直るかもしれないけど、コピペと同じになるかは微妙...
それに、「a\ 電気総論」の方は余分な文字「¥」が入ってるだけですが、「a\ 電気総論 \」の方は最後の「¥」の前のスペース(?)は余分なのかどうか判断できませんね。。。
「末尾に空白は絶対入らない」ならいいですが、でなければ自動処理は無理です。
いずれにしろ、投稿では¥やスペースに見える文字ですが、メモ帳へのコピペ(実はその際に手動で除去している部分もある?)で消えるなら実際は別の文字なので、Code()で調べるのです。
だけど、500ぐらいなら色々考えてるよりも、コピペしなおしたほうが早いかもしれない...
他のアプリからテキストのコピペでよくあるトラブルは、
Null文字が入ってしまうコトです。
Code()では、"0" 、
Base64Encode()では、"AA==" が返ってきます。
フィールドオプション-入力値の自動化-計算値(「フィ ー ルドに既存の値が存在する場合は置き換えない」のチェックを外す)
に以下の式を設定で置換できます。
Substitute ( Self ; Base64Decode ( "AA==" ) ; "" )
スクリプトや全置換でも置換可能です。
Substitute ( フィールド ; Base64Decode ( "AA==" ) ; "" )
Code()を聞いているのは、Null文字ではない他の文字が入っているかもしれないのでたずねています。
Offline
文字列をコードにしてもその判別は難しいでしょう。
文字列を繰り返しフィールドに一文字ずつ入力して、
そのコードを見れば分かりやすいのでは。
Offline
チョット試してみたら、Base64Encode ()では、制御文字(Null文字の場合)以降が取れないようなので、以下で確認するのが良さそう。
Code ()
HexEncode ()
GetAsCSS ()
何かの制御文字が入っているはずなので上記の値を教えてもらえれば進展するでしょう。
Offline
Shinさま himadaneeさま qb-dpさま
専門的なアドバイスありがとうございます。素人の小生には難しくてついて行けません。
フィールドに一見正しく入力されているようにみえる文字列が、実はいわく付きの文字列であるらしいことを修正するために、FileMaker→ Excel → FileMakerという簡単な方法で解決しました。(?)
テーブルの全レコードをExcelにエクスポートし、FMテーブルで全レコード削除のあと、Excelからインポートすると、おかしな記号がとれて入力されていました。
(本当にとれているのか確認のしようがありませんが、少なくとも一致するレコードを抽出は普通にできました)
お騒がせいたしました。
Offline
Code ()
HexEncode ()
GetAsCSS ()
これらの戻り値を教えてくれれば、進展するんですけど...
Offline
難しくてついて行けないじゃなくて......orz
Code()で表示させると長い数字になるだけです。
回答して下さる皆さんはその長い数字を知りたいんだと思いますよ。
関数の戻り値(関数を使ったときの結果)を答えることがそんなに困難なのですか?
Offline
勝手に解決にしてしまい失礼いたしました。
フィールドの値が「b 精密検査」のときCode()は
b 精密検査 変な記号付きのとき 266192690823494319340003200098 と表示されています
b 精密検査 メモで修正したときも 266192690823494319340003200098
フィールドの値が「ISO 15189」のときCode()は
ISO 15189 変な記号付きのとき 570005600049000530004900032000790008300073
ISO 15189 メモで修正したとき 570005600049000530004900032000790008300073
この数字からどのような判断がなされるのでしょうか。
Offline
全く同じですか。
null文字だとコードが0なので、末尾についてるとCodeの結果に出なくなりますが
文字列の途中なら00000で現れるはずですよね。
「変な記号」に見えることもないだろうし
HexCode だとどうなりますか
Offline
このとき検索された文字列は「a\ 電気総論」とか「a\ 電気総論 \」となっているためとわかりました。
これは、どうやって確認したのでしょうか? 何かのエディタにペーストしたのでしょうか?
ついでに GetAsCSS () も気になりますね。
Offline
難しい取り回しはともかく…
検索の際、Wordからコピーしてきた文字をフィールドに貼り付けて検索をおこなうと「この検索条件に一致するレコードがありません」となります。
しかし、フィールドに「電気総論」と直接打ち込んで検索をかけた場合は、例えWordからペーストした文字も直接打ち込んだ文字の両方が検索にしっかりひっかかってきます。
つまり、検索の際にフィールドにWordからコピペしたことに問題が発生したのではないでしょうか。
Offline
あれ?
「検索された文字列」は「検索条件」の方なのか。検索条件なら「検索した」だと思ってましたけど、
「一致するレコードを検索」と書いてあったので、検索条件は入力せずに「現在のレコードと同じ値」を検索しているのに1件も該当しない現象かと思ってました。
null文字があっても無視して(ないものとして)検索されるようですが、どっちにしても、その操作であればどんな状況でも少なくとも自分自身は検索されないとおかしいですよね。
今更ですが、検索なのでフィールドの索引も関係しますね。
#16も聞くのを忘れてましたね。
「検索しても出てこないので見つかるべきレコードを調べたらフィールド値がそのように見えている」状況だと思ってましたが
Shinさま
HexCode()というのが見つからず HexEncode()に
①WordからD&Dしたての「ISO 15189」と、②修正したテキスト「ISO 15189」を入れてみました。
① 49534F20313531383900
② 49534F203135313839
となっています。
qb-dpさま
検索された文字列はどうやって確認したかについてですが、
フィールドで右クリック → 一致するレコードを検索(M)→アラート「この検索条件に一致するレコードがありません」が表示され、
検索条件のフィールドに「ISO\ 15189」と表示されています。
自分自身が検索抽出されないのは確かにおかしいですね。
一方、ウィン様のおっしゃるように
修正したテキスト「ISO 15189」で検索するとき、「ISO\ 15189」のレコード(表示はISO 15189とみえている)も抽出されます。
この記号(\)が入るのは、スペース部分のみです。なにか無視する約束語みたいなものなのでしょうか。
●いろいろ試行錯誤して気がついたのですが、
文字列の移動に際して、Wordでちゃんと「コピー」して、FileMakerで「ペースト」すれば、このような問題が起こらないことに気づきました。
「ISO\ 15189」のレコードでこのフィールドをコピーしてから、検索モードでフィールドにペーストするとちゃんと検索されます。
横着してドラッグ&ドロップしたためかと思われます。
Offline
すみません、HexEncode でしたね。
違いがでたでしょう。みなさんの予想通りん null が付加されています。
Offline
「一致するレコードを検索」後に \ が表示されるのは謎の仕様です。
実際には \ が入っているのではなく、① 49534F20313531383900 で示されているように、code(0) が入っています。
#7 の以下で置換可能です。
フィールドオプション-入力値の自動化-計算値(「フィ ー ルドに既存の値が存在する場合は置き換えない」のチェックを外す)
に以下の式を設定で置換できます。
Substitute ( Self ; Base64Decode ( "AA==" ) ; "" )
スクリプトや全置換でも置換可能です。
Substitute ( フィールド ; Base64Decode ( "AA==" ) ; "" )
Offline
qb_dpさんありがとうございます。
お示しいただいた方法できれいに修正されます。
知らないことばかりです。
Offline
Pages: 1
[ Generated in 0.011 seconds, 8 queries executed - Memory usage: 566.47 KiB (Peak: 587.01 KiB) ]