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

Contador +1 filtrado

 Responder Responder
Autor
Mensaje
Vangiogh Ver desplegable
Habitual
Habitual
Avatar

Unido: 24/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 199
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Vangiogh Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Contador +1 filtrado
    Enviado: 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.

Arriba
jilo Ver desplegable
Colaborador
Colaborador


Unido: 19/Diciembre/2004
Localización: TAFALLA
Estado: Sin conexión
Puntos: 959
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jilo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Septiembre/2021 a las 09:33
prueba así :
TuNumeroDeLaNuevaFactura = DMax( "tblFactus_Emisores.NFactura_Dr ","tblFactus_Emisores") + 1
Espero te sirva !!!!!!
Iñaki
Arriba
Vangiogh Ver desplegable
Habitual
Habitual
Avatar

Unido: 24/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 199
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Vangiogh Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.

Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita rokoko Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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

Arriba
ximo Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 03/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 2085
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita ximo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14734
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable