Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

un pequeño problema

Estas en el tema de un pequeño problema en el foro de Visual Basic clásico en Foros del Web. Buenos dias. Estoy creando, a partir de una aplicacion ya hecha, un programilla para la gestion de socios de una asociacion. Estaba ya todo listo, ...
  #1 (permalink)  
Antiguo 16/05/2008, 05:02
 
Fecha de Ingreso: febrero-2006
Mensajes: 124
Antigüedad: 18 años, 2 meses
Puntos: 0
un pequeño problema

Buenos dias.

Estoy creando, a partir de una aplicacion ya hecha, un programilla para la gestion de socios de una asociacion. Estaba ya todo listo, pero se me ocurrio ponerle tambien un sistema de busqueda de socios por distintas caracteristicas (nombre, apellidos...) por medio de botones independientes cada uno, los cuales llevan este codigo:

Código:
Private Sub Command6_Click()
Dim r As Long
r = InputBox("Introduce Apellido")
rst.Recordset.FindFirst "DNI='" & r & "'"
End Sub
al probar la aplicacion todo funciona correctamente excepto estos botones, que arrojan:

Error de Compilacion:

no se encontro el miembro o el metodo de datos



Alguine me puede hechar una mano?

Gracias.
  #2 (permalink)  
Antiguo 16/05/2008, 11:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: un pequeño problema

Cita:
Iniciado por tuchy Ver Mensaje
Buenos dias.

Estoy creando, a partir de una aplicacion ya hecha, un programilla para la gestion de socios de una asociacion. Estaba ya todo listo, pero se me ocurrio ponerle tambien un sistema de busqueda de socios por distintas caracteristicas (nombre, apellidos...) por medio de botones independientes cada uno, los cuales llevan este codigo:

Código:
Private Sub Command6_Click()
Dim r As Long
r = InputBox("Introduce Apellido")
rst.Recordset.FindFirst "DNI='" & r & "'"
End Sub
al probar la aplicacion todo funciona correctamente excepto estos botones, que arrojan:

Error de Compilacion:

no se encontro el miembro o el metodo de datos



Alguine me puede hechar una mano?

Gracias.
¿Dónde defines rst?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/05/2008, 17:26
 
Fecha de Ingreso: febrero-2006
Mensajes: 124
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: un pequeño problema

Pongo el codigo completo:

Código:
Option Explicit

Dim cn As Connection
Dim rst As Recordset


Private Sub Buscar_Click()

End Sub

' Primer registro, siguiente, etc...
Private Sub cmdNav_Click(Index As Integer)

    ' Si hay registro activo sale
    If rst.BOF And rst.EOF Then Exit Sub

    Select Case Index
        Case 0
            rst.MoveFirst
        Case 1
            rst.MovePrevious
            If rst.BOF Then rst.MoveFirst
        Case 2
            rst.MoveNext
            If rst.EOF Then rst.MoveLast
        Case 3
            rst.MoveLast
    End Select

    ' Carga la imagen en el Picture
    Call Mostrar_Imagen

End Sub

Private Sub Command1_Click(Index As Integer)

    Select Case Index
 
        'Agrega un nuevo registro
        Case 0
            rst.AddNew
            Picture1.Cls
            'Elimina el registro activo
            
            CmdNuevo
            
        Case 1
            If rst.EOF Or rst.BOF Then Exit Sub
            If MsgBox("Eliminar Registro", vbQuestion + vbYesNo) = vbNo Then Exit Sub
            
            Picture1.Cls
    
            'Elimina el archivo de la carpeta de imagenes
            If rst(Field_Img) <> "" Then
                Call Kill(Carpeta_IMG & rst(Field_Img))
            End If
        
            rst.Delete
            
            If rst.RecordCount > 0 Then
               cmdNormal
            Else
               cmdSinRegistros
            End If
            
            If rst.EOF Or rst.BOF Then
                Exit Sub
            End If
            rst.MoveNext
            
            If rst.EOF Then
               On Error Resume Next
               rst.MoveLast
            End If
            'Carga la imagen del registro activo
            Mostrar_Imagen
            Exit Sub
             
        ' Botón Actualizar los cambios en la base de datos
        Case 2
            If Not rst.EOF And Not rst.BOF Then
                rst.Update
                Guardar_Imagen
                cmdNormal
            End If

        ' Cancela la atualización o edición del registro que se editando o añadiendo
        Case 3
            cmdEditar
            Setear_TextBox
            Exit Sub
  
        'Botón Editar el registro activo
        Case 4
            If rst.EOF And rst.BOF Then Exit Sub
            rst.CancelUpdate
  
            If Not rst.BOF And Not rst.EOF Then
                If rst(Field_Img) <> "" Then
                    Call Dibujar_Imagen(Picture1, Carpeta_IMG & rst(Field_Img))
                End If
                
            End If
            
            If rst.RecordCount > 0 Then
                cmdNormal
            Else
                cmdSinRegistros
            End If
        'Carga una imagen en el control Picture1
        Case 5
  
            With CommonDialog1
                .DialogTitle = " Seleccionar imagen"
                .Filter = "BMP|*.bmp|JPEG|*.jpeg|GIF|*.gif|JPG|*.jpg|Todos|*.*"
     
                .ShowOpen
     
                If .FileName = "" Then
                    Exit Sub
                Else
         
                    ' Graba el nombre en el campo, el id de imagen _
                    que es el mismo que el campo Id
         
                    rst(Field_Img) = rst!id '
         
        
                    ' se dibuja la imagen en el Picture
                    Call Dibujar_Imagen(Picture1, .FileName)
         
                End If
            End With
            
            Exit Sub

        Case 6

            ' Limpia la imagen del Picture y Elimina el id de _
            imagen del registro actual de la base
            
            If MsgBox("Desea eliminar la imagen ?", vbYesNo + vbQuestion) = vbYes Then
               Picture1.Cls
               rst(Field_Img) = ""
               Exit Sub
            End If

    End Select

    
    Setear_TextBox

    ' Muestra la imagen
    Mostrar_Imagen

End Sub
  #4 (permalink)  
Antiguo 16/05/2008, 17:27
 
Fecha de Ingreso: febrero-2006
Mensajes: 124
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: un pequeño problema

mas...

