過去の桐井戸端BBS (桐ver.8)
5717 「保存しますか」のメッセージを表示しない方法 mk 2000/04/25-15:37
Ver8SP4を使っているmkと申します。

 フォーム(1)にいくつかのラベルオブジェクトを用意しました。
マウスの左クリックでそれぞれに応じた別のフォーム(2)を、フォーム呼び出しコマンドで呼び出すようにしています。

 フォーム(2)のフォーム開始イベントで、フォーム(1)のトグルボタンの状態に応じた絞り込みと並べ変えを行っています。
また、フォーム(2)を閉じてフォーム(1)に戻る際には、コマンドボタンを使い、全解除→閉じるとしております。

 フォーム(2)は単にデータを見るだけで、何ら操作を行っていないのですが、必ず「(フォーム(2)で使った編集対象)表は
更新されています。保存しますか」というメッセージが出てきます。

 並べ替えをせずに絞込みだけだと、このメッセージは出てきません。
また、表を会話形式で開いて、絞り込みや並べ替えをしてから終了しても、別に保存しますかとは聞いてきません。

 なぜ、フォームから呼び出したときだけ出てくるのでしょうか。また、このメッセージを出さない方法があるのでしょうか。

 ご存知の方がおられましたらお教え下さい。よろしくお願いします。
5719 Re:「保存しますか」のメッセージを表示しない方法 宮城 2000/04/25-16:25
記事番号5717へのコメント
mkさん、こんにちは。

とりあえずは、フォーム呼び出しコマンドに「編集表=しない」をいれておけば「保存しますか」のメッセージはでないはず。

うまく言えませんけど、並べ替えを行っていれば、充分「操作を行って」いると思います。
個別レコードへの変更だけが表の操作ではありません。

5722 Re:「保存しますか」のメッセージを表示しない方法 bonito 2000/04/25-17:11
記事番号5717へのコメント
mkさん、こんにちは。

>コマンドボタンを使い、全解除→閉じるとしております。

閉じるのパラメータには「確認する」「保存する」「廃棄する」
の3つがあってデフォルト(何も指定しなければ)「確認する」です。
保存するか、廃棄するかして下さい。

mkさんの場合、何を保存するか?(ちょっと自信がないが…)
WIN桐はおせっかいにも「並べ替え」を保存するらしいです。
次回起動時になぁ〜にも指定しなければ前回の「並べ替え」で
開くらしいです。(なぁ〜にも指定しない事がないので未確認)

あと、フォーム呼び出しでなく、ボタンのモーダルフォームで
フォーム(2)を開いた場合、保存終了時には、呼び出し元の
ボタンの次行以下を実行しますが、廃棄終了した場合は、
そこまでで実行をSTOPします(こちらは確認使用済みです)。
条件のフラグ等をたてたりする必要がなくてけっこう便利です。


5724 「編集表=しない」としても駄目でした。 mk 2000/04/25-17:15
記事番号5719へのコメント
宮城様

 コメントをありがとうございます。調べたところ、フォーム呼び出しコマンドで
「編集表=しない」としていました。フォームを閉じた時に表も閉じるようにとの、
単純な理由でこの設定にしています。

 「編集表=しない」としても「保存しますか」のメッセージが出てきます。
なぜ、「編集表=しない」とすると出てこないと考えておられるのか、
それもまた新しい疑問ですが、今回は別に考えてみます。

 「並べ替え」も「絞り込み」も操作を行っているのはわかりますが、元の表のデータが動いているのではないし、
一時的な操作ではないでしょうか。その証拠に会話処理では何も聞いてきません。

 しかも、不思議なのは「絞り込み」だけでは「更新されています」のメッセージが出ず、
「並べ替え」を使う更新のメッセージが出てくることです。
5725 まだ解決しません mk 2000/04/25-17:39
記事番号5722へのコメント
bonito様

 コメントありがとうございます。丁度、宮城様に返事を書いて送ってみるとコメントが出ておりました。

 「閉じる」のパラメータに何も指定をしていなかったので、早速「廃棄する」として試験しましたが、
相変わらず「保存しますか」のメッセージが出てきます。
期待していたのですが、残念です。

 ボタンのモーダルフォームで開くというのは、正直に言ってよくわかりません。
イベントや一括処理を勉強中の初心者で、質問しているフォームやイベントも、
本と首っ引きで何とか作った第1号作品です。何とか、完成させたいのですが、
どうしてもメッセージが消せないようでしたら、次にモーダルフォームで開く方法に挑戦してみます。
5726 Re:「編集表=しない」としても駄目でした。 bonito 2000/04/25-17:39
記事番号5724へのコメント
mkさん、下枝のコメントも読んでみてネ。

>会話処理では何も聞いてきません。

これは多分会話処理では、状態保存があたりまえだという前提があるからじゃないかな?
会話処理ではユーザーは、表を開く前(画面に現れる前)に表に操作を加えられませんから…。

ちがうかな???
5727 Re:「編集表=しない」としても駄目でした。 宮城 2000/04/25-18:10
記事番号5724へのコメント
「編集表=しない」破棄終了にならないかなと思ったんですけど、勘違いですね。
すみません。ところで、

>その証拠に会話処理では何も聞いてきません。

本当にそうですか? 再現してみてるんですけど、並べ替え条件を変えるような並べ替えをした場合、
表形式でもフォームでも「保存しますか?」のダイアログが出て、
そうでない場合は表形式でもフォームでも出ないようにみえるのですが。

5728 Re:「編集表=しない」としても駄目でした。 宮城 2000/04/25-18:19
記事番号5724へのコメント
ここはどうでしょう?

フォーム(2)のオブジェクト属性→編集対照表→更新を「しない」としたら。
(たぶん「オープン指定値」と想像。)

5729 Re:「編集表=しない」としても駄目でした。 bonito 2000/04/25-18:30
記事番号5727へのコメント
宮城さん、どうもです (^^)v
一部、私も嘘をついていたようです、済みません。<(_ _)>
 
でも、宮城さんのコメントで見えて来たような気がします。

mkさん、「閉じる」のパラメータ「保存する」ではどうですか?
あと、並べ替えするのに、どんなコマンドを使用していますか?
普通は 「並べ替え 索引名="なんたら"」
あるいは「並べ替え 条件名="かんたら"」で充分なんですが、
まさか「並べ替え条件登録 条件名=・・・・・」とかじゃない
ですよね。

5733 Re:「保存しますか」のメッセージを表示しない方法 悲しげ 2000/04/25-20:48
記事番号5717へのコメント
どもっ、mkさん、
おそらく編集対象表はファイル属性で「バックアップを取る」に
なっているのではないかと思います。私は殆ど「取らない」指定にしてあるので、
このようなメッセージには(出会いたくても)殆どお目にかかったことがありません。
もし、バックアップを取らないようにしても支障がないようでしたら、
そのようにして試してみてはいかがでしょう?
もしそうだとすれば、あとはバックアップを取る指定と、メッセージを出なくさせることと、
どちらを優先させるかの問題になります。

余談ながら
フォーム呼出し時に、絞り込みだけだと、桐様がファイル更新と
見なさず、並べ替えだとファイル更新と見なすと云う挙動を示すと云うのは、
もしかすると有り得るかもしれません。
この点、どなたか再度究明の上でご報告いただけると有り難いですね。(^^;)
と云うのは、バックアップを取らない指定でも、フォーム呼出しした際に、
全く更新していないのにタイムスタンプが更新されていたり、されていなかったりしている訳で
(MO等にバックアップを取る際に気が付く)、その辺の鍵がこの点にありそうな気がしてきたからです。

5738 Re:余談の方へのコメント 悲しげ 2000/04/25-22:25
記事番号5733へのコメント
表の保存と云う点では、並べ替えと絞り込みはやはり違うでしょうね。
並べ替えは、実際にデータを並べ替えるべく表の中味を変更しています。
片や、絞り込みと云うのは、おそらくは桐内部で表を多重化していわば別表として開いていると考えれば、
元表自体には変更を加えられていない。このような推測をしてみた次第です。
根拠はと云うと、大して無いんですけど、DOS桐で一度に編集できる表の制限とかがありまして、
その際には、表の選択度数もカウントしなければならなかったような記憶があること。
それと選択の深度が5までとの制限とかも、ですね。

5740 「保存しますか」 佐田 守弘 2000/04/26-00:14
記事番号5717へのコメント
mkさん
断定的なことは言えないのですが、並べ替え(索引を使わない並べ替え)を行う時に、
並べ替え用の自動更新されない内部インデックスが更新されていることが考えられます。
レコードデータは更新されていなくても、インデックスが更新されれば表ファイルとして更新されたことになるので、
保存するかの問い合わせが出る事が考えられます。

なお、保存確認のダイアログを表示させないために、バックアップなしにするのは余り賛成しかねます。
バックアップは自分自身で責任をもって取るので、桐のシステムに取らせる必要はない。
仮に開いているファイルが破壊したとしても、開く前にバックアップを取ってあるので、大丈夫
といった自信があるなら別ですが、そうでない場合には、バックアップを取る様にして下さい。

保存確認が煩わしいのでバックアップなしにするというのは、保険屋さんからの電話が煩わしいので、
火災保険や自動車保険を止めるというのに等しいと思います。
(桐のバックアップにそれ程の保険性があるとも言えませんが)

佐田守弘(KS-00119)

5744 Re:「保存しますか」のメッセージを表示しない方法 Ogo 2000/04/26-01:36
記事番号5717へのコメント
> また、このメッセージを出さない方法があるのでしょうか。

これが意図した結果か否かはともかく、単に「メッセージを出さない」
という事だけを重視するなら、終了のボタンを押した時に、必ず一旦上書き保存した後に
フォームを終了すれば「メッセージは出ない」。 (^^;


5750 Re:お詫びとお願い bonito 2000/04/26-10:45
記事番号5717へのコメント
ツリーが(私の所為で)ぐちゃぐちゃになってしまいましたので
ここに書きますが、

>次回起動時になぁ〜にも指定しなければ前回の「並べ替え」で
>開くらしいです。(なぁ〜にも指定しない事がないので未確認)
はまったくのデマカセでした。 
確認しました、ごめんなさい。 <(_ _)>

その他の件に関しては(並べ替え時の保存に関してとか…)、
みなさまにフォロー頂きました。ありがとうございました。

mkさんにお願い
結果、どうなされたか、後日コメントして下さいね。

5753 解決編 報告・その他 mk 2000/04/26-11:42
記事番号5717へのコメント
 皆様、いろいろとお教え下さりありがとうございます。ツリーが増えるのでまとめて御礼かたがた報告いたします。

(1)「閉じる」のパラメーターを「保存」にするとOKでした。上書き保存した後、
フォームを終了するというのと同じく、発想の転換ですね。私は考え付きませんでした。

(2)フォーム(2)のオブジェクト属性→編集対象表→更新を「しない」とするのもOKでした。
こういうところは触っていないので、ご明察の通り「オープン指定値」でした。

(3)編集対象表のファイル属性を「バックアップを取る」のチェックをはずしてもOK
でした。。

(4)並べ替え用の自動更新されない内部インデックスが更新されている可能性があると
いう示唆も頂きました。並べ替えは「並べ替え {[日付] 降順}」で行っていました。
表に「日付順」という並べ替えの条件登録をして、この条件を使ってやってみたところ、やはりOKでした。

 問題解決にもいろいろな方法があるものだと感心しました。それぞれの得意、不得意や
個性が出るのでしょうね。私としては(4)の方法が一番スマートに思えるので、(4)の方法で行いました。

 本題から外れますが、ファイル属性で「バックアップを取る」のチェックを外した時には、
表を閉じる際に「更新しますか」と聞いてきます。
しかし、チェックを入れたときには、「更新しますか」とは聞いてこないということに気が付きました。
バックアップを取るような変更は、確認するほどの重要な(実害のある)変更ではないということでしょうか。

5755 票のバックアップの意味 佐田 守弘 2000/04/26-18:05
記事番号5753へのコメント
mkさん
> 本題から外れますが、ファイル属性で「バックアップを取る」のチェックを外した時に
>は、表を閉じる際に「更新しますか」と聞いてきます。

記述は逆だと思います。バックアップ無しの設定の時には、保存するといった操作がありません。
誤ったデータ編集を行った場合でも、直ちにディスクに記録されます。ですから、更新の確認はでないはずです。
一方、バックアップありの場合には、ディスク状の票ファイルを一時テンポラリファイルにコピーして作業します。
そして、終了時に編集された結果を新しい票ファイルとして記録するか、あるいは破棄するかを問い合わせて来ます。

なお、バックアップありと無しのモードに関しての詳しい説明は、以前にも何回も書いております
ので、過去ログを参考にしてみて下さい。また、私のサイトの「出版館」のなかにある
「桐ver.7活用ガイドメニュー」→「桐ver.7レスキュー」→「万一の表ファイルに備えて」
にも解説があります。参考になると思いますので、ご覧になって下さい。

佐田守弘(KS-00119)
5756 Re:表のバックアップの意味 悲しげ 2000/04/26-19:48
記事番号5755へのコメント
どもっ、佐田さん、

>ファイル属性で「バックアップを取る」のチェックを外した時に
>は、表を閉じる際に「更新しますか」と聞いてきます。しかし、
>チェックを入れたときには、「更新しますか」とは聞いてこない

mkさんのこの部分の記述は確かに(?_?)ですね。で、確認した訳でもないのですが、
私はこの部分を次のように解釈しました。
mkさんがこの挙動を試した表は、元来「バックアップを取る」指定の表だったのだと思います。
その表で取らない指定に「変更」したから、更新の有無を問うて来た。逆にその表でそのまま、
取る指定に戻した(取る→取らない→取る)、結局「変更」はされなかったので、
更新の有無は問われなかったと云う、ただそれだけのことなのではないか。
あるいは後の方は、元来「取らない」指定の表において、「取る」指定に変更しても、
表自体はまだ「取らない」指定のままなので、更新の有無は問われない。
「バックアップを取る」指定の有無が生きるのは、DOS桐以来、
一貫して保存終了後に再度表を開いた時だったと記憶しています。



あと、#5740で佐田さんは、「バックアップを取る」方を推奨してらっしゃいますが、
そして確かに特殊「メッセージを出させない」がためだけに「取らない」指定とするのは
邪道だとも思いますが、一般論としてはこの点は考え方次第だと思います。
いずれにしても、最終的には別メディア保存にまさるものはありませんから、
その前提の上で、私の場合は「取らない指定」をデフォルトにしています。
一時DOS時代に「取る」指定で走ったこともありましたが、ディスク消費量やら
作業表を空にする際等で、どうも不利な面が目立ちまして、
以降一貫して「取らない」指定に宗旨変えしました。
あ、他メディアへの保存の前に、大事な表・データは枠組み書き出しと
テキスト(K3)書き出しのセットの方が大切ではあります。
中には壊れた表を一生懸命(他メディアに)バックアップしていた人もいますから。(^^;)

戻る