RE:CONSULTA SELECCION DESDE VBA
Es como hacer la consulta en el generador y copiarla al código pero…no es tan fácil como piensas porque en ocasiones hay que seguir cierta sintaxis para que el Visual Basic reconozca la sentencia SQL que vas a meter sobre todo cuando igualas valores almacenados en cajas de texto, combos, listas etc.
Vamos a hacer un ejemplo muy sencillo:
tengo tabla1.Paterno, tabla1.Materno y tabla1.Nombre y todo esta en minúsculas, lo que voy a hacer es leer la tabla de manera secuencial (registro por registro) para convertirlas a mayúsculas con la función Ucase().
1) hacer consulta de selección en el generador de consultas.
SELECT Tabla1. Paterno, Tabla1.Materno, Tabla1.Nombre
FROM Tabla1
ORDER BY Tabla1.Paterno, Tabla1.Materno, Tabla1.Nombre;
2) en el formulario definimos la variable de memoria (Var) en la cual se va a almacenar la consulta SQL y definimos el RecordSet
Dim Var As String
Dim db As DAO.Database, rs As DAO.Recordset
3) creo un boton de proceso y en el evento clic del boton pongo lo siguiente:
Private Sub BotonProceso_Click()
‘aquí guardo la consulta en la variable de memoria
Var = "SELECT Tabla1. Paterno, Tabla1.Materno, Tabla1.Nombre FROM Tabla1 “ _
& “ORDER BY Tabla1.Paterno, Tabla1.Materno, Tabla1.Nombre ”
‘aquí abro la consulta almacenada en la variable con el RecordSet
Set db = CurrentDb()
Set rs = db.OpenRecordset(vSql)
‘pregunto si el RecordSet tiene registros
If rs.RecordCount > 0 Then
‘empieso a leer c/u de los registros de la consulta hasta que encuentre el fin de archivo.
Do While rs.EOF = False
‘edito el registro para poderlo modificar
rs.Edit
‘hago la conversion a mayusculas
rs!Paterno= Ucase(rs!Paterno)
rs!Materno= Ucase(rs!Materno)
rs!Nombre= Ucase(rs!Nombre)
‘acepto las modificaciones
rs.Update
‘leo el siguiente registro
rs.MoveNext
‘me regreso a continuar con el Do While
Loop
End If
‘cuando se llega al fin de archivo se sale del Do While y cierro el RecordSet
rs.Close
Set db = Nothing
End Sub
NOTA: para hacer referencia a los campos del recordSet lo hacemos rs!campo y para hacer referencia a las propiedades del RecordSet los hacemos con rs.propiedad (Edit, AddNew, Delete,Update,MoveFirst, MoveLast, MoveNext, Previus, etc)
Este ejemplo de convertir a mayusculas lo puedes hacer directamente en el generador de consultas pero te lo expongo de esta forma para que veas como se utiliza el RecordSet.
Espero te sea de utilidad y saludos.