Consultar BD Access mediante EXCEL 2007

¿Qué tal?
Tengo un combobox (cbxmateriales) en una hoja de excel en el cual quiero que aparezcan datos de una tabla (materiales) que tengo en un archivo de Acces (C:\Documents and Settings\Rafael Yan\Escritorio\Compras\Compras Bogavante.accdb). La tabla tiene 3 campos: ID, Descripcion, Status. Para esto programé en VB la rutina que se muestra abajo. Por alguna razón que desconozco, la consulta funciona para traer el ID y el Status (el combo se carga correctamente), pero en el momento que le indico traer la descripcion, me marca el siguiente error: "Se ha producido el error '2147352571 (80020005)' en tiempo de ejecución: Tipo Incorrecto", al momento de depurar, el error está en la línea ".additem rs!descripcion" (al poner el cursor sobre este texto marca rs!descripcion = nulo). Me gustaría saber ¿porqué la rutina me marca error con "descripcion" y no cuando indico "id" o "status"?
Private Sub Worksheet_Activate()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL As String
    Set Conn = New ADODB.Connection
    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
             "Data Source=C:\Documents and Settings\Rafael Yan\Escritorio\Compras\Compras Bogavante.accdb"
    Set rs = New ADODB.Recordset
    SQL = "select id from materiales" '<-- aquí intenté id, status y descripcion (por separado)
    rs.Open SQL, cnn, adOpenStatic
    rs.MoveFirst
    With cbxMateriales
        .Clear
        Do
            .AddItem rs!ID <-- aquí marca el error con rs!descripcion
            rs.MoveNext
        Loop Until rs.EOF
    End With
End Sub
Como referencia, la tabla Materiales tiene los siguientes datos:
Id descripción status
1 Verdadero <-- Descripción en blanco
2 Acero Verdadero
3 Cobre Verdadero
4 Concreto Verdadero
5 Fo.Fo. Verdadero
6 Galvanizado Verdadero
7 Hierro Dúctil Verdadero
8 Latón Niquelado Verdadero
9 Neopreno Verdadero
10 Plomo Verdadero
11 Polietileno A.D. Verdadero
12 Polipropileno Verdadero
13 PVC Verdadero
Respuesta
1
Ok donde te marca el error agregarle el iif(isnull(rs! ID),"", rs! ID) y con eso lo que le preguntas aquí es que si te trae un valor nulo que te escriba o te deje en blanco el registro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas