** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Fecha
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFecha

 Responder Responder Página  12>
Autor
Mensaje
franpin Ver desplegable
Nuevo
Nuevo


Unido: 23/Enero/2020
Localización: Alicante
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Tema: Fecha
    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
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 29/Enero/2020 a las 18:34
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.
Arriba
franpin Ver desplegable
Nuevo
Nuevo


Unido: 23/Enero/2020
Localización: Alicante
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 29/Enero/2020 a las 19:25
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,
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Enlace directo a este mensaje Enviado: 29/Enero/2020 a las 19:41
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
Arriba
franpin Ver desplegable
Nuevo
Nuevo


Unido: 23/Enero/2020
Localización: Alicante
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 09:36
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.





Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 09:45
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
Arriba
franpin Ver desplegable
Nuevo
Nuevo


Unido: 23/Enero/2020
Localización: Alicante
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 10:51
Publicado originalmente por rokoko rokoko escribió:

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

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,



Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 11:49
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




Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 12:01
Un ejemplillo

https://www.dropbox.com/s/48ugjdyvmixv646/EjecutarConsultas.rar?dl=0
Arriba
franpin Ver desplegable
Nuevo
Nuevo


Unido: 23/Enero/2020
Localización: Alicante
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 12:10
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,

Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 13:40
[Formularios]![frmFACTURA_Subformulario]
Entiendo que es un subformulario, por lo tanto te faltaria hacer referencia al formulario principal
[Formularios]![NombreFormularioPrincipal]![frmFACTURA_Subformulario].......
Arriba
franpin Ver desplegable
Nuevo
Nuevo


Unido: 23/Enero/2020
Localización: Alicante
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 14:09
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,

Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 14:34
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
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 17:43
Publicado originalmente por franpin franpin escribió:

DoCmd.GoToRecord , , acNewRec


Publicado originalmente por franpin franpin escribió:

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.

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
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT * FROM Facturas")

If Me!chkPrestacion1 Then
  rst.AddNew
  rst!NumFactura = Me!txtNumFactura
  rst!Cliente = Me!cboCliente
  rst!Prestacion = "Nombre de prestación 1"
  rst!Cantidad = 1
  rst.Update
End If

If Me!chkPrestacion2 Then
  rst.AddNew
  rst!NumFactura = Me!txtNumFactura
  rst!Cliente = Me!cboCliente
  rst!Prestacion = "Nombre de prestación 2"
  rst!Cantidad = 1
  rst.Update
End If
' Y así con todas las prestaciones.

rst.Close
Set rst = Nothing

Después de ese salvado, limpias los controles y listo

Escrito al vuelo. Los experimentos con gaseosa
Xavi, un minyó de Terrassa

Mi web
Arriba
franpin Ver desplegable
Nuevo
Nuevo


Unido: 23/Enero/2020
Localización: Alicante
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 03/Febrero/2020 a las 14:34
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,

Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable