|
Responder ![]() |
Página 12> |
Autor | |||
franpin ![]() Nuevo ![]() Unido: 23/Enero/2020 Localización: Alicante Estado: Sin conexión Puntos: 21 |
![]() Enviado: 29/Enero/2020 a las 15:01 |
||
Buenas tardes,
el otro día puse un mensaje sobre un tema de Casilla de verificación (está cerrado), el cual pude subsanar. Pero ahora tengo el siguiente problema que también va relacionado: He creado un Formulario con los datos del cliente y un subformulario con las Casillas de Verificación. El tema es el siguiente: Yo busco un cliente en el Formulario y quiero que al activar las Casillas de Verificación, se grabe en la Tabla Facturación el número de cliente y las tareas realizadas a ese cliente. En el subformulario además tengo una Fecha inicio (ese campo existe en la Tabla Facturación) y un botón de Aceptar, el cual he programado para que cuando le dé a aceptar me incluya en la Tabla Facturación todas las Casillas de Verificación que tenga clickeadas. El problema es que cuando le doy a Aceptar: - me crea las líneas de los campos de verificación (solamente) y otra línea con el número de cliente y la Fecha. Pero yo quiero que en cada línea de verificación también me incluya la Fecha y el cliente. Alguien me puede ayudar??? Gracias
|
|||
![]() |
|||
mounir ![]() Colaborador ![]() Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6452 |
![]() |
||
Hola!
A lo mejor lo que necesita es actualizar los campos y no insertar nuevos registros. Mas o menos así:- CurrentDb.Execute "UPDATE factura SET PRESTACION ='AM0411', UNIDADES = 2" Falta poner los criterios con Where si precisa. |
|||
Un Saludo.
|
|||
![]() |
|||
franpin ![]() Nuevo ![]() Unido: 23/Enero/2020 Localización: Alicante Estado: Sin conexión Puntos: 21 |
![]() |
||
Buenas tardes y gracias por la respuesta, pero no entiendo lo de actualizar los campos. Cuando yo le pongo una fecha y le marco las prestaciones realizadas, me debe crear nuevos campos, no??? De manera que pueda saber en cada fecha qué se le ha realizado. Si actualizo me machacará los anteriores, no??? Un saludo,
|
|||
![]() |
|||
emiliove ![]() Administrador ![]() Unido: 16/Junio/2009 Localización: Mexico Estado: en línea Puntos: 5647 |
![]() |
||
Creo que nadie te a entendido entonces, Puedes volver a explicarlo, pero bien puedes agregar una consulta de inserción por cada casilla de verificación que tengas algo como If Verifica1= True then 'Executas el insert intro end if If Verifica2= True then 'Executas el insert intro end if Etc... PD: El único que sabe con certeza lo que quiere eres tu, nosotros solo interpretamos tus palabras. Saludos. Editado por emiliove - 29/Enero/2020 a las 19:44 |
|||
![]() |
|||
franpin ![]() Nuevo ![]() Unido: 23/Enero/2020 Localización: Alicante Estado: Sin conexión Puntos: 21 |
![]() |
||
Buenos días,
voy a intentar explicarme mejor, perdón si no he sabido hacerlo antes. Tengo 3 tablas: - Clientes (con los datos de los clientes). - Tarifas (con los precios de las mercancías). - Facturas (donde hay que insertar los datos), que incluye los siguientes campos: . Código Paciente . Fecha . Prestación . Unidades Tengo un formulario para poder crear clientes y buscarlos para poder modificarlos. Tengo un subformulario en el cual he insertado los siguientes campos: - Fecha (donde pongo la fecha de la actividad) (es un campo de la tabla Facturas). - He insertado una serie de campos con las prestaciones que realizo, con casillas de verificación, para que las que estén clickeadas se inserten en la Tabla Facturas en el campo Prestación. - He insertado un botón Aceptar para que una vez lo pulse se graben las casillas de verificación. Esto es lo que tengo programado: Private Sub ACEPTAR_DATOS_FORM_PRUEBA_Click() On Error GoTo Err_ACEPTAR_DATOS_FORM_PRUEBA_Click DoCmd.GoToRecord , , acNewRec If Verificación22 = -1 Then CurrentDb.Execute "insert into factura (PRESTACION, UNIDADES) values ('AM0411', 1)" End If If Verificación27 = -1 Then CurrentDb.Execute "insert into factura (PRESTACION, UNIDADES) values ('AM0001', 1)" End If (y así sucesivamente todas las casillas de verificación) ........... Exit_ACEPTAR_DATOS_FORM_PRUEBA_Click: Exit Sub Err_ACEPTAR_DATOS_FORM_PRUEBA_Click: MsgBox Err.Description Resume Exit_ACEPTAR_DATOS_FORM_PRUEBA_Click End Sub Ahora viene el problema. Cuando le doy al botón Aceptar, me crea en la Tabla Factura, tantas líneas como casillas de verificación tengo clickeadas y además me crea una línea adicional con el número de cliente que tengo en el Formulario y la Fecha que yo he puesto en el Subformulario. Y yo lo que quiero es que en cada línea creada en la Tabla Factura de las casillas de verificación clickeadas también se incluya ese número de cliente y esa fecha, para que pueda saber qué se le ha hecho a cada cliente y en qué fecha. Espero haberme explicado mejor. Muchas gracias por vuestra ayuda. |
|||
![]() |
|||
rokoko ![]() Colaborador ![]() ![]() Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3053 |
![]() |
||
Pues o modificas la consultas Insert para que incluian esos datos o creas otra consulta con lo que quieres y la ejecutas en las casillas......
Yo suelo crear las consultas en vista diseño y cuando hacen lo que quiero las copio de vista SQl. Saludos
|
|||
![]() |
|||
franpin ![]() Nuevo ![]() Unido: 23/Enero/2020 Localización: Alicante Estado: Sin conexión Puntos: 21 |
![]() |
||
Muchas gracias rokoko, perdona, pero no te entiendo muy bien, la verdad es que soy un principiante en todo esto. Me podrías decir como incluyo esos dos datos en la consulta Insert, porque he intentado varias cosas y no lo he conseguido. Un saludo, |
|||
![]() |
|||
rokoko ![]() Colaborador ![]() ![]() Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3053 |
![]() |
||
Por ejemplo esta consulta de datos anexados
INSERT INTO Facturas ( Fecha, NumeroCliente, Prestaciones, Unidades ) SELECT [Formularios]![frmFacturas]![Fecha] AS Expr1, [Formularios]![frmFacturas]![NumeroCliente] AS Expr2, "AM0411" AS Expr3, 1 AS Expr4; Lo que esta en negrita esta pillando los datos de un formulario, en este caso de FrmFacturas y de su campo correspondiente. INSERT INTO Facturas ( Fecha, NumeroCliente, Prestaciones, Unidades ) SELECT Date() AS Expr1, [Formularios]![frmFacturas]![NumeroCliente] AS Expr2, "AM0411" AS Expr3, 1 AS Expr4; En esta otra pilla la fecha en la que ejecutas la consulta Yo hago todas las consultas en vista diseño y de hay saco su SQL en vista SQL Saludos |
|||
![]() |
|||
rokoko ![]() Colaborador ![]() ![]() Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3053 |
![]() |
||
Un ejemplillo
https://www.dropbox.com/s/48ugjdyvmixv646/EjecutarConsultas.rar?dl=0
|
|||
![]() |
|||
franpin ![]() Nuevo ![]() Unido: 23/Enero/2020 Localización: Alicante Estado: Sin conexión Puntos: 21 |
![]() |
||
Muchas gracias,
he puesto la primera instrucción, que me quedaría tal que así: Private Sub ACEPTAR_DATOS_FORM_PRUEBA_Click() On Error GoTo Err_ACEPTAR_DATOS_FORM_PRUEBA_Click DoCmd.GoToRecord , , acNewRec If Verificación22 = -1 Then CurrentDb.Execute "INSERT INTO Facturas ( FINI, CodiPaciente, Prestaciones, Unidades )" SELECT [Formularios]![frmFACTURA_Subformulario]![Texto100] AS Expr1, [Formularios]![frmFactura]![CIP] AS Expr2, "AM0411" AS Expr3, 1 AS Expr4;" End If y me da el siguiente error: Error de compilación: Se esperaba: Case y se me subraya la palabra [Formularios] a continuación de SELECT. Un saludo, |
|||
![]() |
|||
rokoko ![]() Colaborador ![]() ![]() Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3053 |
![]() |
||
[Formularios]![frmFACTURA_Subformulario]
Entiendo que es un subformulario, por lo tanto te faltaria hacer referencia al formulario principal [Formularios]![NombreFormularioPrincipal]![frmFACTURA_Subformulario]....... |
|||
![]() |
|||
franpin ![]() Nuevo ![]() Unido: 23/Enero/2020 Localización: Alicante Estado: Sin conexión Puntos: 21 |
![]() |
||
Tienes razón, se me había olvidado. Esto es lo que tengo ahora:
Private Sub ACEPTAR_DATOS_FORM_PRUEBA_Click() On Error GoTo Err_ACEPTAR_DATOS_FORM_PRUEBA_Click DoCmd.GoToRecord , , acNewRec If Verificación22 = -1 Then CurrentDb.Execute "INSERT INTO Factura ( FINI, CodiCliente, Prestaciones, Unidades )SELECT [Formularios]![FrmClientes]![frmFACTURA Subformulario]![FINI] AS Expr1, [Formularios]![frmClientes]![CIP] AS Expr2, 'AM0411' AS Expr3, 1 AS Expr4;" Me.Requery End If Me sale el siguiente error: Pocos parámetros. Se esperaba 2 Otra cosa, la instrucción "Me.Requery", me has puesto en el ejemplo que "Actualiza datos de formulario", pero no tengo claro para qué me sirve aquí. No se supone que al darle al botón Aceptar, ya me Actualiza los datos en la Tabla Factura??? Muchas gracias, |
|||
![]() |
|||
rokoko ![]() Colaborador ![]() ![]() Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3053 |
![]() |
||
Eso es que no pilla 2 dato bien, hazte la consulta normal, como la que te he puesto en el ejemplo(consulta1) y cuando veas que funcione, ejecutala de una de las dos formas del ejemplo.
Respecto al me.requery eso es para que actualice los datos del formulario, en la tabla se meten igualmente con o si requery. Editado por rokoko - 30/Enero/2020 a las 14:35 |
|||
![]() |
|||
xavi ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14543 |
![]() |
||
Tiene toda la pinta de que el subformulario está basado en la tabla Facturas. Por lo poco que he entendido (corrígeme si me equivoco): necesitas poder seleccionar un cliente, indicar una fecha, marcar las prestaciones realizadas y, mediante un botón, salvar tantos registros como prestaciones marcadas hubiera en una tabla de facturas. Eso lo soluciono yo con un formulario sin origen del registro, con un cuadro combinado dónde selecciono un cliente de la lista, un cuadro de texto dónde poner el numero de factura (o calcularlo), un cuadro de texto para la fecha y tantas casillas de verificación como prestaciones. Todos los campos independientes (obviamente al no tener origen del registro) Un botón Aceptar que insertara los registros en la tabla facturas. Y la inserción la haría mediante un recordset para ahorrar tiempo y recursos. Nota: cambia los nombres de los controles porque Verificación22 a mi no me aporta nada. Por lo menos que sea un poco más descriptivo: Prestacion1, por ejemplo (sin espacios ni caracteres especiales, ni acentos, etc). Y en este caso, al tratarse de controles, le antepondria un prefijo para saber el tipo de control (eso ya es manía mia) En el botón que salva los datos
Después de ese salvado, limpias los controles y listo Escrito al vuelo. Los experimentos con gaseosa |
|||
![]() |
|||
franpin ![]() Nuevo ![]() Unido: 23/Enero/2020 Localización: Alicante Estado: Sin conexión Puntos: 21 |
![]() |
||
Buenas tardes,
muchas gracias Rokoko y Xavi. En cuanto a hacer primero la consulta, yo también lo suelo hacer así, pero en este caso no he sabido porque no sabía como hacer la consulta con la casilla de verificación. Entonces me he tirado hacia lo que decía Xavi, y me ha servido perfectamente. En cuanto a lo que dices lo de "limpias los controles", a qué te refieres??? a que cuando le dé al botón Aceptar, me deje el Formulario en blanco??? porque es lo que estoy intentando ahora. Muchas gracias, |
|||
![]() |
Responder ![]() |
Página 12> |
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |