初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-01-27 15:50:10

新規レコード
Guest

新規レコード/検索条件のあとの処理が実行されない。

いつも勉強させていただいています。

早速ですが、当方では現在新規にレコードを追加するスクリプトを組んでいるのですが
『新規レコード/検索条件』のステップを実行した後、処理が止まってしまいます。
原因がわからず困っています。
どなたかご教授いただけると幸いなのですが。

#2 2016-01-27 16:05:05

たっきん
Member

Re: 新規レコード/検索条件のあとの処理が実行されない。

そのスクリプトのステップをどのように作ったのか書き出さないと
返答が難しいです。何か続きのステップを作っていると思うのですが
いかがでしょうか。どんな動作を実現するためのものなのかも
書き添えると更にわかりよいです。

例;
新規レコード/検索条件
スクリプトの一時停止
フィールドへ移動「名前」
など、どのように組んでるのか。
(動作の目的)
このステップで新規作成して名前のフィールドにカーソルを移動など

あと、使用環境が分かると良いです。
ファイルメーカーのバージョン;PRO14など
OSの種類;win7やyosemiteなど

Offline

#3 2016-01-28 16:17:01

新規レコード
Guest

Re: 新規レコード/検索条件のあとの処理が実行されない。

たっきんさん、返信ありがとうございました。並びに遅くなりましてスイマセン。

たっきん wrote:

そのスクリプトのステップをどのように作ったのか書き出さないと
返答が難しいです。何か続きのステップを作っていると思うのですが
いかがでしょうか。どんな動作を実現するためのものなのかも
書き添えると更にわかりよいです。

例;
新規レコード/検索条件
スクリプトの一時停止
フィールドへ移動「名前」
など、どのように組んでるのか。
(動作の目的)
このステップで新規作成して名前のフィールドにカーソルを移動など

あと、使用環境が分かると良いです。
ファイルメーカーのバージョン;PRO14など
OSの種類;win7やyosemiteなど

そうですね。言葉足らずで申し訳ありません。
ただ、ちょっと複雑になってしまっていてどう説明したら伝わるのかと
悩んでしまってとりあえず、起こっている現象だけ書いてみようかと思ったわけです。
当方の環境は、
OS:Win7
FM:ファイルメーカーPro11
です。
テーブルは、マスタを入れると9本くらいあります。
その中でメインで使っているのは日々の取引を管理するために繰り返しフィールドを
作ってあるテーブルが1本です。仮にこれをテーブルAとします。
データは1社員1レコードずつ存在します。
で、このシステムの前提条件を箇条書きすると
1.テーブルAには、日々の取引を管理するため繰り返しフィールドがあります。
2.このシステムは日々の取引を管理するシステムです。取引が起こったらテーブルAに入力します。
2.このシステムには次月のデータを作成する機能があります。当月最終週あたりに次の月の暫定的な
予定をテーブルAに自動で設定します。設定のトリガは管理者が任意のタイミングでボタンを押して
処理を実行します。
です。
この前提条件のもと、起こった現象は新社員が入力をしようとしたときに新規レコードが実行された後
止まってしまうというものでした。流れを箇条書きに書くと
1.新社員を新たにマスタに入力
2.取引入力画面に入る前に社員コード入力画面で社員コードを入力
3.社員マスタに社員コードが存在すれば取引入力画面に移動、
4.この時、テーブルAに入力した社員コードのデータが1件も存在しなかったら新たにデータを作成します。
5.さらに、入力したタイミングが他の社員の次月データを作成した後なら入力した社員コードで次月のデータを作成します。
この時に、次月データを作成するスクリプト内にある『新規レコード/検索条件』のステップを実行するとそこでスクリプトが
終わってしまうという現象が起こっています。
この現象は、次月データの初期値を社員マスタに入力した状態の時に出ます。
社員マスタの次月データの初期値を空白にしておくとテーブルAに当月と次月のデータが作成されます。
ですので、今は次月の初期値を設定するステップを削除して動作させています。
これが現状です。うまく説明できなくて申し訳ありません。
さらに乱文。長文で大変申し訳なく思っています。
よろしくお願いします。

#4 2016-01-29 16:58:35

たっきん
Member

Re: 新規レコード/検索条件のあとの処理が実行されない。

文中よりご苦労が伺えます。きっと、試行錯誤されながら運用されているものと
お察し申し上げます。

これって、1台で使用しているのでしょうか?
5.さらに、入力したタイミングが他の社員の次月データを作成した後なら・・・
とあるので、ファイルを共有設定で複数の社員さんが利用しているのでしょうか。
それともfilemakerServerで使用?書き込みのタイミングでそうなるのかな?
気になりますね。

