Guardar campo de formulario

Hola,
Quiero plantear mi primer problema con la base de datos que estoy creando...
Tengo un formulario para recoger las asistencias en clase con el que me he roto la cabeza, pero al final guardo en 31 campos día las asistencias de un alumno, pero para que me sume el tipo de asistencia utilizo unos campos texto que me suman las asistencias después de dividirlos en sumas de 15 datos, porque pasando de 25 me decía que era demasiado... La cuestión es que este campo suma de otros dos campos suma, quiero guardarlo en un campo de la base de datos y copiando respuestas antiguas vuestras llegue hasta aquí...
*****
Private Sub Guardar2_Click()
If Not IsNull(txtTotalAsistencias) And Not IsNull(txtTotalFaltas) And Not IsNull(txtTotalJustificadas) And Not IsNull(txtTotalRetrasos) Then
SQL = "Insert into Asistencias(TotalX,TotalF,TotalJ,TotalR) Values(" & txtTotalAsistencias & "," & txtTotalFaltas & "," & txtTotalJustificadas & "," & txtTotalRetrasos & ");"
CurrentDb.Execute SQL
End If
*****
Pero al pulsar el botón "Guardar" me da un error:
"Error de compilación: No se ha definido la variable" Y no doy con el problema...
Alguien podría ayudarme, por favor...

1 respuesta

Respuesta
1
Yo creo que bdebe ser de esta forma
Private Sub Guardar2_Click()
If Not IsNull(txtTotalAsistencias) And Not IsNull(txtTotalFaltas) And Not IsNull(txtTotalJustificadas) And Not IsNull(txtTotalRetrasos) Then
DoCmd.RunSQL "insert into asistencias(TotalX,TotalF,TotalJ,TotalR) Values(" & txtTotalAsistencias & "," & txtTotalFaltas & "," & txtTotalJustificadas & "," & txtTotalRetrasos & ")"
end if
Si te sigue dando algún error me dices en cual linea es
Jo, que rapido, gracias... Soy novato en todo esto...
A ver..., me lo hace de puta madre... Pero al darle al botón guardar me pregunta que se va a anexar una fila nueva y si le digo que si que acepto, lo que me hace es anexarme esos datos, en los campos correctos, pero en un registro nuevo y no en el registro activo, de la ficha del alumno que tengo abierta... he probado dos veces incluso y no me actualiza los datos, sino que vuelve a crearme otro registro nuevo siempre...
Como podría solucionar esto y que fuera en el registro activo y que a ser posible se pudieran actualizar los campos con los cambios diarios...
Gracias de nuevo
Hagamos algo enviame un ejemplo de lo que tienes y me explicas bien lo que quieres
[email protected]
Ok. Gracias por tu dedicación... Te acabo de enviar un mensaje con un extracto de la base de datos con el formulario problemático y sus anexos y abusando un poco de tu ayuda, te planteo otros problemas... Por si puedes y quieres ayudarme...
Muchas gracias de nuevo por adelantado
Ok amigo ya recibí el ejemplo, en lo que respecta a la segunda pregunta no te puedo ayudar, porque no entiendo en si las funciones del mismo.
En cuanto al primero si quieres es que te actualice los datos debes de indicarme según cual dato los vas a actualizar, te explico
yo por ejemplo si tengo una tabla llamada "alumnos" en la cual tengo los siguientes campos, cod_carnet(numérico), alumno(texto), fecha_nac(fecha/hora)
Yo utilizaría para actualizar el campo cod_carnet, ya que es único para cada alumno, dicho esto ahora dime tu cual es el campo que utilizaras que sea único para cada uno.
Mientras se pueda te seguimos ayudando
Nota: y debes de decirme para que utilizas esa base de datos que de verdad no le vi ni pies ni cabeza je je
A ver... Intento explicarte... La base de datos, es para recoger datos para la documentación que se envía a la Generalitat sobre los cursos de formación ocupacional... Pero, lo que te enviado, imagino que no lo entenderás muy bien, pues es solo una ínfima parte de la base de datos completa, que consta de unas 8 tablas, 11 Formularios y unos 15 o 20 Informes... Pero bueno, ciñéndonos al tema, en esta tabla en concreto estoy recogiendo los datos, por mes/año, porque aunque no lo creas ha sido la que más me ha costado encontrarle una solución factible a todos los documentos que hay que enviar... En esta necesitaba recoger asistencias para hacer tantos por ciento, por tanto, esta tabla, a través del Formulario, recoge el dato de nº de curso de una tabla de cursos y además, recoge el dato alumno de una tabla de alumnos ligada a una de matriculas, pero no me interesa que se rija por el alumno, porque puede darse de baja y posteriormente de alta de nuevo, sino Mes/año, que ligado a alumno, me recoge los datos de asistencias mensuales, para poder reflejarlos en una hoja de asistencias semanales y una mensuales y luego una por curso, que tienen fechas variables, entre 3 meses y 6...
Por tanto (y esperando que mi explicación, que yo tengo clara por estar inmerso en ella, pero quizá no sepa reflejarte tan bien a ti, haya aclarado tus dudas), resumiendo, mi idea es que el registro se rija por mes/año que junto a alumno montare en un informe tipo tabla de access, con casillas de 30 días en una coordenada y alumnos en la otra, para hacer las asistencias mensuales del curso y después poder sacar tantos por ciento... Espero haberme explicado bien y que puedas ayudarme...
Mientras tanto, continuo buscando la solución al hecho de que no me salve la cadena de tipos de días que antes si me salvaba, estoy en ello... Muchas gracias de nuevo por toda tu ayuda y tu interés...
Ah! Y si no es demasiado pedir, aunque imagino que estarás de mi base de datos hasta el gorro y pudieras como contrapartida a la solución que me encuentres reflejarme el caso opuesto, o sea un botón que igual que me guarda me recupera esos datos en la pantalla del formulario (Y esto lo hago con doble interés, por si me ayuda a solucionar también el problema con la otra captura de tipos de día...)
Gracias de nuevo... Y saludos
Acabo de darme cuenta de que mi aclaración quizá te haya dejado igual como mínimo, sino más liado...
A ver en esta tabla me rijo por un capo ID que aparece en la esquina superior iz. del formulario, porque los meses se pueden repetir en cada uno de los alumnos, al igual que tienen que repetir los alumnos a lo largo de los diferentes meses (ese fue todo mi problema sobre como recoger estos datos de asistencias y tuve que crear esta tabla después de romperme mucho la cabeza) porque ya tengo un campo (digamos) NIF de alumno en la tabla alumnos de donde recojo el dato alumno con un campo combo y luego le añado el mes/año, pero se rige por un campo id el primero de la tabla que te envíe y que es la clave principal. Espero con esto haberte dejado más clara mi intención...
Saludos de nuevo y también gracias de nuevo...
Ok te entiendo que lo colocas por mes/año, pero así no podrás actualizar los datos, ya que hay muchos que están en ese mes y ese año, y el código intentara buscar es algo único de cada alumno para posicionarse en ese registro y poderlo actualizar
podría actuzalizarse por alumno, ¿pero qué pasa si hay 2 DOMINGUEZ FERNÁNDEZ?
Espero que me entiendas.
Te recomiendo que si los alumnos tienen algún campo único, sea cedula, numero de carnet, id u otro lo coloque también junto a esa tabla para proceder de allí
Ok. Esta la ID que te decía que es el campo clave, pero si me dices que por este no puede ser, también puedo hacer que vuelque el campo CIC, que es un campo parecido a NIF, desde la tabla de alumnos, pero no lo hice porque este campo se repetiría junto con la repetición del alumno y no sería único, porque si por ej. Dominguez Fdez. Esta 5 veces a lo largo del año en cinco meses consecutivos o no, también. Estaría su CIC, por esto lo cree bajo un campo ID...
¿A ver que piensas tu?
Gracias majo..., de nuevo, por tu prontitud...
Bueno imagino que el Id por ser campo clave es único, osea que si Dominguez esta cinco veces en el año debe aparecer las 5 veces con un Id distinto, si esto es así, entonces se puede actualizar por el Id.
Avisame que estoy conectado
Si, si... Eso es. Esa fue la única solución que encontré a esta maldita recogida de datos diaria, para que no se me fuera en demasiados registros (una media de 150 alumnos por repetidas matriculas) ni en demasiados campos (365 días). Así que has entendido bien, la ID es el que rige, porque fue la única manera de duplicar datos con un dato diferente...
Espero que de esta forma tenga solución...
Gracias otra vez...
If Not IsNull(txtTotalAsistencias) And Not IsNull(txtTotalFaltas) And Not IsNull(txtTotalJustificadas) And Not IsNull(txtTotalRetrasos) Then
ElseIf IsNull(DFirst("id", "asistencias", "id='" & id & "'")) = False Then
If MsgBox("El" & Id & " ya Existe." & Chr(13) & Chr(13) & "¿Desea Actualizar los datos?", 36) = vbYes Then
DoCmd.RunSQL "UPDATE asistencias SET Totalx='" & txtTotalAsistencias & "',TotalF='" & txtTotalFaltas & "'TotalJ='" & txtTotalJustificadas & "',TotalR='" & txtTotalRetrasos & "' WHERE id=" & DFirst("id", "asistencias", "id='" & id & "'")
End If
Else
DoCmd.RunSQL "insert into asistencias(TotalX,TotalF,TotalJ,TotalR) Values(" & txtTotalAsistencias & "," & txtTotalFaltas & "," & txtTotalJustificadas & "," & txtTotalRetrasos & ")"
end if
Debes crear un cuadro de texto en el cual te muestre el id del alumno en el formulario que yo le coloque allí de nombre id, si tu quieres lo cambias pero debes modificar el código
ok eso lo introduces en un botón en el evento al hacer click prueba para ver si te funciona
Lo siento. No me funciona...
En esta ocasión no hace nada... En la primera solución que me enviaste al menos me guardaba, aunque en un registro nuevo, pero en este caso no hace nada, ni tan siquiera me pregunta si quiero actualizar, como parece que tendría que hacer...
La falla debe estar en como colocaste la Id en el formulario, por acá no te puedo ayudar porque no tengo las otras tablas, más sin embargo te enviare un ejemplo, espera un momento
Muchas Gracias...
La Id la tenía colocada ya como en el ejemplo que te envié como campo insertado en el formulario y se llama igual Id, por tanto no se que es lo que falla... Pero espero tu ejemplo... ¿Qué me lo enviarás al mail?
Si te lo enviare al mail pero más tarde, ya que estoy saliendo del trabajo y debo ir a mi casa de allí te lo envío después que lo realice

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas