みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Hiro 様
ご回答ありがとうございます。
ひとまず、テキストエディタで対応出来ました。
カスタムCSVを用いる方法は、調べてみたいと思います。
ありがとうございました。
tim 様
ご回答ありがとうございます。
Applescript を使わない方法でも可能とのこと。
オブジェクトフィールドの使い方を調べてみたいと思います。
ありがとうございました。
環境は FM10 Mac です。
フィールド値が
あいうえお(改行コード)
かきくけこ
のフィールド内の2行であった場合、レコードのエクスポートを行うと
あいうえお かきくけこ
と半角スペースのあとにフィールド内の2行目が続いてしまいます。
これを、そのまま(改行コード)を入れることはできないでしょうか。
よろしくお願い申し上げます。
旅人 様
ご教示いただきありがとうございます。
Applescript は敷居が高いのですが、少し調べてみたいと思います。
ありがとうございました。
環境は FM10 Mac です。
レコードのインポートにおいて、その場でレコード 例「xxx123.csv」を人間に動的に選択させて、
様々な処理を行ったうえで、インポートしたときに同じレコード名 例 xxx123.csv」でエクスポートするようなオペレーションが
可能であればどのように実現するのでしょうか。
レコード名は日次で変わります。
チポ 様
ご教示ありがとうございます。
思っていた処理を行うことができました。
ありがとうございました。
旅人 様
説明が不十分で申し訳ありません。
全レコードを削除して、すぐにエクスポートするという一連の処理ではなく、それぞれのケースです。
M1 から M2 の全削除をする方法や、M1 から M2 のエクスポートをする方法がわかりません。
関連レコード移動は、手動で行う場合にテーブルを移動すればできるので、そうなのかと思ったのですが意味が無いとのことですので、どのように実現できるのでしょうか。
環境は FM10 Mac です。
M1 テーブル、M2 テーブル 2つのテーブルがあります。
M1 テーブルのボタンを押してスクリプトを動かし、下記の処理を行いたいのですが出来ていません。
・M2 の全レコードを削除する。
・M2 のレコードをエクスポートする。
いずれも
関連レコードへ移動[テーブル:「M2」;使用するレイアウト:「M2」(M2)]
全レコードを表示
を行ってから
対象レコードを削除
レコードのエクスポート
を行っています。
よろしくお願い申し上げます。
Shin 様
正しく動くようになりました。
レイアウトでこのような機能を追加できるのは便利ですね。
ファイルメーカーを使い込んでらっしゃるようで尊敬します。
ありがとうございました。
Shin 様
>> M1側にも値を設定していますか。
M1側の データの格納 グローバル格納 にチェックをする以外に何か値を設定するのでしょうか。
https://www.dropbox.com/s/jaz29hjtoj0at … 3.zip?dl=0
Shin 様
EDIT-有効 に「有効」を自動入力
M1-有効(グローバル格納)に「=」でリレーション
ということだと思うのですが、同じ設定をしてみたところスクリプトが機能しなくなりました。
EDIT-有効 のレイアウトに □に× のチェックボックス?の表示が出ていないことに関係あるのかと思いますが、理由がわかりません。
また、この方法の利点(実用的)はどういったポイントなのかご教示いただければ幸いです。
どうぞ、よろしくお願い申し上げます。
Shin 様
ありがとうございます。
dropbox へのリンクが見当たらないようです。
よろしくお願い申し上げます。
Shin 様
お手数をおかけし申し訳ございませんでした。
> M1 と EDIT にいわゆる×リレーションを張り、
「×」を見落としておりました。
正しく動くようになりました。
いつも、ありがとうございます。
下記にアップしました。
https://www.dropbox.com/s/64qqt54wygfxk … 3.zip?dl=0
M1.fp7 EDIT.fp7 は「あいうえお」などのデータです。
M1_br.fp7 EDIT_br.fp7 は最初に示したデータです。
どうぞ、よろしくお願い申し上げます。
Shin 様
改行等は入っていませんでした。
関連レコードへ移動の結果オプション「関連レコードのみを表示」のチェックを外し忘れていました。
しかし、結果は下記のようになりました。
結果
M1 Text
なにぬねの
?
?
はひふへほ
?
また、最初に示したデータでは何も動かないのは同じ状況でした。
お忙しいところ、申し訳ございません。
どうぞ、よろしくお願い申し上げます。
Shin 様
いつもありがとうございます。
前述のデータにて EDIT テーブルで下記のスクリプトを実行しました。
エラー処理[オン]
全レコードを表示
関連レコードへ移動 → M1
If [Get(最終エラー)=0]
フィールド内容の全置換[M1::TEXT; Evaluate ( "Substitute ( Text ; " & Substitute ( List ( EDIT::EDIT12 ) ; ¶ ; ";" ) & " )" )
Enf if
全レコードを表示
すると何も起こりませんでした。
そこで、下記のデータに切り替えて同スクリプトを実行したところ、下記の結果になりました。
M1 Text
あいうえお
かあいうえおき
あいたちつてと
たちつてと
たちつてとあ
EDIT EDIT1 EDIT2 EDIT12(自動入力)
あいうえお なにぬねの ["あいうえお" ; "なにぬねの"]
たちつてと はひふへほ ["たちつてと" ; "はひふへほ"]
結果
M1 Text
なにぬねの
かあいうえおき
あいたちつてと
はひふへほ
たちつてとあ
Text フィールドと全一致しないと置換されない理由は何でしょうか。
また、このスクリプトでは「<br>」などの文字が入ると動作しないのでしょうか。
教えていただいたサンプルファイルに「<br>」を入れても正しく Text_ フィールドは置換されています。
何か致命的な勘違いをしていそうです。
どうぞ、よろしくお願い申し上げます。
環境は FileMaker 10 Mac です。
下記の処理を行いたいのですが、フィールド内の一部の文字のみを置換する方法を教えていただけないでしょうか。
テーブル M1 に Text というフィールドがあります。
テーブル EDIT には EDIT1 と EDIT2 というフィールドがあります。
例
M1 Text
<br>・相違点のみを変換する。
<br>・一致点のみを変換する。
EDIT EDIT1 EDIT2
<br>・相違点 違う部分
<br>・一致点 同じ部分
変換する 取り換える
結果
M1 Text
違う部分のみを取り換える。
同じ部分のみを取り換える。
EDIT テーブルを設けた理由は、置換する条件や内容が増えたり変わったりする可能性があり、スクリプト内に埋め込みたくなかったためです。
EDITテーブルを順次読み「対象レコードの絞り込み」で「M1::TEXT=EDIT::EDIT1」とし、次のステップで上記の処理を行うのではないかと考えたのですが、フィールド内の一部の文字のみを置換する方法がわかりません。
どうぞ、よろしくお願い申し上げます。
Shin 様
M2側に持たせることで、先の処理と同時に効率的に処理ができるようになりました。
お忙しい中、お付き合い頂きましてありがとうございました。
Shin 様
「自動入力」を教えていただきありがとうございます。
インポート方法で
・対象レコードの既存のレコードを更新
こちらで、希望する正しい結果が得られました。
ありがとうございました。
・対象レコードで一致するレコードを更新
こちらでは、M1-resist に値が入りませんでした。
一つ前に教えていただいたスクリプトでは、こちらの方法にて正しく更新されていましたが、今回はこれで正しい動きなのでしょうか。
いつもありがとうございます。
どうぞ、よろしくお願い申し上げます。
Shin 様
ご指摘の通り、=="OK" で対応出来ました。
また、M2 も削除されておらず、見えていないだけでした。
確認不足で申し訳ございませんでした。
次のつまずきを、出来れば教えていただきたいのですが。
M1 - code Text option resist
M2 - code condition Text option resist1 resist2 resist3
先の応用で、下記のような処理は可能であることを確認しました。
1.M2-resist3 が > 0 の場合、M2-resist3 を M1-resist に代入。
しかし、下記のような計算式を伴った場合、対象レコードの絞り込みで対応できそうにないのですが、可能でしょうか。
2.M2-resist3 が ≦ 0 かつ M2-resist1 ✕ 1.1 > M2-resist2 の場合、M2-resist2 を M1-resist に代入。
3.M2-resist3 が ≦ 0 かつ M2-resist1 ✕ 1.1 ≦ M2-resist2 の場合、M2-resist1 ✕ 1.1 を M1-resist に代入。
度々申し訳ございません。
どうぞ、よろしくお願い申し上げます。
Shin 様
洗練されたスクリプトを教えていただき、ありがとうございます。
テストをしていて気がついた事象について質問させてください。
日本語以外のフィールドの場合に「"OK"」で対象レコードを絞り込むと、どうも OK1 や OK123 なども対象になってしまうようですが、これをただ OK だけのフィールドのみを対象とすることはできるのでしょうか。
http://www.filemaker.com/help/12/fmp/jp … t.5.6.html
M1 の削除対象レコードを削除すると同時に、対応する M2 のレコードも削除されてしまうようなのですが、 M2 のレコードを残すことはできないでしょうか。
どうぞ、よろしくお願い申し上げます。
度々、申し訳ございません。
書いたスクリプトを文字としてコピーする方法はないのでしょううか。
全選択しても行で選択肢ても、コピーできませんでした。
よろしくお願い申し上げます。
お世話になります。
スクリプトを書いてみました。
他の開発言語では M2 を M1 の code で検索しないといけないはずですが、
FileMaker では、あらかじめ M1 - M2 が code でリレーションさせれば
その必要はないとの(誤った?)前提になっています。
・LOOP の次のステップで M2 を検索する必要がある場合、そのスクリプトは何でしょうか。
・コピー・貼り付けはこの冗長な方法であっているのでしょうか。
ちなみに、M1 と M2 の関係は M2 はマスタ的な役割で、フィールドは M1 よりも多く、レコード数も多く、リアルタイムに更新されます。
M1 は、そのうちの一部のデータを抜粋し、M2 より一部のフィールドをコピーしたレコード構成です。
例
M1 code 001 010 020 100 300
M2 code 001 002 003 004 005...
エラー処理[オン]
レイアウトの切り替え[「M1」(M1)]
全レコードを表示
レコード/検索条件/ページヘ移動[最初の]
LOOP
if[M2::condition = "OK"]
コピー[選択; M2::text]
貼り付け[選択; M1::text]
コピー[選択; M2::option]
貼り付け[選択; M1::option]
Else
対象レコードを削除[ダイアログなし]
End if
レコード/検索条件/ページヘ移動[次の; 最後まできたら終了]
End Loop
どうぞ、よろしくお願い申し上げます。
超初心者で申し訳ございません。
環境は FileMaker 10 Mac です。
下記の処理を行うスクリプトを教えていただけないでしょうか。
2つのテーブル M1 と M2 があります。
2つは同じフィールド名 code によってリレーションシップされています。
M1 の1レコード目を読み、その code で M2 を検索し、その M2 のレコードのフィールド condition が "OK" であれば以下の処理1を行います。
condition が "OK" でなければ以下の処理2を行います。
処理1
M2 のフィールド Text を M1 の同名フィールドにコピーします。
M2 のフィールド option を M1 の同名フィールドにコピーします。
処理2
M1 の同レコードを削除します。
以降、M1 を2レコード目、3レコード目と繰り返し、最終レコードの処理を行うまで loop して終了します。
どうぞ、よろしくお願い申し上げます。
みなさまご返答ありがとうございます。
たいへん参考になります。
これから実際に組み込んでテストしたいと思います。
ありがとうございました。
[ Generated in 0.006 seconds, 6 queries executed - Memory usage: 659.73 KiB (Peak: 697.38 KiB) ]