URGENTE DataList VB

Hola, gusto en conocerte, tengo un gravísimo problema, resulta que he creado una aplicación con VB y con acceso a datos con la herramienta Microsoft Access. Todo el programa me funciona muy bien pero he aquí el problema.
Tengo un DataList conectado a un DataEviroment, allí he agregado un Comando con una instrucción SQL. Esta instrucción tiene un criterio el cual esta dirigido a un campo tipo Bit.
La consulta se ejecuta perfectamente en el Control DataList pero cuando un registro de esa consulta no cumple con el criterio de la Instrucción SQL del comando generado a partir de la conexión Eviromente, el bendito registro sigue apereciendo en el DataList.
El problema en sí es que: ¿Cómo se hace para actualizar el control datalist en tiempo de ejecución?

10 respuestas

Respuesta
1
La forma en que se actualiza el DataList es por medio del objeto(o control) con el cual obtienes los datos, en este caso, un comando del DataEnvironment(Si fuera por medio de AdoDataControl, actualizado la propiedad Source de dicho control, etc.), que es realmente el que se actualiza, no propiamente el control DataList.
La actualización solo es posible de la siguiente manera:
1. Cerrando la colección de registros o recordset (command del DataEnvironment)
2. Desligando el DataList del comando
3. Asignando el nuevo criterio
4. Abriendo de nuevo la colección de registros
5. Estableciendo de nuevo la liga entre el DataList y el comando
Supongamos que tu comando se llama cmd1
Aunque ya muestras el contenido en el DataList, cuando haces tu procedimiento para introducir el nuevo criterio, enseguida ejecutas el siguiente código:
DataEnvironment1. Rscmd1. Close (1)
DataList1.RowMember = "" (2)
DataEnvironment1.rscmd1.Source = "Select * From NombreTabla Where Campo1..."(3)
DataEnvironment1.rscmd1.Open (4)
DataList1.RowMember = "cmd1" (5)
Solo es posible establecer un nuevo criterio de selección de registros cerrando la colección de registros y volviéndola a abrir.
Espero que te sirva, si no es así, no cierres la pregunta y coméntame que pasó.
Hasta pronto
Respuesta
1
Lo más probable de acuerdo a como me platicas el problema, es que casi todo esté bien y solo unas cosas las que debes modificar.
Primero verifica que tipo de cursor estas utilizando a la hora de ejecutar tu consulta (o mejor dicho tu command), para más información consulta la ayuda sobre cursortype.
Segundo, en el punto en el cual quieres que se actualicen los datos de nuevo en el dblist, utiliza la llama del método refresh, requery y/o resync.
Y por último puedes verificar tus querys en la Vista SQL de Access en el menú Vista o View dependiendo el Idioma.
Respuesta
1
Luego que ejecutes tu comando tendrás que incluir la siguiente linea de código
Set DataList1.DataSource = NombredelRecordset
Esta linea hace que el datalist sea actualizado con la nueva información.
Suerte, Cualquier cosa no dudes en preguntarme nuevamente.
Respuesta
Tienes que refrescar el objeto y más cuando la respuesta de la sentencia SQL da como resultado ningún registro. Prueba con Datalist. Refresh o Datalist. Refill justo después de tu secuencia SQL. En ADO va perfecto. Yo utilizo ADO en ludar de DATALIST, pero bueno, eso son gustos. En ADO utilizo el método Requery, que creo recordar no existe en el Datalist.
Si con esto sigue sin funcionar, deberás vaciar el control Datalist antes de ejecutar cualquier sentencia SQL contra él. Es otro modo de hacerlo.
Si nada funciona, dímelo y miraré un buen manual de referencia que tengo en casa llamada Professional SQL Prograamming with Visual Basic que trata de forma maravillosa el Datalist entre otras cosas.
Fíjate, ya he utilizado DataList.Refresh y DataList.Refill, epro que crees que estará pasando. Algo tiene que ver con el formulario en sí.
Cuando cierro el formulario y vuelvo a abrirlo, aparece el DataList con los datos actualizados perfectamente.
Acuérdate que estoy utilizando DataEnviromente directamente al control.
ayudaaaaaaaaaaaaaaaaaaaaa
Cuando cierras y abres el formulario funciona porque los controles se recargan todos. Voy a ser franco, no se lo que es DataEnvironment, pero entiendo que el refresco del control puedes forzarlo si antes de ejecutar la función SQL vacías tu el control Datalist con Datalist. Clear. Si hay resultados, deberán refrescarse. Si no, el resultado es blanco.
Prueba a ver...
Respuesta
Raul, si bien mi fuerte no es VB, te puedo sugerir que verifiques primero la sentencia sql, si realmente estas filtrando correctamente la consulta y segundo, para refrescar un control casi siempre existe el método refresh del control.
Espero que soluciones el problema, sino escribime nuevamente y si me añades el código de sql te lo puedo verificar
Respuesta
Creo que tienes algo de información en Microsoft y no se si incluso en la ayuda de VB.
Efectivamente, dentro de la web de Microsoft te he encontrado esto:
http://support.microsoft.com/support/kb/articles/Q216/6/66.asp
Habla sobre tu problema y la no actualización del dato...
Y te da una RESOLUTION, que hagas un re-bind de los controles... Bueno, léete el artículo que está muy bien.
Respuesta
Sabes yo probé lo que te ocurría junto a unos compañeros y no logramos que nos ocurriera tu mismo error y solo lo conseguimos usando las propiedades refresh y rebuild.
Disculpa si no te pude ayudar
Respuesta
Bien espero poder ayudarte en esto, la manera de actualizar cualquier control enlazado en refrescar el objeto que actúa como contenedor de datos, en tu caso seria refrescar o volver a ejecutar el comando del dataenviroment que contiene los datos mostrados en el datalist, pero ojo que te podes encontrar con algunos problemas que suele traer aparejado el enlazar controles, yo en lugar de usar un datalist usaría un list común y lo manejaría a mi gusto, pero como siempre para lograr precisión se debe resindir velocidad de programación. Suerte.
Respuesta
-1
La verdad es que nunca he usado datalists ni dataenvironments. Mira a ver si alguno de estos dos objetos tiene un método Refresh, Requery o Rebind.
Respuesta
-1
La actualización debería de ser algo como esto:
DataEnvironment1. RsCommand1. Requery
Te aconsejo más bien que revises el tipo de bloqueo que tienes y el tipo de comando que estas utilizando.
No para todos es actualizable.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas