VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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でも同じ症状
を確認しました。


よろしくお願いします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -