Cómo hacer un autonumérico que dependa de otro autonumérico (ambos hechos con función dmx)?

26/09/2012 - 01:23 por tajin23 | Informe spam
Tengo esta función:
Private Sub Form_Current()
If Me.NewRecord Then
Me.[Id_trabajo].DefaultValue = Nz(DMax("id_trabajo", "tbl_trabajos"), 0) + 1
End If
End Sub

necesito que por ejemplo:
id1,tbl1 => id,tbl2
1 1
1 2
1 3
2 1
2 2
3 1
3 2
3 3
3 4
...
Ambos deben estar en tablas distintas pero que el segundo "vea" el primer autonumérico y si cambia el primero, el segundo reinicie su contador en 1 y así sucesivamente.

Se puede esto?

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
26/09/2012 - 09:59 | Informe spam
Hola
Podrías crear una tabla en la cual llevaras el control de los contadores. En lugar de buscar el último valor, vas a buscarlo a esa tabla y le sumas uno. Sí lo reinicias, al otro contador le sumas uno.
Espero te sirva.

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#2 tajin23
26/09/2012 - 16:23 | Informe spam
El miércoles, 26 de septiembre de 2012 02:59:25 UTC-5, José Mª Fueyo escribió:
Hola

Podrías crear una tabla en la cual llevaras el control de los contadores. En lugar de buscar el último valor, vas a buscarlo a esa tabla y le sumas uno. Sí lo reinicias, al otro contador le sumas uno.

Espero te sirva.



Salu2


José Mª Fueyo

[MS MVP Access]



Esa es la idea, pero en código cómo se hace?
Respuesta Responder a este mensaje
#3 José Mª Fueyo
26/09/2012 - 17:37 | Informe spam
Hola
Crea una tabla llamada tblContadores, con dos campos: Contador1 y Contador2, ambos de tipo numérico (largo).
Pega éste código en un módulo

<pego>
Public Function ObtieneContadores(bReiniciar As Boolean) As String
Dim sIntermedio As String
Dim db As DAO.Database, rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("tblContadores", dbOpenTable)
If bReiniciar = True Then
rs.Edit
rs.Fields("Contador1") = rs.Fields("Contador1") + 1
rs.Fields("Contador2") = 1
rs.Update
sIntermedio = CStr(rs.Fields("Contador1"))
sIntermedio = sIntermedio & "|1"
Else
rs.Edit
rs.Fields("Contador2") = rs.Fields("Contador2") + 1
rs.Update
sIntermedio = CStr(rs.Fields("Contador1"))
sIntermedio = sIntermedio & "|" & CStr(rs.Fields("Contador2"))
End If
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
ObtieneContadores = sIntermedio
End Function
</pego>

El parámetro indica sí el campo Contador2 se reinicia o no. La función te devuelve una cadena con los valores de los contadores separador por un "|".
Espero te sirva.

Salu2
José Mª Fueyo
[MS MVP Access]
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida