[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/08/27(Sat) 16:56
投稿者名:あた
Eメール:
URL :
タイトル:
上手く処理をさせたいのですが。
画面にテキストボックスが5個、グリットによるシート、照会、登録、変更
のボタンがあります。
照会ボタンを押下したら、データベースから取得した情報をシートに表示し、
シートの任意の行をダブルクリック後、テキストボックスに表示するよう
にしています。
ここで、テキストボックスの内容を変更し、変更ボタンの押下して、変更
内容をデータベースに更新させるのですが、誤って登録ボタンを押下したら
同じ内の行が登録される事態に悩んでいます。

一応、管理番号はもっていますが、登録ボタンを押したときに自動採番で
設定する仕組みなっています。
つまり、管理番号が異なる行ができてしまうのです。
上手く、切り抜ける方法を教えて頂きたいのですが。

投稿時間:2005/08/27(Sat) 17:21
投稿者名:いな
Eメール:
URL :
タイトル:
Re: 上手く処理をさせたいのですが。
>つまり、管理番号が異なる行ができてしまうのです。

実際にシステムを作った時の経験で、
既にデータベースに存在するデータを照会、その一部を流用して、
登録する(行コピー)という仕様も存在します。

変更ボタンを押下してのオペレートはなんとなくわかりましたが、
登録時のオペレートで、以下のケースどうゆう運用なのでしょうか?

Q1.データを「登録」する際のオペレートは、照会後?照会前?
Q2.照会後、データを「登録」したい時は?
Q3.シートの任意の行をダブルクリック後、データを「登録」したい時は?
Q4.ボタンは「照会」「登録」「変更」で「削除」が無いのはなぜ?

投稿時間:2005/08/27(Sat) 18:30
投稿者名:あた
Eメール:
URL :
タイトル:
Re^2: 上手く処理をさせたいのですが。
> >つまり、管理番号が異なる行ができてしまうのです。
>
> 実際にシステムを作った時の経験で、
> 既にデータベースに存在するデータを照会、その一部を流用して、
> 登録する(行コピー)という仕様も存在します。
>
> 変更ボタンを押下してのオペレートはなんとなくわかりましたが、
> 登録時のオペレートで、以下のケースどうゆう運用なのでしょうか?
>
> Q1.データを「登録」する際のオペレートは、照会後?照会前?
> Q2.照会後、データを「登録」したい時は?
> Q3.シートの任意の行をダブルクリック後、データを「登録」したい時は?
> Q4.ボタンは「照会」「登録」「変更」で「削除」が無いのはなぜ?

投稿時間:2005/08/27(Sat) 18:38
投稿者名:あた
Eメール:
URL :
タイトル:
Re^2: 上手く処理をさせたいのですが。
> Q1.データを「登録」する際のオペレートは、照会後?照会前?
照会前と考えています。1つ1つ入力して行こうと。

> Q2.照会後、データを「登録」したい時は?
全てをクリアしてからと。
クリアする機能が抜けてます。

> Q3.シートの任意の行をダブルクリック後、データを「登録」したい時は?
いなさんが仰ってる、データを照会、その一部を流用する場合ですね。
登録ができないですね。登録ボタンに意味がないです。
それに、Q2、Q3とも入力項目が多い場合とか、データが長い場合には、流用
するのが楽です。

> Q4.ボタンは「照会」「登録」「変更」で「削除」が無いのはなぜ?
抜けてます。

投稿時間:2005/08/27(Sat) 19:12
投稿者名:いな
Eメール:
URL :
タイトル:
Re^3: 上手く処理をさせたいのですが。
> > Q3.シートの任意の行をダブルクリック後、データを「登録」したい時は?
> いなさんが仰ってる、データを照会、その一部を流用する場合ですね。
> 登録ができないですね。登録ボタンに意味がないです。
> それに、Q2、Q3とも入力項目が多い場合とか、データが長い場合には、流用
> するのが楽です。

流用する機能を実現するならば、
  (管理番号を除く)全ての項目を条件に、
  全く同じ内容のレコードが存在するときは、
  「既に登録されています。」というようなメッセージを表示するとか。

 すくなくとも、
  誤って登録ボタンを押下したら、全く同じ内の行が登録されることは回避できます。
  #もっとも、修正した後、誤ってボタン押下した場合には、
  #正常に流用されてしまいますが。

流用する機能を実現しないならば、↓が一番簡単かな。

 画面に表示する際に、管理番号を変数に格納しておいて
 登録の際に、既に存在する管理番号かをSQLでチェックすれば無問題です。
 #管理番号が無いときは、登録ってことで

投稿時間:2005/08/28(Sun) 10:14
投稿者名:あた
Eメール:
URL :
タイトル:
Re^4: 上手く処理をさせたいのですが。
> 流用する機能を実現するならば、
>   (管理番号を除く)全ての項目を条件に、
>   全く同じ内容のレコードが存在するときは、
>   「既に登録されています。」というようなメッセージを表示するとか。
全項目をSQLでチェックですか。
>
>  すくなくとも、
>   誤って登録ボタンを押下したら、全く同じ内の行が登録されることは回避できます。
>   #もっとも、修正した後、誤ってボタン押下した場合には、
>   #正常に流用されてしまいますが。
>
これを防ぐのは難しいですね。
oracleで制約を付けてるといっても時と場合、変更した項目によっては書かれる場合
もありますね。

投稿時間:2005/08/29(Mon) 10:18
投稿者名:いな
Eメール:
URL :
タイトル:
Re^5: 上手く処理をさせたいのですが。
> 全項目をSQLでチェックですか。

です、仮にダブルクリックした列の値を変数に保持して・・・。
とか、Chengeイベントで変更によって、判別するとかにすると、

前者は、別の列の値と同じ入力をしたとき、
後者は、前者の操作に加えてさらに、変更後、元に戻したりしたとき、に判別できません。

> >  すくなくとも、
> >   誤って登録ボタンを押下したら、全く同じ内の行が登録されることは回避できます。
> >   #もっとも、修正した後、誤ってボタン押下した場合には、
> >   #正常に流用されてしまいますが。
> >
> これを防ぐのは難しいですね。
> oracleで制約を付けてるといっても時と場合、変更した項目によっては書かれる場合
> もありますね。

> これを防ぐのは難しいですね。
 難しいというか、正常な流用のオペレーションという扱いになってしまうので、
 無理ではないでしょうか?
 あえて言うのならば、流用しますか?といったメッセージを表示し、
 登録の間に、ワンクッション置く、しかないですね。