Como actualizo unos contadores en una tabla

Hola:
En primer lugar agradezco tu colaboración.
Mi problema es como actualizar un dato de una tabla de access desde un formulario.
Me explico: quiero hacer una base de datos de proyectos. Los proyuectos los clasifico en áreas, ej: AAA, BBB, CCC, ...
Establezco un contador indepenciente para cada una de ellas. Para ello defino una tabla Control con dos campos básicos, Área y Num, en el que Num identifica el número a aplicar al siguiente proyecto de la clase correspondiente. Supongamos que en un momento determinado los valores de la tabla son:
Tabla Control
Área Num
AAA 67
BBB 32
CCC 95
...
La entrada de datos la hago en un formulario
En un campo Clase del formulario Formulario1, selecciono la clase (ej.: CCC). El número que corresponde al nuevo proyecto es 95. Con esto genero un código de proyecto CCC0095
Todo esto lo he podido hacer.
Para terminar es necesario que actualice la tabla Control incrementando el contador correspondiente a CCC a 96, de forma que la tabla quede de la siguiente forma:
Área Num
AAA 67
BBB 32
CCC 96
...
Esto no lo he podido hacer
Espero haberme explicado y agradezco tu colaboración
Muchas gracias

1 Respuesta

Respuesta
1
Prueba con esto.
Añade donde tengas la función de generar el código de proyecto lo siguiente.
*******************************
dim sql as string
sql = "UPDATE TABLACONTROL SET Num = Num+1 WHERE Area = " & me.CAMPOAREA
docmd.runsql sql
*******************************
Ahora pon los nombre correctamente.
TABLACONTROL= Nombre de la tabla control
me.CAMPOAREA = Nombre del campo area que vas a actualizar
Muchas gracias por tu atención.
Creo que lo he interpretado bien y he puesto lo siguiente:
sql = "UPDATE TbClase SET TbClase.CodNumero = TbClase.CodNumero+1 WHERE CodClase = " & rgTareas("CodClase")
DoCmd.RunSQL sql
Me pide el valor del parámetro.
De todas formas, se me ha ocurrido probar algo que si me ha funcionado. Supongo que será equivalente. He puesto lo siguiente:
rgTareas.Edit
rgTareas("CodNumero") = rgTareas("CodNumero") + 1
rgTareas.Update
rgTareas.Close
Lo que no tengo claro si hace falta la última fila, porque la ponga o no funciona bien.
El código completo es:
Private Sub Clase_BeforeUpdate(Cancel As Integer)
Set dbTareas = CurrentDb
CampoFrom = "TbClase"
CampoWhere = "CodClase='" & Forms![Formulario1].Clase & "'"
CampoOrder = "CodClase"
sqlTareas = "SELECT * FROM " & CampoFrom & " WHERE " & CampoWhere & " ORDER BY " & CampoOrder
Set rgTareas = dbTareas.OpenRecordset(sqlTareas)
Forms![Formulario1].FClase = rgTareas("Clase")
Forms![Formulario1].FCodClase = rgTareas("CodClase")
Forms![Formulario1].FCodNumero = rgTareas("CodNumero")
Forms![Formulario1].FObservaciones = rgTareas("Observaciones")
Var01 = CStr(rgTareas("CodNumero"))
Do While Len(Var01) < 4
    Var01 = "0" + Var01
Loop
Forms![Formulario1].Codigo = rgTareas("CodClase") & Var01
'Estas tres líneas incrementan el contador y guardan el valor incrementado en la tabla
rgTareas.Edit
rgTareas("CodNumero") = rgTareas("CodNumero") + 1
rgTareas.Update
rgTareas.Close
End Sub
Las preguntas son: si lo que me indicas es equivalente y si es necesario el comando rgTareas.Close
Muchas gracias
Si te funciona es equivalente, eso esta claro.
Pero ahora te pregunto una cosa. ¿La BD la van a actualizar varias personas?
Tienes que preguntarte esto por si algunos coindiden y las actualizaciones no son correctas.
Pero si te funciona y te vale no le des más vueltas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas