Intento contestarte por partes:
1) podrias usar una consulta de inserccion, algo asi:
CurrentDb.Execute "INSERT INTO Tabla(CampoNumerico,CampoTexto,CampoFecha) VALUES (" & me.ControlCampoNumerico & ",
'" & ControlCampoTexto & "
',
#" & format(ControlCampofecha,"mm/dd/yyyy") & "
#)"
Te he puesto los 3 tipos d ecampo mas tipicos con sus correspondientes caracteres de inserccion, es decir, ninguno para un campo numerico, comillas simples (en rojo) para una campo texto, y almohadilla (en azul) para campos tipo fecha. Ademas, a la fecha le damos formato americano (con el que access trabaja internamente, aunque esta afirmacion no es del todo exacta, evitaras errores)
2)Si usas access 2007, tienes la opcion de poner el control de tipo fecha, y parece ser que al poner el raton sobre el control te sale un calendario. es (segun he leido) una nueva funcionalidad de esta version. De no ser asi, tienes varias opciones de calendarios emergentes, por ejemplo esta del amigo
marciano:
ejemplo. tambien puedes introducir tu propio control calendario, hacerlo visible o invisible, mostrarlo a traves de un form modal....
3) Para tu tercera pregunta necesitas combos en cascada (eso me parecio entender). Aqui tienes una estupenda explicacion del amigo
Xavi de como hacerlo:
COPIO********************************************* **********************
Aunque no se trata de una funcion propiamente dicha, es un tema recurrente en el foro. Deciros que existe un ejemplo en la Web de Chea
http://jbengoechea.com/RptCp.htm#combos
Imaginemos que desarrollamos una aplicacion para un taller de vehiculos. Los vehiculos pertenecen a una marca, que tiene diferentes modelos que, a su vez, tienen diferentes versiones.
En nuestro formulario continuo vemos, al principio, todos los vehiculos que han pasado por el taller, y en el encabezado del formulario hemos puesto 3 combos para poder filtrar los datos. El formulario esta basado en una consulta a la tabla Vehiculos: SELECT * FROM Vehiculos ORDER BY Matricula;
El primer combo se llama Marcas y esta basado en una consulta a la tabla del mismo nombre. SELECT IdMarca, NombreMarca FROM Marcas; 2 columnas, la primera dependiente y anchos 0cm;4cm
El segundo combo (Modelos) esta basado en una consulta a la tabla Modelos (esa tabla contiene un campo IdMarca que los relaciona con la tabla Marcas). SELECT IdModelo, IdMarca, NombreModelo FROM Modelos; 3 columnas, la primera dependiente y anchos 0cm;0cm;4cm
El tercer combo (Versiones) basado en una consulta a la tabla Versiones (que contiene un campo IdModelo que lo relaciona con la tabla Modelos). SELECT IdVersion, IdModelo, NombreVersion FROM Versiones; 3 columnas, la primera dependiente y anchos 0cm;0cm;4cm
Cuando abrimos el formulario, el primer combo nos muestra todas las marcas. Al seleccionar una de ellas se produce el evento AfterUpdate. Aqui es donde decidimos que el contenido del combo Modelos debe variar para mostrar solo los de esa marca.
Me!Modelos.RowSource = "SELECT IdModelo, IdMarca, NombreModelo FROM Modelos WHERE IdMarca=" & Me!Marcas & ";"
A continuacion cambiamos el RecordSource del formulario para mostrar los vehiculos que coinciden con esa Marca:
Me.RecordSource = "SELECT * FROM Vehiculos WHERE IdMarca = " & Me!Marcas & " ORDER BY Matricula;"
Ahora el combo Modelos solo muestra los de la marca escogida en el combo Marcas.
Al seleccionar un modelo, tambien en el AfterUpdate, debemos cambiar el contenido del combo Versiones:
Me!Versiones.RowSource = "SELECT IdVersion, IdModelo, NombreVersion FROM Versiones WHERE IdModelo=" & Me!Modelos & ";"
Y actualizar el RecordSource del formulario:
Me.RecordSource = "SELECT * FROM Vehiculos WHERE IdMarca = " & Me!Marcas & " And IdModelo = " & Me!Modelos & " ORDER BY Matricula;"
Al seleccionar una version, tambien en el AfterUpdate, actualizamos el RecordSource del formulario:
Me.RecordSource = "SELECT * FROM Vehiculos WHERE IdMarca = " & Me!Marcas & " And IdModelo = " & Me!Modelos & " And IdVersion = " & Me!Versiones & " ORDER BY Matricula;"
Ahora queremos restaurar esos combos para que nos muestren todos los registros. Ponemos un boton Restaurar que nos debe devolver los RowSources originales y dejar los combos en blanco. Tambien cambiamos el RecordSource para devolverlo a su estado original.
Private Sub restaurar_Click()
Me!Marcas = Null
Me!Modelos.RowSource = "SELECT IdModelo, IdMarca, NombreModelo FROM Modelos;"
Me!Modelos = Null
Me!Versiones.RowSource = "SELECT IdVersion, IdModelo, NombreVersion FROM Versiones;"
Me!Versiones = Null
Me.RecordSource = "SELECT * FROM Vehiculos ORDER BY Matricula;"
End Sub
Espero os sirva.
FIN COPIA********************************************* *********************
un saludo