• Domingo 22 de Diciembre de 2024, 18:14

Autor Tema:  Refresh Para Un Combobox Y Un Msflexgrid  (Leído 6615 veces)

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Refresh Para Un Combobox Y Un Msflexgrid
« en: Lunes 30 de Enero de 2006, 01:56 »
0
aqui cuotes esto no es algo que se presento ahorita, de hecho, desde que conozco o he usado el VB he visto este problema que es seguro que a muchos les ha pasado, en una ocasion lo resolvi de una forma rara, cerrando y volviendo a llamar al Form, no se notaba y parecia como si el control se refrescara, pero ya en otros casos no me sirve esa brutalidad hehehe.

Es que tengo un Form en el que guardo unos registros en una BD Access (por eso preferi usar DAO solo en esta ocasion) y al guardarlo, tengo un ComboBox en el Form que muestra el Nombre del Cliente, se despliega y se selecciona el nombre para cargar todos sus demas datos en los Text del Form.

El problema es que al guardar un registro este cambio o anexo no se refleja ni en el Combo ni en una rejilla  MSFlexGrid que tengo, no refrescan ni para cuando se mete un nuevo registro en la BD, o actualizar uno ya existente o Eliminarlo, pq al eliminarlo sigue apareciendo tanto en el Combo como en el MSFlexgrid el registro.

Entonces, como se actualiza la vista de estos controles pq al menos el MSFlexgrid lo tengo contectado a la Bd por medio de un Data al cual le hago Refresh, e incluso le hago Refresh tanto al combo como al MSFlexGrid o un Requery no recuerdo ahorita pero algo asi le he puesto en codigo a estos controles y nada, no actualizan los cambios, solo lo hacen si cierro y vuelvo a cargar el Form, pero eso asi no me sirve.

Alguien sabe como refrescarlos?  :(

Estoy a solo un paso para comenzar a hacer el instalador y probarlo, pero ya de 2 problemas esta resulto uno (gracias cpmario) falta este otro, actualizar estos dos controles (distintos controles, mismo problema)  :angry:

que la fuerza te acompañe  :lightsabre:
Si esto es Leído por accidente, induzca al vomito

jc_moty

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Refresh Para Un Combobox Y Un Msflexgrid
« Respuesta #1 en: Lunes 30 de Enero de 2006, 03:29 »
0
Bueno, tengo mucho tiempo de no usar DAO, asi que te doy la idea de lo que yo hago pero con ADO...
Lo que hago con un ComboBox, por ejemplo es volverlo a llenar, con un Do While Not Recordset.EOF, etc, etc..
Con la MsFlexgrid podes volver a asignar la propiedad que permite la conexion (no recuerdo cual es la propiedad, seria algo asi: Set MsFlexGrid.Propiedad = RecordSet)

Saludos :suerte:
[size=109]Compartir el conocimiento es una acción de seres inteligentes, que han comprobado que el conocimiento es un bien que crece a medida que se lo comparte.

Firma la petición para que Microsoft mantenga activo VB6(mas información]aquí[/url])[/size]

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Refresh Para Un Combobox Y Un Msflexgrid
« Respuesta #2 en: Lunes 30 de Enero de 2006, 13:44 »
0
Bueno, creo que la cosa es que refresques tu cada vez que realices un cambio.

Es lo que dice jc_moty

Los controles DataGrid y ComboBox estaran referenciados a traves de la propiedad DataSource a un recordSet ¿no?

Ten en cuenta que esto no indica que recojan los datos directamente de la base de datos. sino que lo hacen de los datos que tu introdujiste en un recordset a traves de una consulta. Por eso no refresca.

Debes actualizar este recordSet con una nueva consulta cada vez que cambies datos en la Base de Datos.

Espero que te haya ayudado.

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Refresh Para Un Combobox Y Un Msflexgrid
« Respuesta #3 en: Lunes 30 de Enero de 2006, 18:36 »
0
Es verdad, como se llena se vuelve a poner eso mismo al final del codigo de Guardar, Modificar y Eliminar, pero creo que hay un problema con eso.

Bueno el bucle lo hago ya sea con Do While como con solo While siempre me ha funcionado igual.

Al guardar un registro, seleccionar el campoID del Combo, el cual da la consulta de los demas datos llenando los TextBox, luego al Eliminar ese registro, sigue apareciendo en el Combo.

Viendo este codigo (el primero) no realiza el bucle debido a que se indica que se mueva al primer registro para comenzar a hacer el bucle, el MoFirst da error si la BD está vacia, por lo que primero le puse un Rs.RecordCount >0 o un Rs.EOF que funciona igual, como es el primer registro guardado y eliminado de la BD, no hace el bucle ya que la sentencia IF no se cumple.

Código: Text
  1.  
  2. If Rs.RecordCount > 0 Then
  3.     Rs.MoveFirst
  4.     While Not Rs.EOF
  5.          Frorm1.CmbSeleccionar.AddItem Rs("TxtNombre")
  6.          Rs.MoveNext
  7.     Wend
  8. End If
  9.  
  10.  

Y si le quito los IF y lo dejo sin eso es lo mismo, no da error de codigo pero no actualiza el control.
Lo de la sentencia IF es para el .MoveFirst ya que si la BD esta vacia el MoveFirst da error.

Aqui produce un error al quitar la validacion para evitarle error al MoveFirst, lo malo de esto as es que el Recordset se queda en el recorrido, es decir, si antes se busco el Registro numero 5, con este codigo iniciara desde ahi hasta el final, en cambio con el MoveFirst iniciaba desde el primer registro hasta finalizar los registros de la tabla por medio del ciclo.

Pero esto codigo asi da error, precisamente porque al entrar al While produce el error: No hay ningun registro activo al  menos el codigo anterior evitaba que se produjese esto.
Código: Text
  1.  
  2.     While Not Rs.EOF
  3.          Form1.CmbSeleccionar.AddItem Rs("TxtNombre")
  4.          Rs.MoveNext
  5.     Wend
  6.  
  7.  

Sé que por ahi va la cosa, pero parece que bueno tendre que ponerme a ver como hacer para que funcione, si veo que da mucho problema, elimino el combo, ni modo.

 :blink: El MSFlexGrid no tiene ninguna propiedad llamada .Propiedad lo indicaste en negrita pero no sé si era teorico ya que practico este control no posee la propiedad por codigo, bueno al menos no asi con esa sintaxis.  La unica explicacion que podria ser para una propiedad de conexión seria la propiedad del MSFlexGrid.DataSource pienso yo uhmmm... :unsure:

Bueno lo de la conexion del MSFlexGrid e indicarla nuevamente por codigo al final del codigo de Guardar, Modificar y Eliminar, si tendre que ponerme a ver como le hago ya que me ha dado algunos errores eso tambien.

Buen dato patitulofeo  ;)  a veces uno no se recuerda que lo que se muestra es aun el Recordset con lo tomado por él anteriormente y debo limpiarlo y cargarlo con los nuevos datos de la tabla de la Bd a la cual esta relacionada, es la clave de todo sip  :lightsabre:

Voy a probar y seguirle, y buscare un CD de backup de hace un tiempo en donde creo que tengo algo hecho con Combo y/o MSFlexGrid que hacen esto, ojala que si y que lo encuentre... bueno yo les cuento cualquier cosa, gracias muchachos  :hola:
Si esto es Leído por accidente, induzca al vomito

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Refresh Para Un Combobox Y Un Msflexgrid
« Respuesta #4 en: Lunes 30 de Enero de 2006, 20:01 »
0
Ya encontre algo que habia hecho hace tiempo, una consulta parecida pero de otra forma, elimine el ComboLista y el MSFlexGrid e hice una ventanita con un ListBox en donde se selecciona con un click a la persona, la ventanita se cierra y carga los demas datos del registro clickeado en la ventana principal, ya listo, si no se resolvia esa consulta por un lado, lo hacia por otro entonces  :D

La Fuerza es poderosa  :lightsabre:
Si esto es Leído por accidente, induzca al vomito