por si a alguien se sirve para algo
Publicado por jose (3 intervenciones) el 30/09/2011 13:54:34
hace unos dias tenía que resolver un problema que se me había planteado, hice la consulta en el foro y 2pl me dio la pista que necesitaba
por si acaso hay alguien con la misma dificultad :
REM PARA EL QUE LE INTERESE
rem sacado de la informacion de Microsoft
rem A veces hay que hacer muchas consultas diferentes y una de las soluciones es crear tantas consultas como necesitemos o bien hacerlo en formularios diferentes.
rem esto hace que tengamos una cantidad de objetos que nos impiden o dificultan ver u organizarnos.
rem por ello se me ocurrió la posibilidad de hacerlo con sentencias sql
rem pora ello este codigo lo que hace es crea una consulta, con select , la abre con el objeto DOCMD Y despues la borra no quardando ningun objeto de la consulta.
REM forma de instalarlo
rem 1 ------------en boton al hacer clic
rem ejemplo en una etiqueta llamada etiqueta 26
Private Sub Etiqueta26_Click()
CreateQueryDefX
End Sub
rem 2 ................. copiar estas dos funciones
rem 3------ poner el valor a CONSULTA QUE QUERAMOS
REM PRIMERA FUNCION ---------------------------------------------------------------------------------
Sub CreateQueryDefX2()
Dim BASEDEDATOS As Database
Dim qdfTemp As QueryDef
Dim qdfNew As QueryDef
Set BASEDEDATOS = CurrentDb()
REM AQUI SE PONE LA EL LITERAL DE LA CONSULTA Y ES EL QUE CAMBIA
CONSULTA= "SELECT * FROM personal1"
REM ESTE ES EL NOMBRE DE LA CONSULTA QUE CREA, NO ES NECESARIO HACER NADA CON EL PORQUE LE CREA Y LUEGO LE BORRA
NOMBRECONSULTA="C1-CONSULTA-DE TRABAJO"
With BASEDEDATOS
' ' Create permanent QueryDef.
Set qdfNew = .CreateQueryDef(NOMBRECONSULTA,CONSULTA)
' ' Open Recordset and print report.
GetrstTemp2 qdfNew
'
DoCmd.OpenQuery NOMBRECONSULTA, acViewNormal, acReadOnly
' Delete new QueryDef because this is a demonstration.
.QueryDefs.Delete qdfNew.Name
.Close
End With
End Sub
REM SEGUNDA FUNCION -------------------------------------------------------------
Function GetrstTemp2(qdfTemp As QueryDef)
Dim rstTemp As Recordset
With qdfTemp
Debug.Print .Name
Debug.Print " " & .SQL
' Open Recordset from QueryDef.
Set rstTemp = .OpenRecordset(dbOpenSnapshot)
With rstTemp
' Populate Recordset and print number of records.
.MoveLast
Debug.Print " Number of records = " & _
.RecordCount
Debug.Print
.Close
End With
End With
End Function
por si acaso hay alguien con la misma dificultad :
REM PARA EL QUE LE INTERESE
rem sacado de la informacion de Microsoft
rem A veces hay que hacer muchas consultas diferentes y una de las soluciones es crear tantas consultas como necesitemos o bien hacerlo en formularios diferentes.
rem esto hace que tengamos una cantidad de objetos que nos impiden o dificultan ver u organizarnos.
rem por ello se me ocurrió la posibilidad de hacerlo con sentencias sql
rem pora ello este codigo lo que hace es crea una consulta, con select , la abre con el objeto DOCMD Y despues la borra no quardando ningun objeto de la consulta.
REM forma de instalarlo
rem 1 ------------en boton al hacer clic
rem ejemplo en una etiqueta llamada etiqueta 26
Private Sub Etiqueta26_Click()
CreateQueryDefX
End Sub
rem 2 ................. copiar estas dos funciones
rem 3------ poner el valor a CONSULTA QUE QUERAMOS
REM PRIMERA FUNCION ---------------------------------------------------------------------------------
Sub CreateQueryDefX2()
Dim BASEDEDATOS As Database
Dim qdfTemp As QueryDef
Dim qdfNew As QueryDef
Set BASEDEDATOS = CurrentDb()
REM AQUI SE PONE LA EL LITERAL DE LA CONSULTA Y ES EL QUE CAMBIA
CONSULTA= "SELECT * FROM personal1"
REM ESTE ES EL NOMBRE DE LA CONSULTA QUE CREA, NO ES NECESARIO HACER NADA CON EL PORQUE LE CREA Y LUEGO LE BORRA
NOMBRECONSULTA="C1-CONSULTA-DE TRABAJO"
With BASEDEDATOS
' ' Create permanent QueryDef.
Set qdfNew = .CreateQueryDef(NOMBRECONSULTA,CONSULTA)
' ' Open Recordset and print report.
GetrstTemp2 qdfNew
'
DoCmd.OpenQuery NOMBRECONSULTA, acViewNormal, acReadOnly
' Delete new QueryDef because this is a demonstration.
.QueryDefs.Delete qdfNew.Name
.Close
End With
End Sub
REM SEGUNDA FUNCION -------------------------------------------------------------
Function GetrstTemp2(qdfTemp As QueryDef)
Dim rstTemp As Recordset
With qdfTemp
Debug.Print .Name
Debug.Print " " & .SQL
' Open Recordset from QueryDef.
Set rstTemp = .OpenRecordset(dbOpenSnapshot)
With rstTemp
' Populate Recordset and print number of records.
.MoveLast
Debug.Print " Number of records = " & _
.RecordCount
Debug.Print
.Close
End With
End With
End Function
Valora esta pregunta


0