none
visual basic 6.0 y oracle 8i RRS feed

  • Pregunta

  • Hola a todos, quería volcar en una matriz variant el resultado de una consulta a una base de datos Oracle 8i...

    1  Dim Lv_Matriz as Variant 
    2  Dim Lsv_Query as String 
    3  Dim Lrs_Cursor As rdoResultset 
    4  Dim Ll_Columnas As Long 
    5  Dim Li_i As Integer 
    6  Dim Ll_Contador As Long 
    7 
    8  Ll_Contador = 0 
    9 
    10  Lsv_Query = "consulta sql sobre campo numérico" 
    11 
    12  Set Lrs_Cursor = Gcn_Conexion.OpenResultset(Lsv_Query, rdOpenDynamic) 
    13   
    14   
    15  With Lrs_Cursor 
    16    If .EOF Then 
    17      ReDim Lv_Matriz(0, 0) 
    18      Lv_Matriz(0, 0) = "'" 
    19 
    20      Me.NumFil = 0 
    21    Else 
    22      Ll_Columnas = .rdoColumns.Count 
    23      Me.NumCol = Ll_Columnas 
    24      ReDim Lv_Matriz(.RowCount, Ll_Columnas) 
    25      Do While Not .EOF 
    26        For Li_i = 0 To Ll_Columnas - 1 
    27          Lv_Matriz(Ll_Contador, Li_i) = .rdoColumns(Li_i).Value 
    28        Next 
    29        .MoveNext 
    30        Ll_Contador = Ll_Contador + 1 
    31      Loop 
    32      Me.NumFil = .RowCount 
    33    End If 
    34 
    35  End With 




    la cuestion es que si yo hago una consulta sobre un campo numérico y ese campo numérico es, por ejemplo, 379,50, al hacer una instancia sobre el cursor  Lrs_Cursor (linea 12), en vez de volcarme el valor que está en la base de datos (379,50) , me vuelca el valor 3795 , por lo que al pasarle el valor a la matriz (linea 27) me lo hace mal y me vuelca 3795 en vez de 379,5

    Si yo hago esa consulta en la base de datos la consulta me devuelve el valor que me tiene que devolver, es decir la variable Lsv_Query está bien , lo que hace mal es instanciar el cursor Lrs_Cursor

    ¿ a que puede ser debido esto?



    Programador_Coruña
    miércoles, 25 de febrero de 2009 13:10

Todas las respuestas

  • Hola chicos ya he resuelto el problema. Si al hacer el select le añado un 0, por ejemplo

    SELECT NUMUNIDADES+0

    entonces el Lrs_Cursor se instancia correctamente, es decir , no se "traga" los decimales.
    Debe ser una cuestion interna del visual basic...no lo se...pero funciona :) ....


    Programador_Coruña
    miércoles, 4 de marzo de 2009 18:55