1桁空白データを読込むと空白になってしまうのは?

解決


とんとこ  2004-08-27 20:10:23  No: 85286

ご質問があります。宜しくお願い致します。

オラクル上に「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


ひろ  2004-08-27 20:18:05  No: 85287

CreateDynasetの2番目の引数が問題です。
0& を指定しているので、末尾のスペースの自動除去が有効になっています。
oo4oのマニュアルをよく読んで適切なパラメータを指定しましょう。


とんとこ  2004-08-27 20:56:47  No: 85288

ひろさん、ありがとうございます。

調べてみましたら、ORADYN_NO_BLANKSTRIPと言う引数が
出てきました。

早速実行したところ、ちゃんと空白入りになっていました。(^^

助かりました。ありがとうございました。(_ _)


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

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






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