Contadores/autonumericos
Publicado por Joaquín Pascual (48 intervenciones) el 28/01/2007 21:38:43
Hola a todos, un formulario con un subformulario basados en sus respectivas tablas.
TbMonedas--Cód_Moneda-clave principal- numero entero largo
Tbcomplementos--Cód_Moneda-numero entero largo
Tbcomplementos--Cód_Complemento-clave principal-numero entero largo.
como podeis ver las tablas estan relacionadas por Cód_Moneda.
He intentado varias funciones para el contador incluso el autonumerico de access con el mismo resultado, el formulario Monedas funciona bien pero el subformulario Complementos no, me explico, cunado abro el formulario en el de Monedas no aparece ningun numero hasta que no ingreso un registro pero en el de Complementos ya me aparecen 3 registros en blanco, si ingreso un dato en el principal me crea otro que si esta relacionado con lo que ya tengo 4 registros, si en el principal le doy a nuevo registro entonces en Complementos me vuelve a crear 3 más y si ingreso un dato pues otro más, o sea que por cada registro en el principal me crea 4 en el relacionado 3 en blanco y uno relacionado.
he provado entre otros este código de don Emilio.
Option Explicit
Public Function AutoNumerico(strTabla As String, strCampo As String) As Integer
Dim dbs As Database, _
rst As Recordset, _
strMaximo As String
strMaximo = "SELECT Max(" & strCampo & ") as Mayor FROM " & strTabla
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(strMaximo)
If IsNull(rst!Mayor) Then
AutoNumerico = 1
Else
AutoNumerico = rst!Mayor + 1
End If
' cierro el recordset
rst.Close
Set rst = Nothing
Set dbs = Nothing
End Function
Private Sub Form_BeforeInsert(Cancel As Integer)
Cód_Moneda = AutoNumerico("Monedas", "Cód_Moneda")
End Sub
tambien estos dos.
Dim varFacturaNumero as integer
varFacturaNumero = Nz(DMax("[Cód_Moneda]", "Monedas")) + 1
Me.Cód_Moneda.DefaultValue = varFacturaNumero
----------------------------------------------
If Me.NewRecord Then
Me.Cód_Moneda = Nz(DMax("Cód_Moneda", "Monedas")) + 1
End If
Todo ello en los dos formularios, y como ya os digo con igual resultado hata con el autonumerico de access.
Que puede ser, donde tengo el fallo. yo quiero que no se genere ningun numero en el subformulario si no le ingreso ningun dato.
Gracias por vuestro tiempo, Joaquín Pascual
TbMonedas--Cód_Moneda-clave principal- numero entero largo
Tbcomplementos--Cód_Moneda-numero entero largo
Tbcomplementos--Cód_Complemento-clave principal-numero entero largo.
como podeis ver las tablas estan relacionadas por Cód_Moneda.
He intentado varias funciones para el contador incluso el autonumerico de access con el mismo resultado, el formulario Monedas funciona bien pero el subformulario Complementos no, me explico, cunado abro el formulario en el de Monedas no aparece ningun numero hasta que no ingreso un registro pero en el de Complementos ya me aparecen 3 registros en blanco, si ingreso un dato en el principal me crea otro que si esta relacionado con lo que ya tengo 4 registros, si en el principal le doy a nuevo registro entonces en Complementos me vuelve a crear 3 más y si ingreso un dato pues otro más, o sea que por cada registro en el principal me crea 4 en el relacionado 3 en blanco y uno relacionado.
he provado entre otros este código de don Emilio.
Option Explicit
Public Function AutoNumerico(strTabla As String, strCampo As String) As Integer
Dim dbs As Database, _
rst As Recordset, _
strMaximo As String
strMaximo = "SELECT Max(" & strCampo & ") as Mayor FROM " & strTabla
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(strMaximo)
If IsNull(rst!Mayor) Then
AutoNumerico = 1
Else
AutoNumerico = rst!Mayor + 1
End If
' cierro el recordset
rst.Close
Set rst = Nothing
Set dbs = Nothing
End Function
Private Sub Form_BeforeInsert(Cancel As Integer)
Cód_Moneda = AutoNumerico("Monedas", "Cód_Moneda")
End Sub
tambien estos dos.
Dim varFacturaNumero as integer
varFacturaNumero = Nz(DMax("[Cód_Moneda]", "Monedas")) + 1
Me.Cód_Moneda.DefaultValue = varFacturaNumero
----------------------------------------------
If Me.NewRecord Then
Me.Cód_Moneda = Nz(DMax("Cód_Moneda", "Monedas")) + 1
End If
Todo ello en los dos formularios, y como ya os digo con igual resultado hata con el autonumerico de access.
Que puede ser, donde tengo el fallo. yo quiero que no se genere ningun numero en el subformulario si no le ingreso ningun dato.
Gracias por vuestro tiempo, Joaquín Pascual
Valora esta pregunta


0