Access SQL Visual

Amallolm muy precisa tu respuesta anterior, me ayuda mucho, ahora tengo otra consulta:
Tengo un informe hecho en access, el cual llamo desde visual para imprimir, este informe es producto de una consulta que hice en access, lo que me gustaría es desde visual basic modificar la consulta para que el informe se imprima con dichos cambios, en definitiva quiero que la consulta tenga un filtro así el informe se imprime con dicho filtro.
Gracias

1 Respuesta

Respuesta
1
No sé si he entendido bien tu pregunta, pero te mando un pequeño ejemplo que creo que te puede servir de orientación para hacer lo que tu deseas. Este ejemplo utiliza el método CopyQueryDef para crear una copia de un objeto QueryDef de un objeto Recordset existente y modifica la copia agregando una cláusula a la propiedad SQL. Cuando crea un objeto QueryDef permanente, los espacios en blanco, puntos y comas o avances de línea se pueden agregar a la propiedad SQL; estos caracteres adicionales se deben quitar antes de adjuntar cláusulas nuevas a la instrucción SQL.
Function CopiarNuevaConsulta(rstTemp As Recordset, _
strAgregar As String) As QueryDef
Dim strSQL As String
Dim strDerechaSQL As String
Set CopiarNuevaConsulta = rstTemp.CopyQueryDef
With CopiarNuevaConsulta
' Quita caracteres adicionales.
strSQL = .SQL
strDerechaSQL = Right(strSQL, 1)
Do While strDerechaSQL = " " Or strDerechaSQL = ";" Or _
strDerechaSQL = Chr(10) Or strDerechaSQL = vbCr
strSQL = Left(strSQL, Len(strSQL) - 1)
strDerechaSQL = Right(strSQL, 1)
Loop
.SQL = strSQL & strAgregar
End With
End Function
Este ejemplo muestra un posible uso de CopiarNuevaConsulta().
Sub CopiarDefConsulta()
Dim dbsNeptuno As Database
Dim qdfEmpleados As QueryDef
Dim rstEmpleados As Recordset
Dim intComando As Integer
Dim strOrdenarPor As String
Dim qdfCopiar As QueryDef
Dim rstCopiar As Recordset
Set dbsNeptuno = OpenDatabase("Neptuno.mdb")
Set qdfEmpleados = dbsNeptuno.CreateQueryDef("NuevoQueryDef", _
"SELECT Nombre, Apellidos, FechaNacimiento FROM _
Empleados")
Set rstEmpleados = qdfEmpleados.OpenRecordset(dbOpenSnapshot, _
dbForwardOnly)
Do While True
intComando = Val(InputBox( _
"Elija el campo por el que ordenar un nuevo_
"Recordset:" & vbCr & "1 - Nombre" & vbCr &_
"2 - Apellidos" & vbCr & "3 - Fecha de _
"nacimiento" & vbCr & "[Cancelar - salir]"))
Select Case intComando
Case 1
strOrdenarPor = " ORDER BY Nombre"
Case 2
strOrdenarPor = " ORDER BY Apellidos"
Case 3
strOrdenarPor = " ORDER BY FechaNacimiento"
Case Else
Exit Do
End Select
Set qdfCopiar = CopiarNuevaConsulta(rstEmpleados, strOrdenarPor)
Set rstCopiar = qdfCopiar.OpenRecordset(dbOpenSnapshot, _
dbForwardOnly)
With rstCopiar
Do While Not .EOF
Debug.Print !Apellidos & ", " & !Nombre & " - " & _
!FechaNacimiento
.MoveNext
Loop
.Close
End With
Exit Do
Loop
rstEmpleados.Close
' Elimina el nuevo QueryDef porque esto es un ejemplo.
dbsNeptuno.QueryDefs.Delete qdfEmpleados.Name
dbsNeptuno.Close
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas