DBでレコードの単位を揃えるには?

解決


teck  2004-06-11 02:08:43  No: 9379

はじめまして。

ID:Id
test1:Integer;
test2:Integer;
test3:Integer;
test4:Integer;

このようなTTableがあります。1000単位の入力をしたいのでPOST時に
1000かけます。すべてのフィールドを一括で入力すればいいのですが、
test2だけ修正したい場合、StateプロパティがdsEdit状態になるため
修正してないフィールドが更に1000かけられた状態になってしまいます。
この場合、どのようにすれば重複せず1000単位で登録できますか?

わかりづらい文章で申し訳ございません。
よろしくお願いします。


teck  2004-06-11 02:10:55  No: 9380

1000かけるのは、テーブルのbeforePostでやっています。


HOta  2004-06-11 17:02:18  No: 9381

表示するのを1000で割った値の計算項目を作成してそれを表示して、入力された値を登録時に1000倍すれば問題は起こらないのではないですか?


teck  2004-06-11 18:23:22  No: 9382

HOtaさん返信ありがとうございます。

>入力された値を登録時に1000倍すれば問題は起こらないのではないですか?
実際にはDBGridに直接入力してるのですが、入力された値(フィールド)の
判定は出来ますか?1項目だけ修正した際、修正していない項目も1000倍になってしまいます。


しみわたり  2004-06-12 05:25:04  No: 9383

FieldのonGetText,onSetTextでなんとかできます。
他のイベントは無用です。


HOta  2004-06-12 17:26:12  No: 9384

入力は、計算項目に入力して、
実際の項目は表示しないようにすれば良いでしょう。


teck  2004-06-14 20:17:28  No: 9385

しみわたりさん、HOtaさんありがとうございます。

返信遅くなりすみませんでした。

>FieldのonGetText,onSetTextでなんとかできます。
onGetTextで受け取った値に1000をかけて、onSetTextで表示出来ました。
この場合表示のみ1000倍になっているようですが、中身も1000倍に
出来ますか?

>実際の項目は表示しないようにすれば良いでしょう。
私の説明の仕方が悪かったようですが(^^;
表示は実数で、入力だけ1/1000でやりたいです。
入力の値が最低1000なので・・・
入力値「100」表示「100,000」実数「100,000」です。


HOta  2004-06-14 22:32:55  No: 9386

この1000倍の値をセットした先は、Fieldですよね。
でしたら、POSTすれば実際のField値もこの値が入り、
それを表示しているので問題あるません。


teck  2004-06-15 02:05:58  No: 9387

私のほうがいまいち理解できていませんでした。。

onGetText
入力[100]表示[100,000]データ[100]

でしたが、
onGetTextの1000倍をやめて

onSetTextで1000倍しましたら、期待通り
入力[100]表示[100,000]データ[100,000]に
なってくれました。

HOtaさん何度もアドバイスして頂き本当にありがとうございましたm(__)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加