ご質問があります。宜しくお願い致します。
オラクル上に「TABLE_DATA」テーブルがあります。
TABLE_DATAのフィールドは「A,B,C」とあり、それぞれ1桁のテキスト
になっており、Aには1か2が必ず入り、BとCについては既定値が1桁の
空白になっており、通常は適当な文字が入るようになっています。
次にTEST1.mdbとTEST2.mdbがあり、両方ともTABLE_DATAと同じ構造の
テーブルが入っています。(レコードは無し)
さて、何をしたいかですが、Aに1が入っている場合は、TEST1.mdbに
出力し、Aに2が入っている場合はTEST2.mdbに出力しようとしています。
で、以下のコードを書いたのですが、BとCについて1桁の空白のの時、
mdb側を見るとnullになってしまっています。
動作させて確認すると、「ORS.Fields("B").Value」は"△"(△:半角空白)
ではなくて、""になっています。
これを回避するためにはどうすればいいのでしょうか。
単純に「mobjTblTmp!B = Left$(ORS.Fields("B").Value & " ",1)」
としてあげればいいのでしょうが、今テストで行っているフィールド
のサイズは1桁程度ですが、実はこれから行おうとしているテーブル
では、1フィールドサイズが100とか200とかのもありますので、あまり
これは現実的では無いと思ったので・・・。
また、このコードの書き方はおかしい!。単純に右から左に入れるだけ
なんであればこんなやり方がある!。と言うのもありましたら、ご指摘
頂ければと思います。
まだまだVBをやり込めていないため、あちこち検索しては試している
状態なので、つぎはぎだらけのコードになっています・・・。
(お恥ずかしい)
何卒宜しくお願い致します。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Private mobjOdb As OraDatabase
Private mobjOss As Object
Private mobjWS As Workspace
Private mobjMDB1 As Database
Private mobjMDB2 As Database
Private mobjTbl1 As Recordset
Private mobjTbl2 As Recordset
Private mobjTblTmp As Recordset
'Oracle
Set mobjOss = CreateObject("oracleinprocserver.xorasession")
Set mobjOdb = mobjOss.OpenDatabase("TEST", "TEST/TEST", 0&)
'mdb
Set mobjWS = CreateWorkspace("", "admin", "", dbUseJet)
Set mobjMDB1 = mobjWS.OpenDatabase("TEST1.mdb", True)
Set mobjMDB2 = mobjWS.OpenDatabase("TEST2.mdb", True)
Set mobjTbl1 = mobjMDB1.OpenRecordset("TABLE_DATA", dbOpenTable)
Set mobjTbl2 = mobjMDB2.OpenRecordset("TABLE_DATA", dbOpenTable)
Set ORS = mobjOdb.CreateDynaset("SELECT * from TABLE_DATA", 0&)
Do Until ORS.EOF
If ORS.Fields("A").Value = "1" Then
Set mobjTblTmp = mobjTbl1
Else
Set mobjTblTmp = mobjTbl2
End If
mobjTblTmp.AddNew
mobjTblTmp!A = ORS.Fields("A").Value
mobjTblTmp!B = ORS.Fields("B").Value
mobjTblTmp!C = ORS.Fields("C").Value
mobjTblTmp.Update
ORS.MoveNext
Loop
CreateDynasetの2番目の引数が問題です。
0& を指定しているので、末尾のスペースの自動除去が有効になっています。
oo4oのマニュアルをよく読んで適切なパラメータを指定しましょう。
ひろさん、ありがとうございます。
調べてみましたら、ORADYN_NO_BLANKSTRIPと言う引数が
出てきました。
早速実行したところ、ちゃんと空白入りになっていました。(^^
助かりました。ありがとうございました。(_ _)
ツイート | ![]() |