¿Cómo diseñar una aplicación con una base de datos y que envíe mails?
Eres el único que me contesta) quisiera saber como poder hacer una base de datos sencillita en el que introduzca las fechas de vacaciones de los empleados, quiero algo sencillo, lo que quiero en realidad es que cuando un empleado este de vacaciones mande un correo diciendo que esta de vacaciones para que no se le pase trabajo.
¿Alguna idea? Había pensado meter dos campos fecha inicio fecha fin, para que se metan la fecha de inicio de vacaciones y la de fin y otro campo que vaya contando los días porque se pueden coger días sueltos, semanas, quincenas y el mes.
No sé, necesito opinión de un experto, lo que si que es verdad es que necesito algo sencillito, hasta ahora teníamos un excel con todos los días del año y los marcaba con una por si estaba de vacaciones, lo que quiero es simplificarlo al máximo.
¿Alguna idea? Había pensado meter dos campos fecha inicio fecha fin, para que se metan la fecha de inicio de vacaciones y la de fin y otro campo que vaya contando los días porque se pueden coger días sueltos, semanas, quincenas y el mes.
No sé, necesito opinión de un experto, lo que si que es verdad es que necesito algo sencillito, hasta ahora teníamos un excel con todos los días del año y los marcaba con una por si estaba de vacaciones, lo que quiero es simplificarlo al máximo.
1 Respuesta
Respuesta de dayvitt
1
1
dayvitt, Soy: Programador-analista de aplicaciones en Lenguaje C...
Puedes preguntarme tanto como quieras, no hay problema, mientras me puntúes como es debido ;)
No se que servicio de correo utilizáis pero en Outlook hay el modo "Fuera de oficina" que te sirve para eso, no recibir correo cuando estas fuera y avisar al que te manda algo.
No se que servicio de correo utilizáis pero en Outlook hay el modo "Fuera de oficina" que te sirve para eso, no recibir correo cuando estas fuera y avisar al que te manda algo.
Bien, puedes hacer una base de datos como quieras, con nombre, fecha inicio vacaciones, fecha fin, correo-e
Y el código (haz las modificaciones pertinentes) para enviar correos electrónicos masivos es este.
Dim rst As DAO.Recordset
Dim strSql As String
Dim strSep As String
Dim strRes As String
Dim NomCamp As String
Dim NomTabla As String
Dim Separador As String
Dim DQ As String
Dim Criteris As String
NomCamp = "[<nombre del campo con correos electronicos>]"
NomTabla = "<nombre de la tabla que contiene los datos>"
Separador = "; "
DQ = """" <-- Esto nos va a servir para poder poner comillas en el texto
Criteris = <- Aqui ponle los criterios de la tabla
If Nz(NomCamp, "") <> "" Then
If Nz(NomTabla, "") <> "" Then
strSql = "SELECT " & NomCamp & " FROM " & NomTabla & Criteris & ";"
strSep = Nz(Separador, "")
Set rst = CurrentDb.OpenRecordset(strSql)
With rst
If (Not .EOF) And (Not .BOF) Then
Do While Not .EOF
If IsNull(.Fields(0)) = False Then
strRes = strRes & .Fields(0)
If Not .EOF Then
strRes = strRes & strSep
End If
End If
.MoveNext
Loop
End If
End With
End If
End If
strRes = Left(strRes, Len(strRes) - 2)
DoCmd. SendObject acSendNoObject,,,,, strRes
Y el código (haz las modificaciones pertinentes) para enviar correos electrónicos masivos es este.
Dim rst As DAO.Recordset
Dim strSql As String
Dim strSep As String
Dim strRes As String
Dim NomCamp As String
Dim NomTabla As String
Dim Separador As String
Dim DQ As String
Dim Criteris As String
NomCamp = "[<nombre del campo con correos electronicos>]"
NomTabla = "<nombre de la tabla que contiene los datos>"
Separador = "; "
DQ = """" <-- Esto nos va a servir para poder poner comillas en el texto
Criteris = <- Aqui ponle los criterios de la tabla
If Nz(NomCamp, "") <> "" Then
If Nz(NomTabla, "") <> "" Then
strSql = "SELECT " & NomCamp & " FROM " & NomTabla & Criteris & ";"
strSep = Nz(Separador, "")
Set rst = CurrentDb.OpenRecordset(strSql)
With rst
If (Not .EOF) And (Not .BOF) Then
Do While Not .EOF
If IsNull(.Fields(0)) = False Then
strRes = strRes & .Fields(0)
If Not .EOF Then
strRes = strRes & strSep
End If
End If
.MoveNext
Loop
End If
End With
End If
End If
strRes = Left(strRes, Len(strRes) - 2)
DoCmd. SendObject acSendNoObject,,,,, strRes
Perdón, me he explidado fatal, lo siento, lo que necesito más o menos es un calendario y que pueda marcar con una por en el calendario y que me grabe ese día (o días) y así luego mediante consultas ver cuantos días ha disfrutado de vacaciones, etc..., lo de el mensaje es secundario.
Gracias.
Gracias.
Bien, pues para eso create 2 tablas, una "empleados" con (idtrabajador, nombre, puesto etc etc etc...) y la otra "vacaciones" con (idvacaciones, nºtrabajador, fecha inicio, fecha fin)
Vinculas de 1 a muchos idtrabajador con nºtrabajador
Creas una consulta con idtrabajador, fecha inicio, fecha fin, y un campo calculado con difdate entre fecha inicio y fecha fin.
Finalmente create una tabla de referencias cruzadas para saber, por mes, cuantos días lleva cada trabajador.
Vinculas de 1 a muchos idtrabajador con nºtrabajador
Creas una consulta con idtrabajador, fecha inicio, fecha fin, y un campo calculado con difdate entre fecha inicio y fecha fin.
Finalmente create una tabla de referencias cruzadas para saber, por mes, cuantos días lleva cada trabajador.
Muchas gracias, ¿una cosilla con Difdate lo que saco son los días que hay entre una fecha y otra verdad?
Podría luego realizar una Consulta por día. Introducir un día y que me diga quien está de vacaciones.
Gracias, voy a ir montando las tablas.
Podría luego realizar una Consulta por día. Introducir un día y que me diga quien está de vacaciones.
Gracias, voy a ir montando las tablas.
Difdate solo te muestra el numero de días que hay entre dos.
Para lo que tu pides se puede hacer una consulta de selección para que te muestre los que tienen esa fecha entre fecha inicio y fecha fin.
Para lo que tu pides se puede hacer una consulta de selección para que te muestre los que tienen esa fecha entre fecha inicio y fecha fin.
Bueno en la tabla Empleado, no puedo usar la misma que tengo de Peritos y crear solo una tabla de vacaciones que un campo sea de búsqueda de la tabla peritos.
¿Qué opinas?
Gracias.
¿Qué opinas?
Gracias.
En la Tabla Vacaciones, he creado los campos Perito, Fecha Inicio, Fecha Fin, Días Vacaciones ( en este último campo he puesto que al recibir el enfoque realice la función DifFecha ("d"; [Fecha Fin] ; [Fecha Inicio] ) pero no sale nada.
Gracias.
Gracias.
Las consultas te las hace en el momento.
En las tablas guardale la información sin duplicados (saber la diferencia de días entre dos campos ya es un duplicado, ademas si modificas una de las fechas deberías modificar el otro campo también)
Luego te haces una consulta, y usas la fórmula difdate
En las tablas guardale la información sin duplicados (saber la diferencia de días entre dos campos ya es un duplicado, ademas si modificas una de las fechas deberías modificar el otro campo también)
Luego te haces una consulta, y usas la fórmula difdate
Estoy haciendo pruebas, te cuento he creado en el formulario un campo independiente que realice la fórmula diffecha (hasta aquí todo funciona perfectamente) ahora quiero que el campo días disfrutados tome el valor del campo independiente (lo he llamado DDISFRUTADOS). ¿Cómo lo hago?
Gracias.
Gracias.
No lo hagas así que te vas a hacer un lio.
Mejor hazte una tabla de referencias cruzadas entre nombre y la diferencia de fechas, así tendrás la suma de los días disfrutados.
Mejor hazte una tabla de referencias cruzadas entre nombre y la diferencia de fechas, así tendrás la suma de los días disfrutados.
Disculpame, pero:
1. ¿No puedo hacer que un campo de una tabla tome el valor de un campo independiente? Si no es así hago consulta de actualización tal y como me decías.
2. Como saco luego un listado con todos los días disfrutados de vacaciones, ejemplo en fecha inicio 10/05 fecha fin 15/05 Listado: 10/05 11/05 12/05 13/05 14/05 15/05 Total Días 6
3. Como hago cuando la el total de diffecha supere 30 días salte un mensaje algo así como "superado ya el total de días de vacaciones"
Gracias por todo, empezando por perder el tiempo con un torpe como yo jeeje
Gracias.
1. ¿No puedo hacer que un campo de una tabla tome el valor de un campo independiente? Si no es así hago consulta de actualización tal y como me decías.
2. Como saco luego un listado con todos los días disfrutados de vacaciones, ejemplo en fecha inicio 10/05 fecha fin 15/05 Listado: 10/05 11/05 12/05 13/05 14/05 15/05 Total Días 6
3. Como hago cuando la el total de diffecha supere 30 días salte un mensaje algo así como "superado ya el total de días de vacaciones"
Gracias por todo, empezando por perder el tiempo con un torpe como yo jeeje
Gracias.
No, no puedes hacerlo desde tablas eso que dices.
Para poner en campos valores de espacios independientes tienes que hacerlo con formularios.
Cuando tengas una consulta con: nombre_trabajador, fecha_incio, fecha_fin, y diffecha dime los campos y te hago la de referencias cruzadas
Para lo del mensaje será mejor usar formularios, que no consultas.
Para poner en campos valores de espacios independientes tienes que hacerlo con formularios.
Cuando tengas una consulta con: nombre_trabajador, fecha_incio, fecha_fin, y diffecha dime los campos y te hago la de referencias cruzadas
Para lo del mensaje será mejor usar formularios, que no consultas.
Por partes que soy muy torpe:
Ya tengo el formulario con el "nombre del perito" "Fecha Inicio" "Fecha Fin" y un campo "independiente que hace la fórmula diffecha". ¿Ahora?
Gracias por todo y por la paciencia.
Ya tengo el formulario con el "nombre del perito" "Fecha Inicio" "Fecha Fin" y un campo "independiente que hace la fórmula diffecha". ¿Ahora?
Gracias por todo y por la paciencia.
Es que es mejor primero hacer una consulta con nombre fechaini, fechafin, y otro campo creado de la manera siguiente:
Días: Diffecha...
Así, te hace como otro campo, pero que este se hace a partir de las dos fechas
Días: Diffecha...
Así, te hace como otro campo, pero que este se hace a partir de las dos fechas
Bien, aquí tienes el código para saber los días que llevan de vacaciones a partir de la consulta llamada "Consulta", que contiene los campos nombre, fecha inicio, fecha fin y días (que es el campo calculado)
TRANSFORM Sum(Consulta.Dias) AS SumaDeDias
SELECT Consulta.nombre, Sum(Consulta.Dias) AS [Total de Dias]
FROM Consulta
GROUP BY Consulta.nombre
PIVOT Format([fecha inicio],"mmm") In ("gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des");
Si te ha salido bien, dime cual es el siguiente paso
TRANSFORM Sum(Consulta.Dias) AS SumaDeDias
SELECT Consulta.nombre, Sum(Consulta.Dias) AS [Total de Dias]
FROM Consulta
GROUP BY Consulta.nombre
PIVOT Format([fecha inicio],"mmm") In ("gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des");
Si te ha salido bien, dime cual es el siguiente paso
Abre una consulta nueva en vista diseño y luego cambia la vista a SQL.
Debes tener en cuenta que ese código coge los datos de una consulta llamada consulta
Debes tener en cuenta que ese código coge los datos de una consulta llamada consulta
Para que veas la poca idea que tengo, je je.
Donde va el código y como te decía si se puede hacer sin código mejor.
Gracias.
Donde va el código y como te decía si se puede hacer sin código mejor.
Gracias.
Bien, vas a la sección de consultas, abres una consulta nueva en vista diseño.
Y en la pestaña superior izquierda que te cambia entre datos y diseño, veras un triangulo invertido. Si le das te da opciones de más vistas, una de ellas es la vista SQL.
Ahí le pegas el código que te he pasado, modificando en mi código la palabra Consulta por el nombre de la consulta que has creado el campoi Días con diffecha.
También debes cerciorarte que los nombres de los campos coincidan.
Una vez lo consigas, veras que te agrupa por nombre de trabajador y por mes los días que llevan de vacaciones.
Y en la pestaña superior izquierda que te cambia entre datos y diseño, veras un triangulo invertido. Si le das te da opciones de más vistas, una de ellas es la vista SQL.
Ahí le pegas el código que te he pasado, modificando en mi código la palabra Consulta por el nombre de la consulta que has creado el campoi Días con diffecha.
También debes cerciorarte que los nombres de los campos coincidan.
Una vez lo consigas, veras que te agrupa por nombre de trabajador y por mes los días que llevan de vacaciones.
Vale, pero disculpame esto no es lo que quiero, necesito que me diga no el nº de días por mes de vacaciones sino las fechas en sí, ejemplo 1/05 2/05 3/05 ... 05/06 07/06,...
No sé si me explico.
Gracias.
No sé si me explico.
Gracias.
No, esta consulta solo nos va a servir para saber los días de vacaciones que llevan.
Para saber quien esta de vacaciones en un rango especifico de fechas hay que hacer un formulario. En ese formulario ponemos dos textbox independientes. Esos texbox (comprueba inicio y comprueba fin), los usaremos como criterio para otra consulta que nos muestre todos los trabajadores que están de vacaciones entre las fechas puestas en esos textbox.
Cuando hayas hecho el formulario, dime los nombres del formulario y sus dos textbox y te pongo el código de la consulta.
Para saber quien esta de vacaciones en un rango especifico de fechas hay que hacer un formulario. En ese formulario ponemos dos textbox independientes. Esos texbox (comprueba inicio y comprueba fin), los usaremos como criterio para otra consulta que nos muestre todos los trabajadores que están de vacaciones entre las fechas puestas en esos textbox.
Cuando hayas hecho el formulario, dime los nombres del formulario y sus dos textbox y te pongo el código de la consulta.
Muchas gracias por todo, pero no es lo que quiero, me parece excelente las contestaciones que me has dado, y son la leche, pero veo que lo que quiero que sea algo sencillo, se esta empezando a complicar con códigos y cosas de esas. Simplemente quiero una base de datos con dos consultas y un informe pero sin código ni nada, algo sencillito.
Gracias de todas formas.
Gracias de todas formas.
- Compartir respuesta
- Anónimo
ahora mismo