さて、動作についてですが推測ですがテーブルAと社員マスタと何かテーブルが
リレーションされていて新規作成の時にテーブルAもしくは社員マスタに作成される
はずの社員IDか日付のようなキーのデータが新社員の時はうまく動作していない
事があるのではないでしょうか。

繰り返しフィールドをリレーションキーに使用していたりしていませんか。

いづれにいたしましても、動作を箇条書きされても理解が大変です。
その動作をするスクリプトをスクリプト定義を開いて確認しないと
どのような動作が原因で「止まる」とおっしゃっている動作になるのか
分かりません。動作に係るスクリプトステップを教えて頂かないと
どうして良いものか悩みます。それに、次のステップがあるのにも
関わらずそれを無視して動作が終了しているのであれば尚の事
理解出来ません。良くあるのは一時停止が掛かっていてそれに気づいていない
ことぐらいです。この場合はステータスエリアに
スクリプト一時停止中「続行」「キャンセル」なととなっているので目視できます。

もし、ファイルメーカーAdvancedをご利用であれば
スクリプトデバッガという機能が付いているので動作を追いかけながら
確認できます(pro11にはあったかな?多分あったと思うのですが・・・)。
通常版のファイルメーカーであれば気になるスクリプトステップに
「スクリプトの一時停止」の行を追加して動作を確認しながら動きをチェックします
(よく注意しながらになりますが・・・地味に大変です。複製をとっていおたほうが無難です)

スクリプトステップの中にエラー処理という項目があるのですが
これを「オン」にしているとエラーは表示されない状態になります。
もし、ステップの中にこれがあるのであれば一時的に「オフ」にしてみれば
エラーが表示されて解決の糸口になるかもしれません。

また、ファイルが壊れていてそのような設定と違う動作になってしまっている
可能性もあります。ファイルのバックアップをとっておきファイルの修復など
掛けてみると設定通りに回復する可能性もあります。
もし、これまでうまく動作していたのであればこの可能性も否定できませんね。

Offline

#5 2016-02-01 14:27:46

新規レコード
Guest

Re: 新規レコード/検索条件のあとの処理が実行されない。

たっきん様、返信ありがとうございます。
なかなかうまく説明できなくて申し訳ありませんでした。
スクリプトを印刷したものか、ファイル本体を見ていただければ
一番てっとりばやいのですが、アップロードの仕方がわからず
なんとか文面だけで伝わればと思ったんですが・・・。
当方は、VBの開発は長くやってきたんですがファイルメーカーは
今の現場が初めてで、まさに試行錯誤しながらやっています。
いくつか質問に答えていくと

たっきん wrote:

これって、1台で使用しているのでしょうか?
5.さらに、入力したタイミングが他の社員の次月データを作成した後なら・・・
とあるので、ファイルを共有設定で複数の社員さんが利用しているのでしょうか。
それともfilemakerServerで使用?書き込みのタイミングでそうなるのかな?
気になりますね。

こちらはおっしゃる通りfilemakerServerを使用して複数人で使用します。

たっきん wrote:

さて、動作についてですが推測ですがテーブルAと社員マスタと何かテーブルが
リレーションされていて新規作成の時にテーブルAもしくは社員マスタに作成される
はずの社員IDか日付のようなキーのデータが新社員の時はうまく動作していない
事があるのではないでしょうか。

繰り返しフィールドをリレーションキーに使用していたりしていませんか。

いづれにいたしましても、動作を箇条書きされても理解が大変です。
その動作をするスクリプトをスクリプト定義を開いて確認しないと
どのような動作が原因で「止まる」とおっしゃっている動作になるのか
分かりません。動作に係るスクリプトステップを教えて頂かないと
どうして良いものか悩みます。それに、次のステップがあるのにも
関わらずそれを無視して動作が終了しているのであれば尚の事
理解出来ません。良くあるのは一時停止が掛かっていてそれに気づいていない
ことぐらいです。この場合はステータスエリアに
スクリプト一時停止中「続行」「キャンセル」なととなっているので目視できます。

箇条書きにすれば多少見やすいかと思ったのですが、かえって見づらくなってしまいました。
スイマセン。
一応、スクリプトの一時停止はしていないのでそれはないと思います。
処理が止まるのは、次月データ作成のスクリプト内にある『新規レコード/検索条件』であることは
間違いないですね。その前後にメッセージを表示するスクリプトを入れましたが
前に入れた方は実行されますが、後に入れた方は実行されません。
繰り返しフィールドのリレーションキーにしていますね。

たっきん wrote:

もし、ファイルメーカーAdvancedをご利用であれば
スクリプトデバッガという機能が付いているので動作を追いかけながら
確認できます(pro11にはあったかな?多分あったと思うのですが・・・)。
通常版のファイルメーカーであれば気になるスクリプトステップに
「スクリプトの一時停止」の行を追加して動作を確認しながら動きをチェックします
(よく注意しながらになりますが・・・地味に大変です。複製をとっていおたほうが無難です)

当方は、Advancedは使用していません。スクリプトデバッガも11Proには搭載されて
いないようです。
なので、気になるところでメッセージを表示させてスクリプトを一旦とめたりして確認するようにして
検証しました。

ただ、あの後エンドユーザーさんとも話し合った結果とりあえずは新社員用のデータは空っぽの箱だけ
用意すればいいことになりました。
システムの使い方を覚えてもらうことも踏まえて1か月は初期値なしで自分で入力するように運用で
逃れるようにしました。本来なら原因をキチっと究明してから運用のルールを作っていきたいところでしたが
現場サイドの意向もありこのような形になります。
ですので、こちらの投稿は一旦『解決』とさせていただこうと思います。
せっかくいろいろとアドバイスを貰ったのに、生かせずに申し訳ありませんでした。
また、何かあったら相談させてください。

#6 2016-02-01 17:06:59

Shin
Member

Re: 新規レコード/検索条件のあとの処理が実行されない。

データを入力した後、別ファイルに移っていると思われますが、その際に、前のウィンドウでデータが確定されないままに次のウィンドウへ移動しているのではないかと思いますが。

Offline

#7 2016-02-02 09:30:57

新規レコード
Guest

Re: 新規レコード/検索条件のあとの処理が実行されない。

Shin様、返信ありがとうございます。

Shin wrote:

データを入力した後、別ファイルに移っていると思われますが、その際に、前のウィンドウでデータが確定されないままに次のウィンドウへ移動しているのではないかと思いますが。

これって、『レコード/検索条件確定』のステップを実行するってことですよね?
どのタイミングで行えばいいんでしょうか?
私も、確定していないからかと思って初期値設定用のスクリプトを実行後に『レコード/検索条件確定』を行ったんですが
結果は変わりませんでした。
動きとしては、

メインルーチン
メインテーブルの中に社員コードがあるか検索
IF Get(対象レコード) = 0
   新規レコード/検索条件
   フィールド設定[メインテーブルの社員コード;グローバル変数の社員コード]
   フィールド設定[メインテーブルの日付;Get(日付)]
   スクリプト実行[初期値設定用スクリプト]
   スクリプト実行[次月設定用スクリプト]
End If

サブルーチン:初期値設定用スクリプト
変数の設定[$IDX;値1]      ’ループの添え字に初期値を設定
Loop
  フィールド設定[メインテーブル取引内容[$IDX];取引内容]
  レイアウト切り替え[日別取引内容テーブル]
  新規レコード/検索条件
  フィールド設定[日別取引内容テーブル::社員コード;社員コード]などを設定する
  レイアウト切り替え[メインテーブル]
  変数を設定[$IDX;値:$IDX+1]
  Exit Loop If[$IDX >= 43]
End Loop

サブルーチン:次月設定用スクリプト
変数の設定[$ZIDUKI;値:Date (Month (Get ( 日付 )) + 1 ; 1 ; Year (Get ( 日付 )))]  ’システム日付から次の月を算出
メインテーブルの中に生成した日付のデータが存在するか検索
If[Get(対象レコード)<1]
   現在のスクリプト終了[]
End If
変数の設定[$IDX;値1]      ’ループの添え字に初期値を設定
新規レコード/検索条件←これを実行した後スクリプトが終了します。
このあと、社員コードや取引内容を設定するループがあるんですが一切実行されません。

簡単に書くとこんな感じになります。
これが、マスタに初期値を入力しない状態で実行すると社員コード、日付だけが入力されたレコードが2か月分作成されます。
以前に『レコード/検索条件確定』を入れたのは、メインルーチンの『スクリプト実行[初期値設定用スクリプト]』のあとに
入れてみましたが結果は変わりませんでした。

#8 2016-02-02 13:47:27

Shin
Member

Re: 新規レコード/検索条件のあとの処理が実行されない。

フィールド設定[日別取引内容テーブル::社員コード;社員コード]などを設定する
の後です。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 557.49 KiB (Peak: 578.03 KiB) ]