Error al llamar datos de una tabla

Tengo el Siguiente código:
Private Sub cboObra_Click()
cboAnticipoDirigidoA.Text = ""
cboLegalizacionNo.Text = ""
Set Con = New ADODB.Connection
With Con
    .ConnectionString = "provider = microsoft.ace.oledb.12.0;data source=D:\PROYECTO TYT\TYT.accdb"
    .Open
End With
Set Rec4 = New ADODB.Recordset
With Rec4
    Set .ActiveConnection = Con
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .LockType = adLockOptimistic
    .Source = "select * from LEGALIZACIONES where OBRA ='" & cboObra & "'"
    .Open
End With
Set DataGrid1.DataSource = Rec4
Display2
End Sub
Al seleccionar un dato, del cual on hay registro en otra tabla me aparece un error en esta linea:
Private Sub Display2()
Set Con = New ADODB.Connection
With Con
    .ConnectionString = "provider = microsoft.ace.oledb.12.0;data source=D:\PROYECTO TYT\TYT.accdb"
    .Open
End With
Set Rec2 = New ADODB.Recordset
With Rec2
    Set .ActiveConnection = Con
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .LockType = adLockOptimistic
    .Source = "select * from RECIBOS where LEGALIZACION =" & Me.DataGrid1.Columns(1)
    .Open
End With
Set DataGrid2.DataSource = Rec2
DataGrid2.Visible = True
End Sub
El error dice: Error '6160' en tiempo de ejecución: ¿Error de acceso de datos
como puedo solucionar esto?

2 Respuestas

Respuesta
1
Verifica que Me. DataGrid1. Columns(1) devuelve el valor y no otra cosa
Devuelve un valor de una tabla, pero como en la tabla a la cual le estoy haciendo el select no tiene nada me lanza el error.
Entonces valida que si no devuelve un valor no puedes hacer la consulta sql
eso lo haces antes de with
Respuesta
1
En la línea que marcas, el error puede estar en "Me.DataGrid1.Columns(1)", asegúrate que el datagrid que estás utilizando tiene datos al momento en que realizas esta consulta.
Pruébalo y me dices.
El segundo datagrid no tiene datos, pero no se como validar que si no hay datos entonce no haga la consulta.
Hay dos casos que podrías validar.
Caso 1: El datagrid está anexado a un recorset, pero el recorset no tiene registros, en tal caso la propiedad . ApproxCount es cero (0)
Caso 2: El datagrid no tiene anexado un recorset, en tal caso, tienes que validar el error 7005 (Conjunto de filas no disponible)
En la práctica:
on error resume next
if Me.DataGrid1.AproxCount>0 then
End if
On Error Resume Next
    If Me.DataGrid1.ApproxCount > 0 Then
        If Err.Number = 0 Then
            Set Rec2 = New ADODB.Recordset
            With Rec2 
              Set .ActiveConnection = Con
              .CursorType = adOpenDynamic
              .CursorLocation = adUseClient
              .LockType = adLockOptimistic
              .Source = "select * from RECIBOS where LEGALIZACION =" & Me.DataGrid1.Columns(1)
              .Open 
           End With
           Set DataGrid2.DataSource = Rec2
           DataGrid2.Visible = True
        ElseIf Err.Number <> 7005 Then
            MsgBox "Este es otro error"
        End If
    End If

Tendría que ayudar en algo...
Olvida las líneas
on error resume next
if Me.DataGrid1.AproxCount>0 then
End if
Que estás a continuación de "En la práctica", son un error de tipeo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas