Access - Problemas con consulta de datos anexados

 
Vista:
sin imagen de perfil

Problemas con consulta de datos anexados

Publicado por Jon (11 intervenciones) el 09/10/2016 22:05:39
Tengo problemas para diseñar una consulta de datos anexados. La consulta debe tomar tres datos de un formulario (Formulario Ventas-Ingresos), Año_Factura, SerieFactura y N_Factura, y otros campos debe calcularlos.

El problema lo tengo al tomar los datos del formulario, y creo que es porque no toma correctamente el tipo de dato que es. Estos datos los toma de tres controles independientes.

Al previsualizar la consulta en el campo Año_Factura (debería tomar el valor 2016) pone 340528115869096,54 €, en el campo SerieFactura (debería tomar el valor 01) pone 48) y en el campo N_Factura (debería poner 5) pone un símbolo raro.

Estos valores los quiero anexar a una tabla denominada Vencimientos en los campos Año_Factura, Serie_Factura (ambos tipo texto), y en Id_Factura (tipo número).

¿Alguna sugerencia?.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problemas con consulta de datos anexados

Publicado por Neckkito (1157 intervenciones) el 10/10/2016 11:59:30
Hola!

Coge el nombre de tus tres textbox (Propiedades -> Otras -> Nombre) y en tu consulta filtra poniendo, bajo cada campo correspondiente:

Forms!NombreForm.NombreControl.value

Mi recomendación sería que esa consulta de datos anexados primero la convirtieras en una consulta de selección y ver qué resultados te da, y cuando te los dé bien ya la convertirás en consulta de anexión.

Saludos,

Neckkito
http://bit.ly/neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con consulta de datos anexados

Publicado por Jon (11 intervenciones) el 12/10/2016 22:44:56
He ido haciendo modificaciones y en parte lo tengo resuelto, salvo en la parte de la función DateAdd. El código que he puesto es el siguiente:

DoCmd.RunSQL "INSERT INTO Vencimientos_Factura_Emitidas (Fecha_Vencimiento, Importe_Vencimiento, Año_Factura, Serie_Factura, Id_Factura ) SELECT DateAdd(m,[plazo],[Forms]![Formulario Ventas-Ingresos]![Fecha_Factura]) AS Fecha_Vencimiento, [Forms]![Formulario Ventas-Ingresos]![Total_Factura]*[Cuantia] AS Importe_Vencimiento, [Forms]![Formulario Ventas-Ingresos]![Año_Factura] AS Año, [Forms]![Formulario Ventas-Ingresos]![SerieFactura] AS Serie, N_Factura AS Id_Factura FROM Vencimientos_Forma_Pago WHERE (((Vencimientos_Forma_Pago.Id_Forma_Pago)=[Forms]![Formulario Ventas-Ingresos]![Forma de pago]));"

Como comentaba, todo funciona bien, excepto el tramo:

DateAdd(m,[plazo],[Forms]![Formulario Ventas-Ingresos]![Fecha_Factura])

Según lo que he leído, debo poner "m" (entre comillas), pero me indica "error de compilación, se esperaba: fin de la instrucción"

Si lo pongo con comillas simples 'm', no me funciona.

Y si lo pongo sin comillas, como lo he puesto, me sale un cuadro de texto pidiéndome el valor "m", le respondo m y todo funciona bien. Por eso se que el resto es correcto...

He probado a crear una variable string Mi_Plazo_Pago y ponerlo en lugar de "m",

Dim Mi_Plazo_Pago as string

Mi_Plazo_PAgo="m"

DateAdd('Mi_Plazo_Pago',[plazo],[Forms]![Formulario Ventas-Ingresos]![Fecha_Factura])

pero sigo igual, o no me lo calcula o si le quito las comillas me pide el valor y entonces si que funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problemas con consulta de datos anexados

Publicado por Neckkito (1157 intervenciones) el 13/10/2016 08:40:13
Tu SQL no tiene mucho sentido para mí. A ver si entiendo lo que estás haciendo:

En tu formulario tienes UN registro con unos datos sobre una factura, y lo que quieres es insertar, en otra tabla, UN registro con los datos correspondientes al vencimiento de la factura que tienes en pantalla. ¿Me equivoco?

Si me equivoco, por favor indícame el proceso que quieres realizar.

Saludos.

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con consulta de datos anexados

Publicado por Jon (11 intervenciones) el 13/10/2016 09:26:40
Para que me entiendas, en el formulario Formulario Ventas-Ingresos, elijo en un combinado independiente la serie de factura. En otro el cliente y en otro introduzco la fecha de factura. Una vez metidos estos datos, me calcula el año factura y el número que corresponde a la factura. En un subformulario me muestra todos los albaranes pendientes de facturar para es cliente. Selecciono los que quiero facturar y me calcula el total factura.
A continuación lo que quiero es poder elegir un tipo de vencimiento, por ejemplo transferencia a 0, 30 y 60 días lo he hecho poniendo un combinado independiente con los tipos de vencimiento. Estos datos los debe meter en una tabla de vencimiento con el año, serie y número factura como enlace a la tabla facturas emitidas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problemas con consulta de datos anexados

Publicado por Neckkito (1157 intervenciones) el 13/10/2016 09:33:37
¿Y el campo [plazo] de dónde te sale? ¿Es un control del formulario?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con consulta de datos anexados

Publicado por Jon (11 intervenciones) el 13/10/2016 10:28:21
El valor [plazo] y el valor [cuantia] no lo toma del formulario, sino de la tabla Vencimientos_Forma_Pago, que además puede tomar varios valores. Una misma factura puede dividirse en uno, dos o tres vencimientos...

En esta tabla he definido varios vencimientos, por ejemplo:

Transferencia 0 días, Plazo=0, cuantía 100%

Transferencia 0, 30 días, Plazo=0, cuantía 50%
Plazo=1, cuantía 50% (Plazo en meses)

Transferencia 0, 30, 60 días, Plazo=0, cuantía 33,34%
Plazo=1, cuantía 33,33%
Plazo=2, cuantía 33,33%

Y así sucesivamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problemas con consulta de datos anexados

Publicado por Neckkito (1157 intervenciones) el 13/10/2016 11:22:17
Ufff... Es más complejo de lo que pensaba, y es difícil "verlo" sin tenerlo delante. Además, tras lo que me dices mi idea de que era un solo registro queda descartada.

Si me comentas que la SQL te funciona salvo por el dateadd(), las soluciones son dos:

La primera, poner el periodo entre comillas simples. Es decir:

DoCmd.RunSQL "INSERT INTO Vencimientos_Factura_Emitidas (Fecha_Vencimiento, Importe_Vencimiento, Año_Factura, Serie_Factura, Id_Factura ) SELECT DateAdd('m',[plazo],[Forms]![Formulario Ventas-Ingresos]![Fecha_Factura]) AS Fecha_Vencimiento, [Forms]![Formulario Ventas-Ingresos]![Total_Factura]*[Cuantia] AS Importe_Vencimiento, [Forms]![Formulario Ventas-Ingresos]![Año_Factura] AS Año, [Forms]![Formulario Ventas-Ingresos]![SerieFactura] AS Serie, N_Factura AS Id_Factura FROM Vencimientos_Forma_Pago WHERE (((Vencimientos_Forma_Pago.Id_Forma_Pago)=[Forms]![Formulario Ventas-Ingresos]![Forma de pago]));"

Si así no te funciona pasamos a la segunda. Intenta con esta otra sintaxis:

DoCmd.RunSQL "INSERT INTO Vencimientos_Factura_Emitidas (Fecha_Vencimiento, Importe_Vencimiento, Año_Factura, Serie_Factura, Id_Factura ) SELECT DateAdd(" & """" & "m" & """" & ",[plazo],[Forms]![Formulario Ventas-Ingresos]![Fecha_Factura]) AS Fecha_Vencimiento, [Forms]![Formulario Ventas-Ingresos]![Total_Factura]*[Cuantia] AS Importe_Vencimiento, [Forms]![Formulario Ventas-Ingresos]![Año_Factura] AS Año, [Forms]![Formulario Ventas-Ingresos]![SerieFactura] AS Serie, N_Factura AS Id_Factura FROM Vencimientos_Forma_Pago WHERE (((Vencimientos_Forma_Pago.Id_Forma_Pago)=[Forms]![Formulario Ventas-Ingresos]![Forma de pago]));"

A ver si hay suerte. Si no ya tendría que verlo in situ.

Ya me dirás

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con consulta de datos anexados

Publicado por Jon (11 intervenciones) el 13/10/2016 11:35:48
La opción de las comillas simples, 'm', ya la he probado y me deja el campo Fecha_Vencimiento en blanco, no lo calcula. Por eso probé poner m sin comillas, y lo que me pasaba era que me reconocía la m como una constante y me solicitaba su valor, con poner m en el cuadro de mensaje me lo resuelve de forma correcta. Por eso te comentaba que funciona todo bien, excepto ese cacho.

Probaré la segunda opción, y si no me da resultado se me ha ocurrido hacer una trampa: Voy a poner un cuadro de texto invisible en el formulario con el valor m y decirle que lo tome del formulario a ver si así va, ya que los datos que toma del formulario los toma bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con consulta de datos anexados

Publicado por Jon (11 intervenciones) el 15/10/2016 11:02:48
Curiosamente, lo que ayer no funcionaba, hoy funciona. Me he vuelto loco, te he vuelto loco a ti, y resulta que ahora funciona con 'm'.

Muchísimas gracias por todo, y siento haberte vuelto loco.

Una consulta nueva, ¿hay alguna forma de quitar el mensaje de que se van a anexar los registros nuevos, desde Visual Basic?. He leído que desde herramientas de Access se puede hacer pero supongo que quitarás los mensaje en todos los casos, y me gustaría saber si se puede quitar un0 a uno, para poder permitir que unos salgan y otros no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problemas con consulta de datos anexados

Publicado por Neckkito (1157 intervenciones) el 15/10/2016 11:18:00
docmd.setwarnings false
docmd.runsql ...
docmd.setwarnings true


Es MUY importante que vuelvas a fijar en true el aviso de los mensajes, dado que si los desactivas (con false) no solo los desactivas para esas líneas de código que vas a ejecutar, sino que los desactivas en toda la aplicación. Y si no recibes mensajes de advertencia en otras acciones de la bd y tienes errores te vas a volver loco buscando de donde sale el error.

Y, en caso de duda, abres la ventana inmediato en el VBE (CTRL+G) y escribes ahí directamente: docmd.setwarnings true

y así los vuelves a activar.

Saludos.

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Problemas con consulta de datos anexados

Publicado por Jon (11 intervenciones) el 15/10/2016 11:49:47
Gracias, un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar