みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
WINのVer.10で「A」と名付けたテーブルのデータを同じファイルの「B」と名付けた別のテーブルにインポートするスクリプトを作りたいです。
スクリプトの中に「変数を設定[$Filename;値Get ( ファイル名 )]」を入れて、Bにインポートするスクリプト「レコードのインポート」のファイルパスを「file:$Filename」としてみました。
しかしこれではスクリプトを実行しても何の反応もしません。たしかにこれだけではテーブルAが指定されていないのでだめなのでしょうか。
「変数を設定[$Filename;値Get ( ファイル名 )]」の段階で、テーブル名を指定する何らかのプロセスがあるのでしょうか。
それとも、大昔のファイルメーカーのようにいったんファイルパスを使わずにファイル名そのものを指定してインポートをした後で、何かをすればよいのでしょうか。
ファイルパスの名称も$Filenameでよいのか「file:$Filename」にすべきか、拡張子fp7を付けるべきなのかも悩みです。
一度、実ファイルでインポートの詳細を設定して、それからファイルを仮想化するように設定します。
フィールド間の関係の設定は、必要でしょう。
パスの書き方は、一部だけ変数にすることもできたと思いますが、全部を設定した方が安全でしょう。
Last edited by Shin (2013-09-15 19:13:58)
Offline
つまり、
ファイルパスを「file:$Filename」
だけだと、スクリプトが実行されるまで変数値が空=ファイル指定が無効なので、設定ができません。
ファイルパスの2行目に「file:実ファイル名」を追加してテーブルやインポート順を設定します。
インポートスクリプトステップでデータソースを自分自身のファイルにして
インポート順設定窓でインポート元とインポート先、インポートフィールド
を指定するだけで変数とか要りませんよ。
Offline
それは、
ファイルパスを「file:実ファイル名」に設定
ということなんで、通常はそれでもいいですが
ファイルを別名にした場合に元のファイルからインポートという意味になります。
ファイル名の変更の話は出ていないですけど・・・
Get (ファイル名 )を使うのでしたら、
>ファイルパスの2行目に「file:実ファイル名」を追加して
とかは要らないでしょうし。
でも最初から変数を使ったスクリプトだとレイアウト切り替えも必要でしょうし
その段階まで行っていないわけで、私の書いた方法がお勧めです。
Offline
一応書いておきますが、ファイル名変更もありそうで変数を使うときは
変数を設定[$Filename;値 Get (ファイルパス)] として
Bにインポートするスクリプト「レコードのインポート」のファイルパス指定は
$Filename です。
Offline
変数の場合には、
>ファイルパスの2行目に「file:実ファイル名」を追加して
等をやらないと、
>インポート順設定窓でインポート元
が指定できません。
でも、インポート先、インポートフィールドはめくらめっぽうで設定できないわけでもないですね。
実行すると、指定してないのに勝手に(最初に作った?)テーブルを選んでインポートが実行されました。
指定してあっても、スクリプトを印刷した時には何も表示されないorz
変数を使うとダイアログありでしか確認出来ないし、インポート順修正は
最初からやりなおしですし不便ですよね。
Offline
変数の場合には、
>ファイルパスの2行目に「file:実ファイル名」を追加して
等をやらないと、
>インポート順設定窓でインポート元
が指定できません。
ということではなくて、ローカル変数を使っていますね。それはスクリプトの中でしか有効ではありませんので、FMは、インポート対象のファイルがわからないのです。
実行すると、指定してないのに勝手に(最初に作った?)テーブルを選んでインポートが実行されました。
指定してあっても、スクリプトを印刷した時には何も表示されないorz
それは無いと思いますが。
Offline
「等」を追加して送信直前に突っ込み対策してたんです。変数値が設定されてれば「2行目」は不要なんで、ローカル変数で可能か調べるのが面倒で横着しました。
スクリプト一時停止中はスクリプト定義ができないし、データビューアの変数も反映しないし、ローカル変数では無理みたいです。
実際にそうなってますんで。FM12でやってたので10でもやってみましたが、同じです。それをあてにしてスクリプトを作ってたらあかんと思いますけど。
(ファイル名と同じ名前のテーブル、かもしれない)
印刷には
ソース: 「$f」 OR 「file:test.fp7」; ターゲット: 「FM11」;
という具合でソースはファイルパスしか出てこないし、インポート順は
ソースフィールド 1 のインポート FM11::ID
という風にフィールドの対応だけでテーブル名はない。
ついでに、左側は順番しか出てこない。「照合名順」じゃないからフィールド名は見ないということなんでしょうけど。
と思ったけど、「照合名順」でやってみてもそのことは出てこないので、照合名順なのか印刷したスクリプトを見てもわかりませんねorz
ローカル変数では、参照するファイルが存在しないことになるので、インポートの左側のフィールド名は出てきません。もし、そのファイルが1テーブル構成で、作成順のフィールド構成がわかるのでしたら、その構成に合わせてフィールドを数えながら設定しておくと、動くかもしれません。
一度、グローバル変数に変更して、変数を設定してから動かしてみると設定できるかもしれません。お試しあれ。
Offline
[ Generated in 0.007 seconds, 10 queries executed - Memory usage: 527.66 KiB (Peak: 548.2 KiB) ]