SoloCodigo
		Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: clinforsat en Martes 29 de Abril de 2003, 12:33
		
			
			- 
				hola estoy haciendo informes en vb6 y no se como puedo cambiar la consulta SQL de un data enviroment por ciertos datos que tengo en la aplicacion en variables publicas. es decir dependiendo del codigo poder hacer que la consulta varie.
 
 GRACIAS
- 
				La forma de cambiar la consulta SQL es:
 DataEnvironment1.comandoACambiar.Recordsource="nueva consulta SQL"
 El problema es que una vez leído el conjunto de registros ya no lo vuelve a leer a no ser que se cierre previamente.
 Una forma cómoda de hacerlo es:
 
 DataEnvironment1.Commands(indiceDel ComandoACambiar).Recordsource="nueva consulta SQL"
 
 datareport1.show vbModal
 
 DataEnvironment1.Recordsets(indiceDel ComandoACambiar).close.
 
 Otra forma es preguntar antes de asignar la nueva cláusula si ya está abierto.
 Espero que te sirva
 
 :good:
- 
				GRACIAS DE ANTEMANO, el problema principal lo tengo a la hora de incluir en la secuencia SQL los valores de las variables, yo ya habia probado esto antes y le coloco las variables en la consulta pero no me las admite
			
- 
				Construye la cadena primero:
 EJ:
 
 dim cad as string
 cad="select * from tabla where campo1=" & txtprimervalor  & " and campo2='" & txtotroValorEsteDeTipoCadena & "'"
 dataenvironment1.commands(indice).recordsource=cad
 
 Podría ser así.
 
 :good:
- 
				mira yo trabajo con mis dataenviroment's de la sig manera, primero hago la consulta, que debe coincidir con los campos que declaraste en tu dataenviroment y despues la filtro como se me antoja
 
 * Aqui preparo mi consulta, que la filtro de acuerdo a un usuario
 
 imprimir="select * from apoyo where usuario='" & clv_usua & "' Order by Orden"
 
 *Despues compruebo que mi recordset no este abierto, si esta lo cerrare, recuerda que por cada comando de impresion que generas en tu dataenvironment, hay un recordset, en esta caso mi comando de impresion se llama CmdCorte y existe un recorset que tiene el mismo nombre mas al inicio la palabra rs
 
 If DataEnvironment1.rsCmdCorte.State Then DataEnvironment1.rsCmdCorte.Close
 
 *Despues lo abro con la consulta de esta forma
 DataEnvironment1.rsCmdCorte.Open Source:=imprimir
 
 *Y por ultimo compruebo si el recorset tiene registros, para imprimir el reporte, si no mandar cualquier mensaje
 
 If DataEnvironment1.rsCmdCorte.RecordCount Then
 repCierreCaja.Show 1
 else
 msgbox "No hay información para Imprimir"
 endif
 
 bueno asi trabajo yo con mis dataenviroment's espero te sirva:comp: