Como crear correlativo en access 2007

Una consulta estoy haciendo un sistema de almacen en access 2007 y tengo dos dudas, bueno tengo una tabla en access llamada Productos cuyos campos son IdProducto (código del producto)y DesProducto, bueno cree un formulario solo para ingresar productos nuevos a la base de datos.
1ra duda: quiero que al ingresar a ese formulario de access que se llama mantenimiento de productos, automáticamente se genere un correlativo (pero no usar campo tipo autonumérico), es decir si ya tengo 1 producto registrado con código 001 al ejecutar nuevamente el formulario en la caja de texto que corresponde al código en el formulario aparezca el codigoo 002 y así sucesivamente haber si me podrías pasar un código o una sugerencia como podría ser este..
2da duda: tengo un formulario para registrar las entradas y salidas de almacen, bueno ahí si me corre todo graba actualiza, pero quiero saber que clausula poner antes de grabar para que si alguna caja del texto no fue llenada me mande un mensaje indicándome que los datos no están completos.

4 respuestas

Respuesta
1
Una consulta estoy haciendo un sistema de almacen en access 2007 y tengo dos dudas, bueno tengo una tabla en access llamada Productos cuyos campos son IdProducto (código del producto)y DesProducto, bueno cree un formulario solo para ingresar productos nuevos a la base de datos.
1ra duda: quiero que al ingresar a ese formulario de access que se llama mantenimiento de productos, automáticamente se genere un correlativo (pero no usar campo tipo autonumérico), es decir si ya tengo 1 producto registrado con código 001 al ejecutar nuevamente el formulario en la caja de texto que corresponde al código en el formulario aparezca el codigoo 002 y así sucesivamente haber si me podrías pasar un código o una sugerencia como podría ser este..

Para realizar un autonumérico desde código seria así:
' primero seleccionamos en numero maximo de la tabla en cuestion
Set rst = CurretnDb.openrecorset = "Select Max(Codigo) From MiTabla"
'Guardamos el valor en un variable
Max= rst.fields(0) + 1
rst.close 'cerramos la consulta
ahora solo quedaria capturar los valores del formulario, por ejemplo:
Nombre = Me.LblNombre.Value
Apellidos = Me.LblApellidos
' con los valores, solo queda añadir el registro a la tabla en cuestion a traves de SQL
Currentdb.Execute("Insert Into Mitabla (Codigo,Nombre,Apellidos) Values ( & Max & ", "' & Nombre & "', '" & Apellidos & "');")
2da duda: tengo un formulario para registrar las entradas y salidas de almacen, bueno ahí si me corre todo graba actualiza, pero quiero saber que clausula poner antes de grabar para que si alguna caja del texto no fue llenada me mande un mensaje indicándome que los datos no están completos.
En evento current del formulario tienes que controlar cada campo de la siguiente manera:
If Me.MiCampo1.Value = "" or IsNull(Me.MiCampo1.Value) then
    MsgBox "El campo MiCampo1 no puede estar vacio".
    exitsub
end if
Así con todos los demás campos.
Respuesta
1
Yo trabajo en access 2003, pero no creo que haya ningún problema.
Para crear un correlativo: supongamos que tenemos una tabla que se llama CrearUnCorrelativo, con los campos IdCodigo y Nombre. Creas un formulario de entrada de datos con 2 cuadros de texto que se llamen Código (origen del controsl ICodigo) y Nombre (origen del control Nombre). En el cuadro de texto Código pones, en la acción que quieras, por ejemplo al recibir el enfoque --->Procedimiento de evento y este código:
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from CrearUnCorrelativo")
db.TableDefs.Refresh
Me.Refresh
If rs.EOF Then
Form!Codigo.Value = 1
Else
Form!Codigo.Value = Val(DMax("[CrearUnCorrelativo].[IdCodigo]", "[CrearUnCorrelativo]")) + 1
End If
Lo que hago es crear un recordset sobre la tabla y ver si tiene registros, si no tiene registros (rs. Eof) igualo el valor del campo a 0, si tiene registros igualo el campo al valor máximo+1.
Respecto de la 2ª pregunta yo pondría en cada campo de texto, al perder el enfoque--->Procedimiento de evento ---> If form!ComoSeLlameElCuadro.value="" then MsgBox("Lo que quieras poner") end if
Respuesta
1
Bien,
1a Solución:
Create un textbox llamado Máximo y pon Visible "No" y Origen de datos vacío. Luego en el procedimiento del evento "al activar registro" del formulario ponle el código siguiente:
Maximo = DMax("IdProducto", "Productos") + 1
Y en el procedimiento del evento "al presionar una tecla" del textbox DesProducto ponle el codigo siguiente
If isnull(Idproducto) or Idproducto=0 then
 idproducto=maximo
end if
2a Solución:
En el diseño de la tabla ponle en los campos que no quieras vacíos, Requerido a "si"
Respuesta
1
1.-Por ejemplo, incorpora en el evento Al entrar del campo DesProducto el evento:
Me.IdProducto = Format((DMax("[IdProducto]", "Productos") + 1), "000")
2.-La mejor y fácil forma es situar en el diseño de la tabla los campor que desees como Requerido (Si).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas