Eliminar un registro sin eliminar un campo.

He aquí el problema en cuestión...

Tengo una tabla en la cual a cada "AFILIADO" que ingreso le genera un Número de Afiliado y un Número de Orden...

El Número de Orden sirve para saber la cantridad de Afiliados que se tiene... Tiene que estar sí o sí de manera correlativa en la impresión de un listado...

Hasta ahí todo bien... El problema se me genera cuando voy a eliminar un "AFILIADO" ya que no me imagino como hacer para que queden los números de orden correlativos...

Los campos de la tabla son los siguientes:

Num_Orden, Num_Afiliado, ApeyNomAfiliado, FNacAfiliado, TipoDoc, NumDoc, Alta, RegimenPrevisional...

Si, por ejemplo, tengo 10 afiliados (los primeros 10 que ingresé)... Van a tener igual número de Orden que Número de Afiliados...

Ahora, elimino el Afiliado número 3, y el número 5 (tendría 8 afiliados)

Entonces me tendría que quedar correlativo del 1 al 8 (Número de Orden) pero, por supuesto 1,2,4,6,7,8,9,10 (Numero de Afiliado): Los ocho afiliados que quedaron...

¿Me pueden dar una mano?

2 respuestas

Respuesta
2

Daniel ¿Has probado a olvidarte de ese número y en el informe, en vista diseño, añadir un cuadro de texto sin etiqueta, a la izquierda de Apeynom... y en sus propiedades-datos-Origen del control le pones

=1

Y más abajo en suma continua le pones Sobre Grupo

Te va a poner el numero de afiliados y no tienes porque preocuparte en absoluto de so borras algo o no lo borras

Antes que nada muchas gracias por responder con tanta rapidez!!! 

Ahora... Un par de dudas...

añadir un cuadro de texto sin etiqueta, a la izquierda de Apeynom... y en sus propiedades-datos-Origen del control le pones

=1

Lo que me dices arriba... Lo de ponerle un cuadro de texto sin etiqueta... La etiqueta la necesito para que se vea que lo muestra es el Número de Orden...

Cuando decís: Datos-Origen te referís al DataField?? Que en este caso sería el campo Num_Orden??? El =1 que es lo querés reflejar con eso??

Luego, cuando me decís:

Y más abajo en suma continua le pones Sobre Grupo

No entiendo si dice en suma: continua... o En suma Continua... Además de no encontrar adonde está esa parte...

Cuando dices:

Te va a poner el numero de afiliados y no tienes porque preocuparte en absoluto de so borras algo o no lo borras...

No entiendo el porqué lo decís... Ja. 

Disculpame, me parece muy interesante lo que decís pero no logro comprenderlo. 

GRACIAS!!!!

Supongamos que tengo una tabla

Hago un informe y en vista diseño le añado el cuadro de texto que ves con la letra en rojo

Verás que en sus propiedades-datos le digo que el origen del control =1 y en Suma continua le digo(como todos van seguidos) Sobre grupo y el resultado

Y así hasta el final. Si el informe lo tuvieras agrupado, por ejemplo, por país e hicieras lo mismo te los numeraría POR CADA país. En ese caso para ver el total sin distinguir los países bastaría con poner en vez de Sobre Grupo Sobre Todo

Me olvidé, si en la tabla origen borraras algún registro, da exactamente igual, el numero en rojo te lo seguiría poniendo correlativo, ya que es independiente del numero del registro. De todas formas, si quieres, repito, si quieres, mándame un mensaje (sólo el mensaje) a [email protected] y te mando unos ejemplos. Si lo haces, en el Asunto del mensaje pon tu alias Daniel, ya que si no sé quien me escribe ni los abro.

Muchas gracias por la respuesta... Igual, para que le sirva a otros... Y a mí, te consulto una vez más... Las propiedades que me decís no las tengo en el datareport de VB 6.0 Qué control es el que estás usando. 

GRACIAS nuevamente!!!

Un control cuadro de texto en un informe de Access

Respuesta
1

En este ejemplo asumo que tiene un cuadro de texto con el nombre num_orden y un botón de comando con el nombre btnBorrar. Adicionamos el siguiente código al botón de comando:

Hola! Muchas gracias pro responder!! 

Por desgracia no uso Docmd... 

Preguntas a ver si entiendo el código, todavía hay cosas que no se manejar...

Igual dejame ver si entendí tu idea...

Lo que me dices es que los registros que ya tengo van a ser editados en su campo Num Orden, el cual va a tomar el valor de lcontador, que la primera vez será 1 pero se irá incrementando hasta llegar al final del registro...

Entendí bien?

Gracias!

¿Creo qué esa era su pregunta mantener el correlativo?

Sí. Esa era la pregunta inicial... La otra pregunta es: ese código es para editar los campos que ya estar ingresados??

Gracias!

Si efectivamente el nro de orden que era 4 pasaría a 3. No lo hago en el reporte porque asumo que más tarde va exportar la tabla a excel u otra base de datos y quiere mantener el correlativo

Por ahí no expliqué que ya tengo datos en la base de datos... Digo porque la variable Contador toma el valor de 1... Que valor tendría que tomar teniendo ya registros en la tabla... Había pensado en la proiedad recordcount del recordset pero ese me devuelve el total de registros... Si elimino uno del medio no me sirve ese dato... 

No sé qué hacer... Ja-

Pongo el código que utilizo en el botón...

Puse como me dijiste pero no hace lo que necesito...

Private Sub cmdBajaVol_Click()
Dim RstBaja As New ADODB.Recordset
Dim strVolBaja As String
Dim Contador As Integer
If MsgBox("¿Seguro que desea dar de baja al Voluntario?", vbQuestion + vbYesNo, "Baja de AFILIADOS") = vbYes Then
strVolBaja = "DELETE FROM AFILIADOS where Num_Afiliado=" & txtModAfiliado(0).Text & ""
Set RstBaja = New ADODB.Recordset
RstBaja.Open strVolBaja, Base, adOpenStatic, adLockOptimistic
If Not RstBaja.BOF And Not RstBaja.EOF Then
RstBaja.MoveFirst
End If

Contador = 1

Do Until RstBaja.EOF
With RstBaja
!NumOrden = Contador
.Update
Contador = Contador + 1
RstBaja.MoveNext
End With
'RstBaja.Update
Loop
MsgBox "Se ha eliminado con éxito.", vbInformation, "Baja de AFILIADOS."

Veo que estamos por caminos diferentes hablamos de "correlativo" y no de contar registros. Le dejo la inquietud a otro experto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas