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

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

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

You are not logged in.

Announcement

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


#1 2017-06-16 15:52:51

step
Member

変則的にスクリプトが正常に動作しない(エラーメッセージも出ない)

Windows 7
FileMaker Pro 10

人員データとそれに紐付いた複数テストの受験日、結果を管理するDBを作成しました。
テスト結果は人員データのIDを照合フィールドとしてポータルで人員データのレイアウトに表示させています。

DBは普段サーバーに保存されていて、一度PCにコピペしてからデータ変更などの操作を行ない、再びサーバーに上書きするようにしています。

人員データを変更する際に、以下のようなスクリプトを実行していますが、スクリプト通りに実行されるときと、うまく実行されないときがあります。
うまく実行されたか、されていないかエラーメッセージ等が出ないので判別が困難です。
スクリプトの中に変則的にうまくいったりいかなかったりする要素があれば、組み直したいと思います。

スクリプト自体に問題がなく、変則的にうまくいったりいかなかったりする原因をご存知の方は対処策も併せて教えて頂きたいです。

お知恵をお貸しください。よろしくお願いします。

● DBの構造(全て別テーブル)
・人員データマスター(人員データの基本情報が記載)+A、B、Cのテスト情報をポータルで表示
・テストAマスター(受験日、結果等が記載)
・テストBマスター(受験日、結果等が記載)
・テストCマスター(受験日、結果等が記載)

・人員データの変更レイアウト
・テストAの変更用レイアウト
・テストBの変更用レイアウト
・テストCの変更用レイアウト

● スクリプトA(マスターの内容を変更用レイアウトにコピペ)
人員マスターのIDをコピー                                       
人員変更レイアウトに切替                                       
新規レコード作成                                       
ID貼り付け                                       
ーー変更内容を入力ーー                                                                               
人員変更レイアウトのIDをコピー                                       
テストAマスターに切替                                       
検索モード                                       
IDに貼り付け                                   
エラー処理ON                                       
検索実行                                       
If ( Get ( 最終エラー)=401)                                       
スクリプト実行(テストB検索)※1                                
Else                                       
スクリプト実行(テストAコピペ)※2                                   
スクリプト実行(テストB検索)

※1
人員変更レイアウトのIDをコピー                                       
テストBマスターに切替                                       
検索モード                                       
IDに貼り付け                                   
エラー処理ON                                       
検索実行                                       
If ( Get ( 最終エラー)=401)                                       
スクリプト実行(テストC検索)                               
Else                                       
スクリプト実行(テストBコピペ)                                   
スクリプト実行(テストC検索)

※2                                    
レコード移動(最初の)                                       
Loop                                       
変数を設定                                   
テストA変更用レイアウトへ切替                                   
新規レコード作成                                   
フィールド設定                                   
テストAマスターへ切替                                   
レコード移動(次の;最後まできたら終了)                                   
End Loop

● スクリプトB(変更レイアウトの内容をマスターに新規作成)                                       
変数を設定   
社員IDをコピー
人員マスターに切替                                   
検索モード                                   
IDを貼り付け                                   
検索実行                                   
対象レコード削除(ダイアログなし)                                   
新規レコード作成                                   
フィールド設定                                   
スクリプト実行(テストA)※3                                    
   〃   (テストB)                                   
   〃   (テストC)                                   
人員変更用レイアウトに切替                                   
対象レコード削除(ダイアログなし)                                   
人員マスターに切替                                   
全レコードを表示                                   

※3                                       
スクリプト実行(テストA~C)                                   
テストA変更用レイアウトへ切替                           
If ( Not IsEmpty ( 変更 テストA :: ID)                               
レコード移動(最初の)                           
Loop                           
  変数を設定                       
  テストAマスターに切替                       
  新規レコード作成                       
  フィールド設定                       
  テストA変更用レイアウトに切替                       
  レコード移動(次の;最後まできたら終了)                       
End Loop                           
全レコードを表示                           
対象レコード削除(ダイアログなし)                           
End If

Offline

#2 2017-06-16 17:41:42

Shin
Member

Re: 変則的にスクリプトが正常に動作しない(エラーメッセージも出ない)

ファイルをコピーしてきて、さらに、レコードをコピーして、変更したら書き戻し、書き戻し、と何か面倒な運用ですね。
まず確認したいことは、そのファイルを扱っているのはあなた一人、それとも複数人、
あなた一人でしたら、ファイルの書き戻しは必ず行われていて、絶対に忘れていませんか。
複数でしたら、ファイルの同時変更と相互上書きは起こっている可能性がありませんか。

レコードの変更について、変更前に確認を行って、という事だと思いますが、それは必ず必要ですか。

FileMaker のファイルは結構デリケートで、ファイルサーバーでの共有はファイルを壊す可能性が高いです。
理想をいえば、何処かで FileMaker server か、FileMaker pro でファイルを開いておいて、そこにネットワーク経由でつなぎ、共有ファイルとして開く、という運用が良いと思います。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 525.7 KiB (Peak: 552.95 KiB) ]