みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境は、最初に書いてくださいね。
色々すみませんでした。
FilemakerPro12も10年以上も前に導入済みで先日からはFilemaker2023の試用版も使い始めていました。
ただデータの変換が一部でうまくいかず、結局FilemakerPro8をメインで使い続けている状況です。
FilemakerPro12もFilemaker2023も重たい集計作業がFilemakerPro8よりも安定しているのでその点において移行したいのですが、
FilemakerPro12もFilemaker2023もポータルとの間を行き来するスクリプトが特にバグってしまうようで、それを解決しないことには移行できそうにありません。
そんな訳でFilemakerPro8を使い続けてきましたが、やっぱり古いFilemakerはもうダメなんですね。。。
色々ありがとうございました。
#! のxml を生成するものです。
ファイルの取扱いは、オブジェクトフィールドを作っておき、そこにファイルをドロップします。(テキストフィールドにドロップできました?)
そのトリガーで、そのファイルをテンポラリーフォルダーへ、ファイル名を変更(xxx.txt)してエクスポートし、それを、URLから挿入でインポートすればいいはずです。
↑↑↑
Shin様からきっと貴重なご助言を頂戴している筈なのですが、わたくしの理解が「#8」までで止まっており、それ以降の皆様の発言を殆どというか全く理解できていません。。
なお、作成したオブジェクフィールドにXMLファイルをドロップはできましたが、アイコン付きのファイルがそこに収まっただけです、(もちろんテキストフィールドにはドロップすらできませんでした)
Shin様のお話を自分なりに解釈すると、
とある設定によって、オブジェクトフィールドにXMLファイルをドロップすると、それがトリガーとなって、ドロップされたXMLファイルがテンポラリーフォルダーに格納され、
そこでファイルの拡張子が「.xml」から「.txt」に変更される。
そのファイルが収まっているテンポラリーフォルダーのURLを「URLから挿入」の際に指定したうえで件の.txtファイルを指定のフィールドにインポートする。
って感じでしょうか?
>テキストフィールドにつまんで持ってくる
テキストでなくオブジェクトフィールドなら入れられます。ファイル内容はGetContainerAttribute()ではなぜか取得する方法がないので
HexDecode ( HexEncode ( テーブル::オブジェクトフィールド ) )
とかやります。
himadanee様
折角ご助言いただいたのですが、当方のFMはバージョン8で、HexDecode関数が存在しないようです。。
#! のxml を生成するものです。
Shin様、「#!」が何を指すのか教えていただけますか?
また、ご案内いただいた、
Let (
[
xml =
"<?xml version="1.0" encoding="utf-8"?>¶<root>¶ <child>¶
<氏>fname</氏>¶
・・・・・(中略)・・・・・
] ;
Substitute ( xml ;[ "fname" ; $fname ]:[ "sname" ; $sname ]:[ "group" ; $group ]:[ "score" ; $score ])
)
は、どこに記すべき計算式でしょうか?インポート用(ドラッグ&ドロップ用)のオブジェクトフィールドなのでしょうか???
また当方がインポートせんとするXMLファイルの場合、例えば「<氏>fname</氏>¶」と記述された箇所は「<name>氏名</name>¶」として、
インポート先の「氏名」フィールドに name が収まるように意図したものなのでしょうか???
質問になっていなかったらすみません(-_-;)
オンライン資格認証の取り込みですか。
そうです。
ご用意いただいたサンプルにて、右側の大きなテキストフィールドにXMLのテキストをコピペすることで、左側の細目のフィールド群に得たいものが得たい形で表示されるようになりました。ありがとうございました。
ただマイナンバーカードから読み取った保険証データはXMLファイルとしてローカルフォルダに保存されているので、
XMLファイルをそのまま件のテキストフィールドにつまんで持ってくると、FileMakerのXMLファイルインポートのダイヤログが開いてしまい、それをテキストとして取り込むことができません。
XMLファイルをメモ帳で開いて内容テキストをコピー&ペーストするか、メモ帳で開いたそのファイルを.txtファイルとして保存し、それをつまんで当該フィールドに持ってくるか、といったアクション数の多い作業になってしまっています。
なんだか面倒くさいのですが、差し当たり仕方ないのでしょうか?
それとも、今回新たにご提案いただいた、以下の
Let (
[
xml =
"<?xml version="1.0" encoding="utf-8"?>¶<root>¶ <child>¶
<氏>fname</氏>¶
<名>sname</名>¶
<グループ>group</グループ>¶
<スコア>score</スコア>¶ </child>¶</root>"
] ;
Substitute ( xml ;[ "fname" ; $fname ]:[ "sname" ; $sname ]:[ "group" ; $group ]:[ "score" ; $score ])
)
は、その面倒な事象に対する対応策なのでしょうか???
https://community.claris.com/ja/s/quest … 6EfWakCAF/
内容と投稿時期に類似点がありますがもしマルチポストでしたら展開していないほうはクローズしたほうが良いでしょう。
マルチポストはマナー違反として好まれないことが多いでしょう。
削除できないのです。
Your administrator has disabled feed post and comment deletions.
削除を試みたのですが、上記のような文言が表示され削除できないのです。
お手数ですが削除の方法も教えていただけますか?
テキスト処理したほうが簡単ですね。"斉藤" を取り出すには、
Let (
[
xml = テキスト ;
tag = "氏" ;
stag = “<“ & tag & “>” ;
etag = “</“ & tag & “>” ;
xml = Substitute ( xml ;[ ¶ ; "" ];[ stag ; stag & ¶ ];[ etag ; ¶ & etag ])
] ;
MiddleValues ( xml ; 2 ; 1 )
)
↑↑↑
これはXSLT内の記述でしょうか???
それとも目的のXMLをメモ帳か何かで開いて、その文字列を特定のフィールドにコピペして、それから処理するやり方やり方のことでしょうか?
己のレベルが圧倒的に低すぎて、この質問が適切かどうかもわかりません。すみません。。
XSLTがわからないなら、単純にXML全体を1フィールドに取り込んで、Position()などで切り出したほうが分かりやすいと思います。
XSLTのサンプルを色々弄ってみていますが全く望みの結果が得られませんでした。
したがってhimadanee様の上記アドバイスに従おうと思います。
実際以下のようなXMLのインポートを試みていました。
己の知識とスキルの圧倒的な低さを鑑み、このたび方針転換し、
差し当たり含まれる文字&数字データを見やすいように表示させられれば御の字と考えるようになりました。←それをターゲットのフィールドに適宜コピペします。面倒ですが。。。
本来はインポートしたそれぞれの文字&数字データをそれぞれのターゲットフィールドに自動的に納めたいのですが、自分のレベルが圧倒的に低すぎて本業のスキマ時間での生半可な作業では到底対応できず、いよいよ本業に差支えも出そうになってきたので断念しました。。
インポートしたいXML(*には数字や文字が入っている)
↓↓↓
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<XmlMsg>
<MessageHeader>
<ProcessExecutionTime>***************</ProcessExecutionTime>
<CharacterCodeIdentifier>*</CharacterCodeIdentifier>
<SegmentOfResult>*</SegmentOfResult>
<QualificationConfirmationDate>********</QualificationConfirmationDate>
<ReferenceClassification>*</ReferenceClassification>
<ArbitraryFileIdentifier>**************=</ArbitraryFileIdentifier>
<MedicalInstitutionCode>*********</MedicalInstitutionCode>
</MessageHeader>
<MessageBody>
<ResultList>
<ResultOfQualificationConfirmation>
<Address>*******************************</Address>
<SpecificHealthCheckupsInfoConsTime>**************</SpecificHealthCheckupsInfoConsTime>
<DiagnosisInfoConsFlg>*</DiagnosisInfoConsFlg>
<SpecificHealthCheckupsInfoAvailableTime>**************</SpecificHealthCheckupsInfoAvailableTime>
<PersonalFamilyClassification>*</PersonalFamilyClassification>
<Sex1>*</Sex1>
<SpecificDiseasesCertificateRelatedConsFlg>*</SpecificDiseasesCertificateRelatedConsFlg>
<OperationInfoConsFlg>*</OperationInfoConsFlg>
<Name>*******</Name>
<InsurerNumber>*******</InsurerNumber>
<InsuredCardSymbol>**</InsuredCardSymbol>
<NameKana>********</NameKana>
<InsuredCardValidDate>********</InsuredCardValidDate>
<LimitApplicationCertificateRelatedConsFlg>*</LimitApplicationCertificateRelatedConsFlg>
<InsuredCardClassification>**</InsuredCardClassification>
<InsuredBranchNumber>**</InsuredBranchNumber>
<Birthdate>********</Birthdate>
<InsuredCertificateIssuanceDate>********</InsuredCertificateIssuanceDate>
<InsuredIdentificationNumber>******</InsuredIdentificationNumber>
<PharmacistsInfoAvailableTime>**************</PharmacistsInfoAvailableTime>
<SpecificHealthCheckupsInfoConsFlg>*</SpecificHealthCheckupsInfoConsFlg>
<PharmacistsInfoConsTime>**************</PharmacistsInfoConsTime>
<PharmacistsInfoConsFlg>*</PharmacistsInfoConsFlg>
<InsurerName>****</InsurerName>
<PostNumber>**********</PostNumber>
</ResultOfQualificationConfirmation>
</ResultList>
<ProcessingResultStatus>*</ProcessingResultStatus>
<QualificationValidity>*</QualificationValidity>
</MessageBody>
</XmlMsg>
「XML全体を1フィールドに取り込んで、Position()などで切り出す」とは一体どういうことなのでしょうか?
XMLをテキストフィールドに取り込もうとするとXSLTを抱き合わせのXMLインポートダイアログが開いてしまい、テキストとして開くことができません。。。
Shin様、ご回答ありがとうございます。
その方法も試してみます
himadanee様
>1レコード用に変更してもfor-eachが1つ無くなるぐらいで「長すぎる」点は変わらないと思います。
>例えば前半のMETADATAは、どんなデータであっても必要な部分です。
>それで動くならそのまま使えばいいのでは。
早速のご回答ありがとうございます。今晩やってみます。
FileMaker提供のXMLとXSLTのサンプルがありますが、1レコードのみのインポートのためのXSLTの記述方法を教えてください。
すなわち、以下の1人分のXMLデータから、「斎藤」「麗子」「赤」「100」だけをFilemakerインポート用に変換するXSLTの記述を知りたいのです。
<?xml version="1.0" encoding="utf-8"?>
<root>
<child>
<氏>斉藤</氏>
<名>麗子</名>
<グループ>赤</グループ>
<スコア>100</スコア>
</child>
</root>
Filemaker提供のXSLTサンプルは複数人(複数レコード)のインポートに対応した記述になっています。
これを適宜省略して1レコード用の記述に変更したいのです。
↓↓↓
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/*">
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="" NAME="" VERSION=""/>
<DATABASE DATEFORMAT="M/d/yyyy" LAYOUT="" NAME="" RECORDS="{count(/*/*)}" TIMEFORMAT="h:mm:ss a"/>
<METADATA>
<xsl:for-each select="/*/*[position()=1]/*">
<FIELD>
<xsl:attribute name="EMPTYOK">YES</xsl:attribute>
<xsl:attribute name="MAXREPEAT">1</xsl:attribute>
<xsl:attribute name="NAME"><xsl:value-of select="name()"/></xsl:attribute>
<xsl:attribute name="TYPE">TEXT</xsl:attribute>
</FIELD>
</xsl:for-each>
</METADATA>
<RESULTSET>
<xsl:attribute name="FOUND"><xsl:value-of select="count(child::*)"/></xsl:attribute>
<xsl:for-each select="child::*">
<ROW>
<xsl:attribute name="MODID">0</xsl:attribute>
<xsl:attribute name="RECORDID">0</xsl:attribute>
<xsl:for-each select="child::*">
<COL>
<DATA>
<xsl:value-of select="."/>
</DATA>
</COL>
</xsl:for-each>
</ROW>
</xsl:for-each>
</RESULTSET>
</FMPXMLRESULT>
</xsl:template>
</xsl:stylesheet>
サンプルのXSLTは以上となっていて、素人目にも1レコードインポート用の記述としては長すぎると思います。
どの部分を削除すればいいのですか?
手元のXMLデータをFilemakerにインポートするには、Filemakerが読めるXMLデータに変換するXSLTが必要ということは分かっていますが、
どこにも簡単な例示資料がなく、理解の取っ掛かりがつかめません。
FilemakerとXSLTに詳しい方、教えてください。
具体的にはこんな例示資料が欲しいです
↓↓↓
[インポートしたいXML]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<XmlMsg>
<Address>●●●●●●●●</Address>
<Name>●●●●●●</Name>
</XmlMsg>
[XSLT]
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match=・・・・・・
・・・・・・・・・・・・・・・・・
・・このあたりの記述例が欲しい・・
・・・・・・・・・・・・・・・・・
</xsl:template>
</xsl:stylesheet>
やりたいこと…既存のFMデータベース上の指定のレコードの指定のフィールドに、以下のような対応でデータをインポートする
XMLのAddress●●●●●●●●を ➡ FMのデータベースの「住所」フィールドにインポート
XMLのName●●●●●●を ➡ FMのデータベースの「名前」フィールドにインポート
himadaneeさん、早速、最新版FMpro20の評価版をインストールし、古いファイル(fp7)を開いてみました。
変換作業は無事終了。
恐る恐る重たい集計作業を実行してみたのですが、、、
拍子抜けするほど正確に集計されていました。
積年のFilemakerトラウマから、なかなか新バージョンへ移行できないできましたが、
これを機に新バージョンに移行したいと思います。
背中を押していただきありがとうございました。
本人のスキルはむしろ落ちています。
よってバグが減っていることに期待するしかありません。。
FileMakerPro7で作成したファイルを引き続きFileMakerPro8Advancedで使っています。
Filemaker12が発売された時にデータの移行を試みましたが全くうまくいかず大失敗し、それがトラウマとなって現在でもFileMakerPro8Advancedを使い続けています。
しかし昨今ではFileMakerPro8を使っている人は殆ど存在しないようで、トラブル発生時に参考にできる情報が著しく乏しく危機感を感じています。
質問なのですが、現行最新版のFileMakerで過去の旧バージョン(FM7)のデータベースファイルを設計通り正しく動作させることは可能ですか?
可能な場合、その移行作業は過去(v12登場時)に比べ簡便になっていますか?
Pages: 1
[ Generated in 0.007 seconds, 6 queries executed - Memory usage: 704.02 KiB (Peak: 741.43 KiB) ]