SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: zambito en Lunes 22 de Septiembre de 2003, 11:44
-
He notado q despues un Insert en desde un Data Environment los cambios no se reflejan hasta q cierro la aplicacion y vuelvo a ajecutarla...como puedo evitar ese inconveniente?
-
Hola.
Me da que las instrucciones en la base de datos se están ejecutando de forma asíncrona. Ahora mismo no sé si se puede indicar al dataenviroment que ejecute de forma síncrona/asíncrona.
Supervisa el evento ExecuteComplete del comando que utilices en el dataenvironment. Comprueba que el evento se desencadena antes de que tú cierres la aplicación. Si esto es así, tal vez el problema esté en que no refrescas algún recordset tras hacer cambios en la bd.
A ver si con esto obtenemos alguna pista.
Suerte.
-
Pues puede ser eso si...pero como refresco el recorset usando data environment?
-
Utiliza una sintáxis de este estilo:
DataEnvironment1.Recordsets(Índice_o_nombre).Requery
Suerte.
-
Q torpeza la mia...a q llamas indice? nombre? te refieres al nombre del Command?...
-
Hola Zambito.
'Recordsets' es una especie de colección del DataEnvironment que contiene precisamente eso, recordsets. Para referirte a un elemento de la colección, es decir a un recordset en concreto, deberás referirte a él por su índice (normalmente si sólo tienes 1 elemento, su índice será 1) o por su clave.
Supongo que también puedes usar algo así:
Dim int1 as integer
For int1 = 1 to DataEnvironment1.Recordsets.Count
DataEnvironment1.Recordsets(int1).Requery
Next int1
Suerte.
-
creo que a lo que zambito se refiere es al nombre del command.
Yo la sentencia la utilizo asi y funciona...
DataEnvironment.rscommand.requery
(donde command es el nombre que le hayamos dado al command)
-
Ok...si algo asi me imaginaba, trate de buscar el dichoso indice pero no los encontre en las propiedades, creo q me decanto por usar mejor el nombre...
otra duda se puede cambiar la sentencia sql del command estando en ejecucion?
por ejemplo mi command original es
Select * for clientes
pero en el transcurso de la aplicacion le quiero aplicar un filtro y necesito cambiar la sentecia a
select * for clientes where pais =?
puedo cambiarlo o necesito crear otro command?
-
si puedes cambiarlo, pero antes debes cerrar el data.
dataenvironment.rsnombre.close
dataenvironment.rsnombre.open "Select...."
-
mira para actualizar un dataenvironment tienes que primero descargar de la memoria y luego volver a llamarla, asi:
unload dataenvironment1
datareport1.show
unload mas el nombre del dataenvironment para descargarlo de la memoria,
luego llama al datareport
-
No se si es un fallo de vb pero cuando en el dataenviorenment actualizas la consulta ejecuntado el comandol de.nombrede_comando los controles que tienes enlazados pierden el enlace, ejemplo el datagrid no te muestra nada.
la forma de solucionarlo es que despues de que ejecutas el comando tienes que reenlazar con el recordset. es decir poner
datagrid.datamenber=""
set datagrid.datasource=de.rscomando.
donde de.rscomando es el recordset que te crea el dataenvironment "de" para el comando.
ya verás como si te aparecen ahora.
Has de hacer lomismo para cada control enlazado.