Imprimir página | Cerrar ventana

Contador +1 filtrado

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86108
Fecha de impresión: 29/Marzo/2024 a las 15:09


Tema: Contador +1 filtrado
Publicado por: Vangiogh
Asunto: Contador +1 filtrado
Fecha de publicación: 12/Septiembre/2021 a las 01:27
Hola buenas noches,
Tengo una base de datos con las siguientes tablas:
tblFactus_Cabecera => donde se almacenan los datos de las nuevas facturas
     campos: ID_Factura; NFactura; Emisor_Nom; Emisor_ID, ...
tblFactus_Emisores =>
     campos: Id_Emisor; NFactura_Dr, ...

He montado un formulario llamado frmFactus_INSERT para generar facturas cuando selecciono el Emisor_Nom que es un cuadro combinado, rellena automáticamente el Emisor_ID. Hasta aquí todo correcto.

Me gustaría que según el ID del emisor "Emisor_ID" del formulario, al pulsar sobre un command buton se incrementase en +1 el número tblFactus_Emisores!NFactura_Dr
Entiendo que eso debería especificarlo en la línea roja del siguiente módulo.
Creo que la línea escrita en SQL sería... (pero no se transformarlo en una línea como la línea roja del módulo)
UPDATE tblFactus_Emisores SET tblFactus_Emisores.NFactura_Dr = "NFactura_Dr"+1
WHERE (((tblFactus_Emisores.Id_Emisor) Like [Formularios]![frmFactus_Cabecera_INSERT]![Emisor_ID]));

Por otro lado tengo el siguiente módulo:
Function NextNFactura(TIPO As String)

On Error GoTo NextNFactura_err

Dim Funciones As DAO.Database
Dim VAR1 As DAO.Recordset
Dim siguiente
Dim sql

Set Funciones = DBEngine.OpenDatabase(CurrentDb.Name)

Set VAR1 = Funciones.OpenRecordset("select * from " & TIPO)

NextNFactura = VAR1!NFactura_Dr
siguiente = VAR1!NFactura_Dr + 1

sql = "update " & TIPO & " set NFactura_Dr=" & siguiente

Funciones.Execute (sql)

NextNFactura = siguiente

Exit Function

NextNFactura_err:
MsgBox "error" & Err & ":" & Error$, , ""
End Function


Gracias y disculpad el rollo.




Respuestas:
Publicado por: jilo
Fecha de publicación: 12/Septiembre/2021 a las 09:33
prueba así :
TuNumeroDeLaNuevaFactura = DMax( "tblFactus_Emisores.NFactura_Dr ","tblFactus_Emisores") + 1


-------------
Espero te sirva !!!!!!
Iñaki


Publicado por: Vangiogh
Fecha de publicación: 12/Septiembre/2021 a las 09:47
Hola Iñaki,
Con la referencia que tu me pones, imagino que lo que cogerá es el número más alto y le sumará 1. No es eso lo que busco. Lo que busco es que dentro de esa tabla además de existir la columna NFactura, existen otros campos como por ejemplo Nombre. Quedaria algo así:
ID_NFactura             Nombre             NFactura
1                                Juan                      10
2                                José                       25
3                                Manolo                   1
4                                etc.                        0
Lo que quiero es incrementar en +1 el campo NFactura según el ID seleccionado en el formulario de crear facturas.

Gracias.



Publicado por: rokoko
Fecha de publicación: 12/Septiembre/2021 a las 18:18
A lo que ha dicho Iñaki, deberias aplicarle el criterio ID _NFactura, aunque creo que los datos no son los correctos

https://docs.microsoft.com/es-es/office/vba/api/access.application.dmax

O algo asi

TuNumeroDeLaNuevaFactura = DMax( "tblFactus_Emisores","NFactura","Aqui el criterio ID_NFactura") + 1



Publicado por: ximo
Fecha de publicación: 13/Septiembre/2021 a las 10:25
Hola,
Con permiso de rokoko, tú lo que quieres es saber que número de factura que le corresponde a un emisor en concreto es lo que yo he entendido.
DMax( "tblFactus_Emisores","NFactura","Aqui el criterio Nombre"= ????) + 1



Saludos, ximo



-------------
La incansable busqueda de información abre nuestras mentes

Saludos desde Burriana


Publicado por: xavi
Fecha de publicación: 13/Septiembre/2021 a las 13:13
Hola,

Yo creo que es tan "simple" como contar la cantidad de registros del EMISOR seleccionado (Emisor_ID) y añadirle 1 para obtener el numero de factura que corresponde. 

Me!NuevoNumeroFactura = Nz(DMax("NFactura", "tblFactus_Emisores", "Id_Emisor = " & Me!Emisor_ID), 0) +1

¿Te vale?

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web



Imprimir página | Cerrar ventana