ファイルメーカーPro5でのスクリプト定義について

このQ&Aのポイント
  • ファイルメーカーPro5で繰り返しフィールドのデータを切り取り、別のフィールドに貼り付けるスクリプト定義について詳しく教えてください。
  • 繰り返しフィールドのデータを切り取って別のフィールドに貼り付ける方法について、ファイルメーカーPro5のスクリプト定義の仕方を教えてください。
  • ファイルメーカーPro5で繰り返しフィールドのデータを切り取り、別のフィールドに貼り付けるスクリプトを正しく実行する方法を教えてください。
回答を見る
  • ベストアンサー

ファイルメーカーPro5でのスクリプト定義について

ファイルメーカーPro5で 繰り返しフィールド(例えば10個の)データを 切り取って、別のフィールドに貼り付けるスクリプト定義の仕方を詳しく教えてください。 考えているのは下記の例です。 今年度の販売物品(繰り返しフィールド:10個のデータ)を 別の空白フィールド(繰り返しフィールド:10個のデータ)に 切り取って貼り付ける方法です。 単に 切り取り[選択、「今年度の販売物品」] 貼り付け[選択、「別のフィールド」] ですと、繰り返しフィールドの1行目のデータしか スクリプトが実行されません。 あと「Loop」の使い方がよく分かりません。 併せて教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • rvr3958
  • ベストアンサー率33% (145/428)
回答No.2

「切り取る」と言う表現はWindows機能的な表現であり、これを実際にFileMaker機能の「切り取り」「貼り付け」とごっちゃにしては出来る処理も出来なくなります。 「切り取り」はWindows内部で次のように処理しています。 ・元の内容をクリップボードに取り出す。(COPY) ・取り出した後に元の内容をクリアする。 こうする事であたかも切り取ったように見せかけているのです。 これをスクリプトでも実現すれば良いのでは?具体的には、前述のロジックで全ての値のCOPYを終えたら、元の繰り返し項目にnull値を送るようなロジックを組んでしまえば良いでしょう。 「添字」とは繰り返し項目を扱う為の指標です。意味が分からないのであれば、ここでは「カウンター」と置き換えて頂いても構いません。単にカウントアップ出来るフィールドを数値タイプで作成して欲しいだけです。 「中間ワーク」も同様で、値を一時保管する場所としてグローバルフィールドを作成して欲しいだけです。但し、この領域は繰り返し項目のフィールドタイプに合わせて下さい。 ちなみにLoopを使わない別バージョン←ベタなやり方 計算結果を挿入「選択」「中間ワーク」「GetRepetition( コピー元 , 1 )」 計算結果を挿入「選択」「コピー先」「中間ワーク」 計算結果を挿入「選択」「コピー元」「""」 ・ ・(2)~(9)同様 ・ 計算結果を挿入「選択」「中間ワーク」「GetRepetition( コピー元-10 , 10 )」 計算結果を挿入「選択」「コピー先-10」「中間ワーク」 計算結果を挿入「選択」「コピー元-10」「""」

その他の回答 (1)

  • rvr3958
  • ベストアンサー率33% (145/428)
回答No.1

最も手っ取り早い方法は、コピー元フィールドをエクスポートし、コピー先フィールドへインポートし直すスクリプトを作成する事。但し全レコードが対象となってしまいます。 1レコードだけ対象にするには、フィールドに添字と中間ワークとなるグローバル項目を追加し、新しいレイアウトにコピー元と先の項目及び添字と中間ワークを表示します。 次にスクリプトで以下のステップを組みます。 1)フィールドへ移動「コピー先」 2)フィールド設定「添字」「1」 3)Loop 4) Exit Loop If(添字 > 10) 5) フィールド設定「中間ワーク」「GetRepetition( コピー元 , 添字 )」 6) 計算結果を挿入「選択」「中間ワーク」 7) 次のフィールドへ移動 8) フィールド設定「添字」「添字 + 1」 9)End Loop 【重要】 6)の計算結果を挿入ですが、挿入先の項目名は指定しません。「計算結果」が「中間ワーク」となります。 ついでにLoopの使い方ですが、この場合添字に1を設定し、この添字が10を超えるとLoopを抜け出るようExit Loop Ifを条件設定しています。 要はLoopを使う場合に何らかのLoop脱出条件を忘れずにつける事。これさえ忘れなければLoopは怖いものではありません。 ただし、このようなLoopステップはかなり処理が遅くなります。100回やそこらのLoopは良いですが何千件もLoopさせるとしばらく返答の無い結果となりますのでご注意を…。

annalee
質問者

補足

早速のお返事ありがとうございます。 「添字」というのがよく分かりません。 あと中間ワークについても補足をお願いしてもよろしいでしょうか? 繰り返しフィールド1にあるデータをすべて切り取って、別の繰り返しフィールドに貼り付けたいのです。 コピーではなく切り取りたいのですが・・・ とても難しいです。

関連するQ&A

  • ファイルメーカで「コピー」スクリプト

    ファイルメーカPro 4.1でスクリプトを定義しようとしています。 1. 関連レコード内のフィールドを指定してコピー 2. 現在のファイル内のフィールドを指定して貼り付け というステップを定義すると、現在のファイル内の当該レイアウト上に別途、「コピー元のフィールドをそのまま配置」しておいた場合に限りうまく機能し、それ無しでは、1. のコピーの段階が正しく行われない(クリップボードに変化なし)ようです。貼り付けの段階は正しく行われているようですが。。 これはバグでしょうか? それともスクリプトの定義の仕方に問題があるのでしょうか?

  • ファイルメーカーのスクリプト定義について教えてください

    都道府県別に検索ソートしたデータ―中、その住所を封筒に印刷する支持をスクリプト定義でつくりボタンを作りました。 一つ一つは、ボタンを押せば実行できるのですが、一つ一つボタンを押す手間を省きたいのでこれらのボタン(スクリプト定義)をさらにまとめて実行できるボタン(スクリプト定義)を作りたいのですが、それは可能でしょうか? 個々のスクリプト定義に検索ソートのみの指示が入っているものならば下記の定義内容でまとめて実行することはできました。  スクリプト実行[東京都]  スクリプト実行[神奈川県]  スクリプト実行[静岡件] ですが、印刷の指示が入っていると印刷はされず、また該当件数も最後スクリプト(上記だと静岡県)分しか表示されません。 印刷が入っていると不可能なのでしょうか?

  • ファイルメーカーPro8について

    今月から働き始めた職場でMacのファイルメーカーPro8による情報管理をされています。 普段の仕事はWindowsで、これまでもMacの利用経験がない為さっぱりわかりません。 一応引き継ぎは受けたものの、前任者もたまにしか使わない為記憶が怪しく、今日久しぶりに挑戦したところおかしなことなってしまいました・・・ 年に数回研究会が開催され(職場は大学)、その度に前回のレイアウトをレイアウト複製し、そのコピーの各フィールドを変更して入力するよう言われたのですが、見た目上は新しいのができたものの、データを入力してみると、前回分と混ざって2回分の混ざったデータが2つ出来てしまいました。 ファイルからのフィールド定義と値一覧の定義のやり方が間違っていたのではと思うのですが・・・ コピーして持ってきたフィールドを別の新しいものとして設定するにはどうしたらいいのか教えていただきたいです。 長くてすみません。宜しくお願いいたします。

    • 締切済み
    • Mac
  • ファイルメーカーで繰り返しフィールドの一括消去

    ファイルメーカーで繰り返しフィールドに入力した データをスクリプトで一括で消去したいのですが、 スクリプトの時点では繰り返しフィールドの繰り返し 位置は指定できるのですが、1から20といった指定が 出来ません。 教えてください。 よろしくお願いいたします。

  • ファイルメーカーのスクリプトについて質問です。

    ファイルメーカー5を使ってます。 Aのファイルは受注ファイル、Bのファイルは出荷ファイルにしています。 リレーションを組んで、AのファイルにポータルでBを表示しています。 Aに対して、Bが2ヶ以上の時はあるフィールドに印を付けたくてスクリプトを組みました。 Aのファイルで リレーションを組んでるフィールドをコピー 外部スクリプト(Bへ) Bのファイルで エラー処理[オン] 全レコードを表示 レイアウト切り替え 検索モードに切り替え 貼り付け[Aでコピーしたもの] 検索の実行 If[「status(対象レコード)>=2」] スクリプトの実行[サブスクリプト 外部[Aのファイルとスクリプト1] Else スクリプトの実行[サブスクリプト 外部[Aのファイルとスクリプト2] End If を組んでいるのですが、Aのファイルでスクリプトを実行するとBの検索の実行(検索結果は表示します)で止まってしまいます。 そのまま、Bのファイルでもう一度スクリプトを実行するとちゃんとAのファイルに戻って処理を完了します。 どうしてなのでしょうか? 会社では汎用データー(AS)を基本的に使用しているのですが、色々と使いずらいのでファイルメーカーと併用して使ってます。 BのファイルはASから書き出したデーターをファイルメーカーに取り込んで使用しています。 誰かに教わった訳でもなく、自己流(?)で覚えてきたので、分りずらくてすみませんが教えて下さい。

  • ファイルメーカー8 データ加工後、別テーブルのフィールドへ移行

    こんにちは!! スクリプトにより、 フィールドのデータを、別テーブルのフィールドへ、 加工してから移行する時、どのようにやっていますか? たとえば、 テーブル1、テーブル2とあります。 テーブル1にはIDフィールド、テーブル2にはお客様番号フィールド。 移行したいレコードを、チェックボックスにより選択させ、 スクリプトを実行したとき、 選択されたレコードに対し テーブル1のIDフィールドを元に、 "hoge"を文頭に追加してから、テーブル2のお客様番号フィールドに 入力。 1レコード終わったら、次のレコード。 試しに1つ作ってみました。 移行元フィールドのデータをコピーし、移行先フィールドに移動、 貼り付け。 まだ、複数レコードがあっても、1フィールドだけなので 大丈夫ですが、 こういう処理をしたいフィールドは30以上あります。 もっと良いスクリプトの書き方は、ないでしょうか? なぜこのような事がしたいかと言いますと、 多店舗あるネットショップの顧客情報などを管理したいと思ってます。 それぞれのネットショップでは、顧客情報や商品情報などを 独自のフィールドでCSVとして吐き出します。 各店舗用テーブルへCSVを取り込み、 それぞれのスクリプトにより、 加工しながら、一括管理テーブルへと移行させたいのです。 説明が下手で申し訳ありませんが、何卒よろしくお願いいたします。

  • ファイルメーカーPro7でルックアップさせる手順 (かなりの初心者なのです)

    AとBのデータベースの項目をルックアップさせてみたいのですが 上手にいきません。 使い方としては、データAの登録者名とデータBの登録者名のルック アップ、若しくは同AとBのスケジュールのルックアップといったも のを行いたいのですが全くルックアップしてくれないのです。 お目あての項目はフィールド定義で「ルックアップ」と表示される ところまではいけたのですが、全く反映されないのです・・。 えっと、手元にある参考本は同ソフトの「6」版なのですが、こちら にはフィールド定義の部分で「ルックアップ,繰り返し」と表示され ているのですが私の方には「繰り返し」といった表記は出ていません。 ここなのかなぁ。。なんて悩んでいるのですが、どなたか手順を一か ら教えて頂けないでしょうか。お願い致します。

    • 締切済み
    • Mac
  • データファイルの取り扱いについて

    初歩的なご質問ですが、当方あまりくわしくないので教えてください。 サーバー内のあるファイルフォルダを別の場所に移動させようとして、 そのファイルフォルダを選択し、(切り取り)を選択して移動させようとしていました。 別のことをやっていて、そのデータを貼り付けもせず、そのままパソコンの電源を 切ってしまいました。 (切り取り)をしたファイルフォルダはどうなるのでしょうか? 消えてなくなってしまうのでしょうか? 初歩的な質問で本当に申し訳ありませんが、ご指導のほどよろしくお願いいたします。

  • エクセルの空白行削除と移動

    こんばんは。 仕事で大量のデータを扱っており、2万から3万行のデータを 2つのデータ種類に分けるため、あるところで区切られているところを境に、そこより下の行にあるデータをデータ入力後に上の行に移動するという作業を行っています。ある行を「切り取り」し、上の方にある空白行に「貼り付け」すると元の行が空白行として空いてしまいます。 そこで質問なのですが、この空白行を自動的になくす方法はあります でしょうか?  また、この行間移動が非常に多い(数千行移動したりするため) 目的行が見つけにくく、時間がかかってしまいます。移動する場所に は空白行が何行か空いているのですが、空白行に移動するような設定やマクロがあったら合わせて教えていただけるとうれしく思います。  ぜひよろしくお願いします。

  • ファイルメーカーでのインポート、ルックアップ、計算式等の違い

    ファイルメーカー初心者です。 FM6 Win版を使用しています。 <例> ファイル(1)に フィールドA、Cが有り、 ファイル(2)に フィールドB、Cが有るとします。 Cはリレーションの定義に使えるシリアル番号とします。 入力の順序として、基本的にファイル(1)のAを含む諸々のフィールドに入力後、 ファイル(2)のB以外のフィールドに入力するものとします。 Bに、Aと同じの内容のデータを自動的に表示させる手法として、 (イ)リレーションを組んで、フィールドBにルックアップでフィールドAの値を入れる。 (ロ)リレーションを組んで、フィールドBに計算式=(1)::AでフィールドAの値を入れる。 (ハ)スクリプト インポート (ニ)スクリプト フィールド設定、フィールド内容の全置換え あと、コピー、貼り付けというスクリプトもあったような・・・ 上記のようなやり方があると思うのですが、それぞれどのようなときに使用することが望ましいのでしょうか? メリット、デメリットがあると思うのですが、よくわからないまま、 色々なパターンを試して、うまくいったものを使用している状況です。 基本的なことですが、違いが良くわかりません。 だんだんファイルの内容が複雑になってきて、混乱してきているので、 これらの違いを教えていただけないでしょうか? よろしくお願いいたします。