Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

[VB] Problema con Refresh

Participa en el tema [VB] Problema con Refresh en el foro Programación.
Hola amigos Tengo el siguiente problema y quisiera q alguien me ayude. Estoy haciendo un ...

Buscar en este tema:
1 2 >
 
  •  
    pescador33 escribió el 11/04/2008 a las 20:37 hs.
     
    ¿Mensaje inapropiado?
    #1 [VB] Problema con Refresh
    Hola amigos
    Tengo el siguiente problema y quisiera q alguien me ayude.
    Estoy haciendo un programa en visual basic con una base en acces y la conecto con adodc. El problema es q no se bien como usar el refresh cuando modifico un registro existente en la tabla. Porque cuando hago el

    adodc1.recordset.update
    adodc1.refresh

    vuelve los datos q modifique a estar como estaban antes.
    Si saco el refresh, osea solo queda el

    adodc1.recordset.update

    tengo q correr unos registros para adelante para q me tome los cambios. Si lo cierro el programa asi, tampoco me toma los cambios.
    Q estoy haciendo mal???

    Les agradeceria mucho su ayuda.
    Un abrazo
    +
     
    0
    Me gusta
     
    http://www.psicofxp.com/forums/programacion.313/694991-vb-problema-con-refresh.html
    | Más
  • galau escribió el 12/04/2008 a las 03:40 hs. ¿Mensaje inapropiado?

    #2 Re: Problema con Refresh

    No entiendo si lo que no modifica son los registros de la tabla o lo que te muestra por pantalla.
    Pareceria que te falta la instruccion SQL (update nombreTabla set nombreCampo="dato nuevo" y despues de ejecutar esta instruccion harias la consulta para mostrar la tabla actualizada (select nombreCampo from nombreTabla) y el refresh despues.
    Espero te sirva,sino pone algo mas de codigo para poder ayudarte.
    Saludos.
    Me gusta este mensaje
  • El-Pastor NEW escribió el 12/04/2008 a las 16:46 hs. ¿Mensaje inapropiado?

    #3 Re: Problema con Refresh

    Originalmente publicado por pescador33 Ver mensaje
    Hola amigos
    Tengo el siguiente problema y quisiera q alguien me ayude.
    Estoy haciendo un programa en visual basic con una base en acces y la conecto con adodc. El problema es q no se bien como usar el refresh cuando modifico un registro existente en la tabla. Porque cuando hago el

    adodc1.recordset.update
    adodc1.refresh

    vuelve los datos q modifique a estar como estaban antes.
    Si saco el refresh, osea solo queda el

    adodc1.recordset.update

    tengo q correr unos registros para adelante para q me tome los cambios. Si lo cierro el programa asi, tampoco me toma los cambios.
    Q estoy haciendo mal???

    Les agradeceria mucho su ayuda.
    Un abrazo
    Mira te paras en el registro que queres modificar.... Supongamos que tenes los campos NOMBRE y APELLIDO y queres modificarlos haces:

    adodc1.recordset("NOMBRE") = "el nuevo nombre"
    adodc1.recordset("APELLIDO") = "el nuevo apellido"adodc1.recordset.Update
    adodc1.recordset.Close

    Es decir proba despues del update CERRAR el recorset, y lueog volve a cargarlo con la consulta para ver si lo guardo.

    Por ahi el motodo de abrir que estas utilizando no lo estas haciendo para escritura, solo para lectura
    Me gusta este mensaje
  • pescador33 escribió el 14/04/2008 a las 18:16 hs. ¿Mensaje inapropiado?

    #4 Re: Problema con Refresh

    No modifica nada. Ni en la tabla ni en el formulario.
    Yo lo conecto asi:
    La base se llama cooperativa. No abro el recordset con consulta sql

    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & App.Path & "\Cooperativa.mdb;" & _
    "Persist Security Info=False"
    Adodc1.RecordSource = "Socios"
    Adodc1.Refresh

    Lo raro es que en otros formularios esta igual y me funciona.
    Q estare haciendo mal??
    Me gusta este mensaje
  • El-Pastor NEW escribió el 15/04/2008 a las 08:48 hs. ¿Mensaje inapropiado?

    #5 Re: Problema con Refresh

    Originalmente publicado por pescador33 Ver mensaje
    No modifica nada. Ni en la tabla ni en el formulario.
    Yo lo conecto asi:
    La base se llama cooperativa. No abro el recordset con consulta sql

    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & App.Path & "\Cooperativa.mdb;" & _
    "Persist Security Info=False"
    Adodc1.RecordSource = "Socios"
    Adodc1.Refresh

    Lo raro es que en otros formularios esta igual y me funciona.
    Q estare haciendo mal??
    Adodc1 es tu objeto para la base de datos, cual es tu objeto para el recorset?...

    Fijate cual es tu recorset, cambia lo siguiente por "Adodc1.Open"
    Adodc1.RecordSource = "Socios"
    Adodc1.Refresh

    Luego a tu recorset dale Open con una consulta, si tu tabla es socios podes hacer "SELECT * FROM SOCIOS" y indica el objeto de la base de datos...
    Me gusta este mensaje
  • pescador33 escribió el 16/04/2008 a las 10:55 hs. ¿Mensaje inapropiado?

    #6 Re: Problema con Refresh

    Ay!!! Perdon pero no entiendo. Me podrias poner un ejemplo??
    Me gusta este mensaje
  • El-Pastor NEW escribió el 16/04/2008 a las 16:05 hs. ¿Mensaje inapropiado?

    #7 Re: Problema con Refresh

    Originalmente publicado por pescador33 Ver mensaje
    Ay!!! Perdon pero no entiendo. Me podrias poner un ejemplo??
    Pone un poco mas extenso tu codigo fuente, documentando lo que queres hacer y te hago un ejemplo en base a lo que ya tenes.
    Me gusta este mensaje
  • pescador33 escribió el 16/04/2008 a las 19:55 hs. ¿Mensaje inapropiado?

    #8 Re: Problema con Refresh

    Bueno ahi va:

    Este form es un abm de los socios de una cooperativa

    Private Sub Form_Load()
    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & App.Path & "\Cooperativa.mdb;" & _
    "Persist Security Info=False"
    Adodc1.RecordSource = "Socios"
    Adodc1.Refresh
    End Sub


    El form posee 8 text
    el text1 es el codigo del socio asi q esta bloqueado y me incrementa automaticamente el codigo.
    luego estan:
    text2: Es el nombre del socio
    text3: domicilio
    text4: localidad
    text5: tipo de iva
    text6: categoria " A,B o C"
    text7: CUIT
    text8: numero de medidor.

    Una vez cargado los form o modificado algo, en el comando guardar hago lo siguiente:

    Private Sub cmdguardar_Click()
    With Adodc1.Recordset
    !codsocio = Text1.Text
    !nombreapellido = Text2.Text
    !domicilio = Text3.Text
    !codlocalidad = Text4.Text
    !codtipoiva = Text5.Text
    !codcategoria = Text6.Text
    !cuit = Text7.Text
    !nummedidor = Text8.Text
    End With
    Adodc1.Recordset.Update
    Adodc1.Refresh
    End Sub

    Con esos codigos me modifica en la base de datos. Pero en el form al hacer click en el guardar me vuelve el registro modificado a como estaba antes. Una vez q cierro el programa y lo vuelvo a abrir si estan los cambios.
    Otra cosa. Si dpues de hacer el Adodc1.Recordset.Update, no hago el Adodc1.Refresh. Funciona correctamente. Pero es necesario el Refresh no??

    Es raro no?

    Espero q haya sido claro.
    Bueno gracias por tu tiempo y tu ayuda.
    Me gusta este mensaje
  • El-Pastor NEW escribió el 16/04/2008 a las 22:25 hs. ¿Mensaje inapropiado?

    #9 Re: Problema con Refresh

    Lo hise rapido sin probarlo, asi que te aconsejo que copies todo el proyecto en una carpeta aparte y lo pruebes ahi (en el copiado no en el original)....

    La idea es que remplazes el codigo que tenes por que el que te copio a continuacion....

    En si cuando hagas click en guardar tendria que guardar en el ultimo registro lo que pusiste en los textbox, fijate si te salta un error, avisame.

    Código:
    Private Sub Form_Load()
    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & App.Path & "\Cooperativa.mdb;" & _
    "Persist Security Info=False"
    Adodc1.Recordset.Open "SELECT * FROM Socios", Adodc1, adOpenDynamic, adLockOptimistic
    End Sub
    
    Código:
    Private Sub cmdguardar_Click()
    If Adodc1.Recordset.BOF And True And Adodc1.Recordset.EOF = True Then
        'significa que no hay ningun registro...
        Adodc1.Recordset.AddNew
    Else
        'significa que hay registros, asi que movemos al ultimo antes de crear uno nuevo
        Adodc1.Recordset.MoveLast
        'por que no pongo el movelast cuando no hay registros, por que obviamente tira error
        Adodc1.Recordset.AddNew
    End If
    Adodc1.Recordset("codsocio") = Text1.Text
    Adodc1.Recordset("nombreapellido") = Text2.Text
    Adodc1.Recordset("domicilio") = Text3.Text
    Adodc1.Recordset("codlocalidad") = Text4.Text
    Adodc1.Recordset("codtipoiva") = Text5.Text
    Adodc1.Recordset("codcategoria") = Text6.Text
    Adodc1.Recordset("cuit") = Text7.Text
    Adodc1.Recordset("nummedidor") = Text8.Text
    Adodc1.Recordset.Update
    Adodc1.Recordset.Close
    'Hasta aca se tuvo que guardar correctamente...
    'Habro nuevamente el recorset para que verifiques que ya quedo guardado a lo ultimo
    Adodc1.Recordset.Open "SELECT * FROM Socios", Adodc1, adOpenDynamic, adLockOptimistic
    End Sub
    
    Me gusta este mensaje
  • pescador33 escribió el 17/04/2008 a las 10:26 hs. ¿Mensaje inapropiado?

    #10 Re: Problema con Refresh

    Ok. Gracias. Lo Pruebo Y Te Aviso

    Me tira el siguiente error en la linea "Adodc1.Recordset.Open "SELECT * FROM Socios", Adodc1, adOpenDynamic"
    "Variable de tipo objet o la variable del bloque With no está establecida"
    Me gusta este mensaje
1 2 >
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 11 RESPUESTAS
  • 1818 VISTAS
  • 3 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB