投稿日 | : 2003/07/25(Fri) 18:48 |
投稿者 | : hiro |
Eメール | : |
URL | : |
タイトル | : Re^2: SQLServerのNUMERIC型について |
とろさんありがとうございます。
早速ですがコードです。
一部投稿用に編集していますが参考にして下さい。
Dim mRs1 AS ADODB.Recordset
Dim sCode as long
sCode = 10
'SQL定義
wSQL = "SELECT コード, カナ, 名称,数量 FROM R_実績 "
wSQL = wSQL & "WHERE R_実績.コード = " & sCode
'レコードセット作製
Set G_Com.ActiveConnection = G_Con
G_Com.CommandText = wSQL
Set mRs1 = New ADODB.Recordset
mRs1.Open G_Com, , adOpenForwardOnly, adLockReadOnly
'マスタ未登録の時
If mRs1.EOF = True Then
wRet = Com_DisplayMsg(gMSG_P1050_001) エラー処理です
mRs1.Close
Set mRs1 = Nothing
Exit sub
End If
'マスタに存在した時
With mRs1
P1050_Code = .Fields("コード")
P1050_Kana = .Fields("カナ")
P1050_Name = .Fields("名称")
P1050_SuRyou = .Fields("数量") → ここの値がnumeric型
End With
mRs1.Close
Set mRs1 = Nothing
Exit sub
問題は .Fields("数量") の部分です。
イミディエイトで ?.Fields("数量") と入力すると何故か " 5 " といったように
前後にスペースがついてくるのです。
これを ?trim(.Fields("数量")) にすると"5"という結果になります。
フィールドの値を取得する方法として他の方法も試して見ましたが同じ結果でした。
後不思議なのが P1050_SuRyou をSTRING型で定義してあるのですが、
P1050_SuRyou = .Fields("数量") の後、?P1050_SuRyou をイミディエイトで参照すると
"5"になっています。
環境はWin2000sp2、VB6 SP5、ADO2.7、SQLSERVER2000 SP1です。又ADOは2.0でも同じ症状
を確認しました。
よろしくお願いします。