みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
FM11Proにて、新規レコード作成時にシリアル番号が必ず 1が表示されるという不具合が発生しております。
数値は5桁運用で、運用上の都合で同じフィールドを1~49999と50000~99999で使い分けています。
新規レコード作成のボタンが2つあり、1~49999を自動付番するボタンと50000~99999を自動付番するボタンがあります。
50000~99999の自動付番は正常に動作しているのですが、1~49999の自動付番が必ず1になってしまいます。
1~49999の最終レコードの番号は16861です。したがって、16862が自動付番されなければなりません。
新規レコード作成前に表形式で番号を一覧表示して確認しても不正な値は入っていませんが、
1~49999の新規レコード作成を実施するとなぜか全フィールドに「?」が入ったレコードができております。
以下は該当のボタンのスクリプトです。
検索モードに切り替え[]
フィールド設定[(テーブル名)::(シリアル番号); "1...49999"]
検索実行[]
レコードのソート [記憶する; ダイアログなし](上記シリアル番号昇順)
レコード/検索条件/ページへ移動 [最後の]
次のシリアル値を設定 [(テーブル名)::(シリアル番号); (テーブル名)::(シリアル番号); + 1]
新規レコード/検索条件
同じように設定された50000~99999は問題なく動作します。
スクリプトは変更していないのでデータが怪しいとは思うのですが…
確認すべきポイントなどがありましたらご教授いただけないでしょうか。
よろしくお願いいたします。
Offline
自己レス申し訳ありません。
通常、レコードに存在しない番号を検索すると「この検索条件に一致するレコードがありません」というメッセージが返ってくるのですが、
「16819」という番号で検索すると全項目が「?」となっているレコードが返ってきます。
この全項目が「?」となってしまった不正データを削除すれば解決しそうなのですが、一覧にはそのようなレコードが存在しません。
不正レコードの削除方法をご教授いただけないでしょうか。
よろしくお願いいたします。
Offline
レコードのデータが壊れているようです。
とりあえず、ファイルのバックアップを取りましょう。
次に、ファイルを保存で、空のファイルを作ります。
元のファイルを修復します。上で作った空のファイルへ、修復したファイルから全てのレコードをインポートします。
これで、不具合のレコードは無くなっているはずです。
2組のシリアル番号を管理する方法として、シリアル番号だけを管理するテーブルを2個作る方法もありますよ。そのテーブルのシリアル開始値を設定すれば、今からでも簡単に移行可能です。
https://www.dropbox.com/s/rad70ko2jyops … 7.zip?dl=0
Offline
>Shin様
いつもありがとうございます。
ファイルのバックアップ、新規ファイルの作成、ファイルの修復、新規ファイルへのインポートは全てFMServer上で実施するということでしょうか。
また、現在、サーバーで共有して各PCでFMを実行しているのですが、インポート後の新規ファイルは現在のファイルに上書き置換すれば動きますでしょうか。
あるいはFMServerで再度共有の設定が必要になりますでしょうか。
よろしくお願いいたします。
Offline
ファイルそのもののメンテナンスですので、サーバー上では無理でしょう。
また、クライアントから、サーバー上のファイルの上書きはできません。そのファイルの公開を止めて、他の場所に移してから、ファイルをアップロードします。admin console で見れば、わかるでしょう。
Last edited by Shin (2018-12-24 17:50:41)
Offline
>Shin様
新規ファイルへのインポートまではクライアントPC側で実施して、その後サーバーにアップロードして公開いたします。
データが重い上に日中は使用者が多いので、実施するタイミングを検討して実施します。
ただ、新規レコードを登録できないと業務に支障を来たすため、取り急ぎで最終レコード検索時の検索範囲を「1...49999」から「16830...49999」に変更いたしました。
(不具合の原因となっている番号16819を検索範囲から除外しました)
正常に動作することは確認できましたので、これで急場を凌ごうと思います。
また、修復が完了しましたらシリアル番号を2つに分ける件も検討してみます。
いろいろとご対応いただきありがとうございました。
Offline
バージョンを忘れましたが、
以前(かなり以前!)シリアル番号が飛ぶ
ということがありました。
スクリプト
> 次のシリアル値を設定 [(テーブル名)::(シリアル番号); (テーブル名)::(シリアル番号); + 1]
なぜこうしているか分かりませんが、
シリアルの設定ではなく、直接フィールドに書き込めば済むことですよね。
試してみる価値はあるかもです。
しかし
> 全項目が「?」となっているレコードが返ってきます
これが不安ですね。
Offline
>チポ様
いつもありがとうございます。
> 次のシリアル値を設定 [(テーブル名)::(シリアル番号); (テーブル名)::(シリアル番号) + 1]
私も前任者が退職不在+FMの知識ゼロの状態で引き継いだので「なぜ」かはわかりません。
FMデータベースのフィールドオプションの「シリアル番号」の機能にこだわったからでしょうか?
自動付番用の値を別テーブルに格納して新規レコード作成時にその値を参照し、
フィールドに値が入った時点でそのテーブルの値に+1するほうがスムーズだと思うのですが…
いずれにしても、この修復が終わったら自動付番のロジックを見直してみます。
Offline
Pages: 1
[ Generated in 0.009 seconds, 10 queries executed - Memory usage: 521.98 KiB (Peak: 526.89 KiB) ]