お世話になります。
DBはSQLServer2000で
VB6.0を使用し、RDOからADOに変換してるんですが、
RDOの場合、
rs![name] = "文字列"
として、[name]がvarchar(2)だったとしても、
エラーにならず、余分な文字はカットされて
"文"だけが登録されるのですが、
ADOの場合だと、ここでエラーになってしまいます。
本来はそうあるべきなのでしょうが、
数が多すぎて対処しきれない状態です。
ADOでもRDOと同じようにエラーにならず登録はできないものでしょうか?
そもそもRDOでエラーしないからと言って、それが正しいとは
言えないと思います。
格納先のサイズが、最大2バイトで、それより長い文字列を
格納しようとして、エラーとなる・・・正しい動作です。
データベース側やプログラムの変更を最小限度にして、それ
らを実施したいということであれば・・・何をもって最小限
度にするかと言う判断もありますが・・・
1. その関数部分で、On Local Error Goto ... で、該当の
箇所のエラーの場合、文字列変数を2バイトに切り詰め
る。
2. データベース側のフィールドサイズを、格納可能な程度
の長さに拡張し、INSERT や、UPDATE でトリガを儲け、
2バイトに着ろ詰める。
跡で、フィールドサイズも2バイトに戻す・・・
と言うことくらいしか思いつきません。
最大は・・・やはり、各代入文の部分で、2バイトを超える
文字列かどうかを判定し、超えていた場合、切り詰めるよう
変更されるのがよいと思いますが・・・
※ 格納先のフィールドサイズが、最大2バイトの場合、
それより長いデータを格納させる意味があるのでしょう
か?
そのデータの切り詰めで、切り捨てられたデータが発生
した場合、そのデータはどうなるのでしょうか?
ただ単に切り詰めるだけではなく、切り捨てられる可能
性のあるデータを先に抽出して、逆に適切なフィールド
サイズに変更しないといけないのではないでしょうか?
以上。