Access - por si a alguien se sirve para algo

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

por si a alguien se sirve para algo

Publicado por JOSE (1 intervención) el 30/09/2011 15:12:56
OTRA FORMA MAS SENCILLA

Private Sub Etiqueta28_Click()

Dim BASEDEDATOS As Database
Dim qdfNew As QueryDef


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"

' Create permanent QueryDef.
Set qdfNew = CurrentDb().CreateQueryDef(NOMBRECONSULTA, CONSULTA)


' ABRE LA CONSULTA CREADA
DoCmd.OpenQuery NOMBRECONSULTA, acViewNormal, acReadOnly

' Delete new QueryDef because this is a demonstration.
CurrentDb().QueryDefs.Delete qdfNew.Name
CurrentDb().Close


End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar