Access - Crear registro con último valor + 1

 
Vista:

Crear registro con último valor + 1

Publicado por Char3 (87 intervenciones) el 29/09/2004 16:04:14
Qual es la forma más sencilla de conseguir que al darle a "Nuevo registro", automáticamente en el campo que yo quiera se le sume el valor del último registro + 1 ? Teniendo en cuenta que el campo no es autonumérico!
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

RE:Crear registro con último valor + 1

Publicado por Victoria (1530 intervenciones) el 29/09/2004 17:05:45
Busca en esta web, hemos contestado ya varias veces y con varias formas como hacer eso
Victoria
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

RE:Crear registro con último valor + 1

Publicado por Char3 (87 intervenciones) el 29/09/2004 17:15:32
Ok grácias.
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

RE:Crear registro con último valor + 1

Publicado por David Gil (24 intervenciones) el 30/09/2004 14:54:49
Prueba con estas funciones:
*La primera sirve para saber si al estar la aplicacion en red ha habido otro aceso y actualiza al ultimo numero
*La segunda actualiza al ultimo numero.
*Las funciones son genericas, les pasa el formulario, el control, la tabla, el campo, la fecha, y el formato del numero y ella hace el resto

Function ActualizarAlGuardar(frmTemp As Access.Form, strControl As String, strTabla As String, strCampo As String, Optional strCampoFecha As String, Optional strFormato As String)
Dim db As DAO.Database
Dim rstTemp As DAO.Recordset

If IsMissing(strFormato) Then
strFormato = "000000"
End If
If frmTemp.NewRecord Then
Set db = CurrentDb
If IsMissing(strCampoFecha) Or strCampoFecha = "" Or IsNull(strCampoFecha) Then
Set rstTemp = db.OpenRecordset("SELECT Max(" & strTabla & "." & strCampo & ") AS MaxDesNumero FROM " & strTabla & ";")
Else
Set rstTemp = db.OpenRecordset("SELECT Max(" & strTabla & "." & strCampo & ") AS MaxDesNumero, Year(" & strCampoFecha & ") AS Año FROM " & strTabla & " GROUP BY Year(" & strCampoFecha & ") HAVING (((Year(" & strCampoFecha & "))=Year(Date())));")
End If
If Right(frmTemp.Controls(strControl), 1) <> "1" Or rstTemp.RecordCount <> 0 Then
If Not IsNull(rstTemp![MaxDesNumero]) Then
If CDbl(frmTemp.Controls(strControl)) <> CDbl(rstTemp![MaxDesNumero]) + 1 Then
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

RE:Crear registro con último valor + 1

Publicado por Char3 (87 intervenciones) el 30/09/2004 15:03:15
Flata un trozo de codigo! ;P

Me lo puedes poner? GRÁCIASSSS!
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

RE:Crear registro con último valor + 1

Publicado por David Gil (24 intervenciones) el 30/09/2004 17:41:09
El resto (I) : Haz una interseccion con los trozos

If Right(frmTemp.Controls(strControl), 1) <> "1" Or rstTemp.RecordCount <> 0 Then
If Not IsNull(rstTemp![MaxDesNumero]) Then
If CDbl(frmTemp.Controls(strControl)) <> CDbl(rstTemp![MaxDesNumero]) + 1 Then
frmTemp.Controls(strControl) = Format(CDbl(rstTemp![MaxDesNumero] + 1), strFormato)
End If
End If
End If
rstTemp.Close
db.Close
End If
End Function

Function AsignarNumero(frmTemp As Access.Form, strControl As String, strTabla As String, strCampo As String, Optional strCampoFecha As String, Optional strFormato As String)
Dim db As DAO.Database
Dim rstTemp As DAO.Recordset
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

RE:Crear registro con último valor + 1

Publicado por David Gil (24 intervenciones) el 30/09/2004 17:42:55
El resto (I) : Haz una interseccion con los trozos

Dim db As DAO.Database
Dim rstTemp As DAO.Recordset
If IsMissing(strFormato) Then
strFormato = "000000"
End If
If frmTemp.NewRecord Then
Set db = CurrentDb
If IsMissing(strCampoFecha) Or strCampoFecha = "" Or IsNull(strCampoFecha) Then
Set rstTemp = db.OpenRecordset("SELECT Max(" & strTabla & "." & strCampo & ") AS MaxDesNumero FROM " & strTabla & ";")
Else
Set rstTemp = db.OpenRecordset("SELECT Max(" & strTabla & "." & strCampo & ") AS MaxDesNumero, Year(" & strCampoFecha & ") AS Año FROM " & strTabla & " GROUP BY Year(" & strCampoFecha & ") HAVING (((Year(" & strCampoFecha & "))=Year(Date())));")
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

RE:Crear registro con último valor + 1

Publicado por David Gil (24 intervenciones) el 30/09/2004 17:43:58
El resto (I) : Haz una interseccion con los trozos

Set rstTemp = db.OpenRecordset("SELECT Max(" & strTabla & "." & strCampo & ") AS MaxDesNumero, Year(" & strCampoFecha & ") AS Año FROM " & strTabla & " GROUP BY Year(" & strCampoFecha & ") HAVING (((Year(" & strCampoFecha & "))=Year(Date())));")
End If
Select Case rstTemp.RecordCount
Case 0:
frmTemp.Controls(strControl) = Format("1", strFormato)
Case 1:
If Not IsNull(rstTemp![MaxDesNumero]) Then
frmTemp.Controls(strControl) = Format(CDbl(rstTemp![MaxDesNumero] + 1), strFormato)
Else
frmTemp.Controls(strControl) = Format("1", strFormato)
End If
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

RE:Crear registro con último valor + 1

Publicado por David Gil (24 intervenciones) el 30/09/2004 17:44:51
El resto (I) : Haz una interseccion con los trozos

frmTemp.Controls(strControl) = Format("1", strFormato)
End If
Case Else:
frmTemp.Controls(strControl) = Format(CDbl(rstTemp![MaxDesNumero] + 1), strFormato)
End Select
rstTemp.Close
db.Close
End If

End Function
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