Visual Basic - Cómo hacer el id de un registro sea secuencial

Life is soft - evento anual de software empresarial
 
Vista:

Cómo hacer el id de un registro sea secuencial

Publicado por Andrea (14 intervenciones) el 07/11/2007 00:24:56
Hola!!! mi problema es q cdo hago un addnew , el id de ese registro es cualquier número por ej 8563 pq yo solo aprendí a generar un código aleatorio,(este es el código)

Dim AutoCodigo As Long
Do 'Autogenera un código
AdodcFliares.Recordset.MoveFirst
Randomize
AutoCodigo = CLng(Int(((9999 - 1 + 1) * Rnd) + 1))
AdodcEmpresas.Recordset.Find ("CodEmpresa=") & AutoCodigo
Loop Until AdodcEmpresas.Recordset.EOF = True Or AdodcEmpresas.Recordset.RecordCount = 999

AdodcEmpresas.Recordset.MoveLast 'Mueve al final del recordset
AdodcEmpresas.Recordset.AddNew 'Agrega un reg. en blanco


La instruccón Randomize es la q inicializa un generador de números aleatorios, pero yo quiero q sea secuencial y no se como hacerlo probé de todo y no me sale.
Me dijeron q tengo q crear otra tabla q guarde el ultimo registro cargado, probé pero no me sale. En síntesis yo quiero cargar el nº 1 y luego el 2, el 3 y asi sucesivamente.
Si alguien me puede ayudar se lo voy a agradecer.

Saludos, Andrea
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:Cómo hacer el id de un registro sea secuencial

Publicado por El conejo (124 intervenciones) el 07/11/2007 00:35:38
Hola.
1.
En efecto lo solucionas facil creando otra tabla que vaya actualizando solo el ultimo numero guardado, cuando quieras crear uno nuevo llamas a la tabla que te entrega el ID le sumas 1, lo dejas como variable y actualizas tu tabla de numeros.
2.
Lo otro es que (para esto la tabla de registros deberia estar en blanco) si esta en blanco tu nuevo id seria 1.
Si no lo esta vas al ultimo registro, tomas el numero, le sumas 1 y creas el nuevo registro con ese numero al que le has sumado 1.
3.
Generar un archivo secuencial guardar el numero y cada vez que crees un nuevo registro haces lo mismo, verificas si el archivo secuencial existe, si no existe tu ID es 1, creas el archivo y guardar el valor del ID.
Si existe el fichero secuencial, lo abres, tomas el unico valor, lo asignas al ID + 1, cierras el fichero. Lo eliminas y lo vuelves a crear con el nuevo valor de ID + 1.

Si necesitas un ejemplo, solo pidelo.

Saludos.
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:Cómo hacer el id de un registro sea secuencial

Publicado por Andrea (14 intervenciones) el 07/11/2007 00:45:01
Si me podes mandar un ejemplo te lo voy a agradecer.....
Saludos, Andre
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:Cómo hacer el id de un registro sea secuencial

Publicado por El conejo (124 intervenciones) el 07/11/2007 00:50:07
Te escribo el ejemplo del caso con archivo secuencial, esto quedaria asi, mas menos:

Dim AutoCodigo As Long
dim idreg as double
Do 'Autogenera un código
AdodcFliares.Recordset.MoveFirst
' Randomize
' AutoCodigo = CLng(Int(((9999 - 1 + 1) * Rnd) + 1))
idreg=0
idreg = secuencial(idreg)
AdodcEmpresas.Recordset.Find ("CodEmpresa=") & AutoCodigo
Loop Until AdodcEmpresas.Recordset.EOF = True Or AdodcEmpresas.Recordset.RecordCount = 999

AdodcEmpresas.Recordset.MoveLast 'Mueve al final del recordset
AdodcEmpresas.Recordset.AddNew 'Agrega un reg. en blanco

Function secuencial(ByVal idreg As String) As Double
If Dir(App.Path & "\IDREG.TXT") = "" Then
' no existe el archivo de registro
idreg = 1
Open App.Path & "\IDREG.TXT" For Output As #1
Print #1, idreg ' guardas el valor del ID
Close #1
Else
Open App.Path & "\IDREG.TXT" For Input As #1
Line Input #1, idreg ' obtienes el ultimo ID
Close #1
Kill (App.Path & "\IDREG.TXT") ' eliminas el fichero
idreg = idreg + 1
Open App.Path & "\IDREG.TXT" For Output As #1
Print #1, idreg ' guardas el valor nuevo
Close #1
End If
secuencial = idreg 'ID nuevo
End Function

Saludos.
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:Cómo hacer el id de un registro sea secuencial

Publicado por ivan (1039 intervenciones) el 07/11/2007 07:36:31
¿Y todo eso para grabar un registro secuencial?

No sería mejor poner el campo como autonumérico, sin mas?

O.. ir al final del recordset y sumarle uno al valor del campo?
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:Cómo hacer el id de un registro sea secuencial

Publicado por El conejo (124 intervenciones) el 07/11/2007 13:47:05
Hola Andrea.
Por leer tú código rápido omití algo, la llamada a la función "secuencial" va fuere del ciclo until, de hecho el ciclo until podías marcarlo como comentario, AutoCodigo ahora se llama idreg.

Espero te sirva.
Saludos.

Hola Iván, si no vas a pensar lo que vas a escribir podrías al menos pensar en no escribir.
Si es cierto que sería mucho más sencillo crear un campo autonº, también es cierto la pregunta es una y la respuesta que estoy dando es la que yo estimo conveniente para esa pregunta.
Resumen, hay un apartado del Foro que dice Visual Basic Avanzado, la gente que pregunta acá generalmente está comenzando o tiene poca experiencía.
Si alguién pregunta como hacer un campo auto incrementable es porque evidentemente no conoce la propiedad auto númerica de los campos, no crees?

La pregunta te la hago ahora yo a tí.
Si alguién dice: Tengo una base de datos con ID aleatorea porque es lo como sé hacerlo, quiere decir que esa base de datos ya puede estar poblada, como voy a definir que el ultimo recordset es el mayor?
No creés que algo simple ya requiere una explicación un poco más larga y confusa para quién solicita la ayuda?.

rs.execute = ("select *from tabla order by convert(id,unsigned)"

No sé si viste el códgio del usuario, eso no te dice algo que cada pregunta hay que responderla en el idioma de quién solicita la ayuda?

En fin, mi idea de ayudar es entregar un ejemplo de como hacer, es cosa de cada quién ver si X camino le es ideal, sino buscar una solución personal, las criticas claramente no son aporte.

Saludos.
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:Cómo hacer el id de un registro sea secuencial

Publicado por ivan (1039 intervenciones) el 07/11/2007 15:29:13
No suelo entrar en provocaciones, pero cuando leo cosas así, contesto.

Sin valorar lo que entiendes por secuencial y/o aleatorio, que a mi entender, no lo tienes muy claro. Solamente voy a escribir tus contradicciones:

dices:
"si no vas a pensar lo que vas a escribir podrías al menos pensar en no escribir"
"Por leer tú código rápido omití algo"
digo:
Si no sabes leer rápido, podrías al menos pensar en no leer.

dices:
"Si es cierto que sería mucho más sencillo crear un campo autonº, "
digo:
¿Y si es más sencillo, porqué no se lo dijiste antes, o es que presupones que quien preguntó es corto de mente y no lo iba a entender?

dices:
"también es cierto la pregunta es una y la respuesta que estoy dando es la que yo estimo conveniente para esa pregunta. "
digo:
¿La que tú estimas conveniente.. quién crees que eres, el Papa?

dices:
" ......de datos ya puede estar poblada, como voy a definir que el ultimo recordset es el mayor? "
digo:
¿No sabes, que dentro de una consulta se puede poner una cláusula que se llama ORDER BY?

dices:
"rs.execute = ("select *from tabla order by convert(id,unsigned)" "
digo:
¿No crees que falta (o sobra) algún paréntesis? ¿Desde cuando soporta un recordset el método Execute?

Y no quiero continuar...

En fin, mi idea también es ayudar pero desde otros parámetros. Y estoy de acuerdo en lo que dices " las criticas claramente no son aporte." con lo cual deberías haberte callado.
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

no fué provocación.

Publicado por El conejo (124 intervenciones) el 07/11/2007 16:08:26
Hola Iván.

Lo que quize expresar en mi comentario anterior no fué una provocación, después de todo nadie tiene la verdad absoluta, es lo único repartido equitatevemente en la vida.. todos tenemos o creemos tener la razón.

Quize decir esto para que no se entienda mal.

Alguien pregunta como llego a 4, mi forma es esta:
1 + 1 + 1 + 1 = 4

Yo respondo 4 + 0 = 4

Supongo que ayudar desde otros parámetros sería:
También lo es 2 + 2 = 4

A critica me refiero al hacer pregunta la respuesta de otra persona, como lo hiciste ante mi respuesta.
Espero se entienda.

Saludos.
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:Cómo hacer el id de un registro sea secuencial

Publicado por Andrea (14 intervenciones) el 08/11/2007 13:43:36
Hola! Chicos gracias por las respuestas..... lamento mucho que haya surgido esta discusión por mi pregunta.
Un beso Grande a los dos
Andrea
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