Código:
Sub Guardar_Imagen()


    ' Si el campo Id_Imagen no está vacio ...
    If rst(Field_Img) <> "" And CommonDialog1.FileName <> "" Then
        ' Copia el archivo a la carpeta de imagen
        Call FileCopy(CommonDialog1.FileName, _
                      Carpeta_IMG & "\" & rst!id)

        '... si no, si el archivo está en lacarpeta lo  elimina

    ElseIf Dir(Carpeta_IMG & "\" & rst!id) <> "" And rst(Field_Img) = "" Then
       Call Kill(Carpeta_IMG & rst!id)

    End If
End Sub


Private Sub Mostrar_Imagen()

    With rst
        ' Si no hay ningún registro activo sale
        If .EOF Or .BOF Then
            Exit Sub
        End If
        
        ' Si el registro no tiene una imagen asociada Limpia el Picture
        If .Fields(Field_Img) = "" Or .Fields(Field_Img) = 0 Then
           Picture1.Cls
        Else
           ' Lee el archivo de imagen y lo dibuja en el Picture
            Call Dibujar_Imagen(Picture1, Carpeta_IMG & .Fields(Field_Img))
        End If

        'Me.Caption = "Registro N°: " & CStr(.AbsolutePosition)

    End With

End Sub

Private Sub Setear_TextBox()
    'Bloquea y desbloquea los textbox
    Dim T As TextBox
    For Each T In Me.txt_Field
        T.Locked = Not T.Locked
    Next
End Sub

' Habilita y deshabilita los CommandButton

Private Sub Setear_botones()

    Dim i As Integer

    For i = 0 To Command1.Count - 1
        Command1(i).Enabled = Not Command1(i).Enabled
    Next

    For i = 0 To cmdNav.Count - 1
        cmdNav(i).Enabled = Not cmdNav(i).Enabled
    Next

End Sub


Private Sub Imprimir()
    
Dim rsFicha As ADODB.Recordset
    
    Set rsFicha = New Recordset

    rsFicha.Open "Select * FROM clientes Where Id=" & lblID.Caption, cn, adOpenStatic, adLockReadOnly
    
    If rsFicha.RecordCount > 0 Then
        
       Set DataReport1.DataSource = rsFicha
        
       With DataReport1
            If rsFicha!id_Imagen <> "" Then
            
                .Sections.Item("Sección1").Controls("lblSinFoto").Visible = False
                Set .Sections.Item("Sección1").Controls("rptImagen").Picture = Picture1.Image
            Else
                .Sections.Item("Sección1").Controls("lblSinFoto").Visible = True
            End If
            DataReport1.Show
        End With
    Else
       MsgBox "No hay registro para imprimir ", vbInformation
    End If
    
End Sub

Private Sub Command2_Click()
    Call Imprimir
End Sub



















Private Sub Command4_Click()

Dim r As Long
r = InputBox("Introduce Apellido")
rst.Recordset.FindFirst "DNI='" & r & "'"
End Sub



Private Sub Command6_Click()
Dim r As Long
r = InputBox("Introduce Apellido")
rst.Recordset.FindFirst "DNI='" & r & "'"
End Sub

Private Sub Command7_Click()
Dim r As Long
r = InputBox("Introduce DNI")
rst.Recordset.FindFirst "DNI='" & r & "'"
End Sub

Private Sub Command8_Click()
Dim r As Long
r = InputBox("Introduce Número")
rst.Recordset.FindFirst "Numero='" & r & "'"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next

    If Not rst Is Nothing Then
        If rst.State = adStateOpen Then rst.Close
        Set rst = Nothing
    End If
    If Not cn Is Nothing Then
        If cn.State = adStateOpen Then cn.Close
        Set cn = Nothing
    End If
    
End Sub

Private Sub Form_Load()

    Dim Pathbd As String, cadena As String
    Dim T As TextBox
    
    Set cn = New Connection

    Pathbd = App.Path & "\db1.mdb"

    cadena = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Pathbd & _
                                     ";Persist Security Info=False"

    
    cn.Open cadena

    Set rst = New Recordset

    rst.Open "Select * FROM clientes Order by Apellido", cn, adOpenStatic, adLockOptimistic

    ' Nombre del campo  que tiene el ID de imagen
    Field_Img = "ID_Imagen"
    ' Path de la carpeta donde están las imagenes
    Carpeta_IMG = App.Path & "\img\"

    ' Si no existe la carpeta para guardar las imagen la crea
    If Dir(App.Path & "\img", vbDirectory) = "" Then
        MkDir App.Path & "\img"
    End If
    
    If rst.RecordCount > 0 Then
        Call cmdNormal
    Else
        Call cmdSinRegistros
    End If
    
    Set txt_Field(0).DataSource = rst
    Set txt_Field(1).DataSource = rst
    Set txt_Field(2).DataSource = rst
    Set txt_Field(3).DataSource = rst
    Set txt_Field(4).DataSource = rst
    Set txt_Field(5).DataSource = rst
    Set txt_Field(6).DataSource = rst
    Set txt_Field(7).DataSource = rst
    Set txt_Field(8).DataSource = rst
    Set txt_Field(9).DataSource = rst
    
    
    
    txt_Field(0).DataField = "Nombre"
    txt_Field(1).DataField = "Apellido"
    txt_Field(2).DataField = "Telefono"
    txt_Field(3).DataField = "Dni"
    txt_Field(4).DataField = "Direccion"
    txt_Field(5).DataField = "Email"
    txt_Field(6).DataField = "Obra social"
    txt_Field(7).DataField = "Poblacion"
    txt_Field(8).DataField = "Notas"
    txt_Field(9).DataField = "Numero"
    

    'Opcional: esto visualiza el Id del registro en un label
    Set lblID.DataSource = rst
    lblID.DataField = "Id"

    Call Setear_TextBox

    ' carga la imagen en el registro si es que tiene
    Call Mostrar_Imagen

End Sub


Sub cmdNormal()

    DeshabilitarTodosCmd

    Command1(0).Enabled = True
    Command1(1).Enabled = True
    Command1(3).Enabled = True
    
End Sub

Sub cmdSinRegistros()

    DeshabilitarTodosCmd
    Command1(0).Enabled = True

End Sub

Sub cmdEditar()
        
    DeshabilitarTodosCmd
    Command1(2).Enabled = True
    Command1(4).Enabled = True
    Command1(5).Enabled = True
    Command1(6).Enabled = True
    
End Sub

Sub CmdNuevo()
    DeshabilitarTodosCmd
    Command1(2).Enabled = True
    Command1(4).Enabled = True
    
    Command1(5).Enabled = True
    Command1(6).Enabled = True
    
End Sub

Sub DeshabilitarTodosCmd()
    Command1(0).Enabled = False
    Command1(1).Enabled = False
    Command1(2).Enabled = False
    Command1(3).Enabled = False
    Command1(4).Enabled = False
    Command1(5).Enabled = False
    Command1(6).Enabled = False
    
    
End Sub

Private Sub mnuImprimir_Click()
    Call Imprimir
End Sub

Private Sub mnuVerTodo_Click()
    With Form2
         Set .MSHFlexGrid1.DataSource = rst
        .Show vbModal
    End With
End Sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:11.