Visual Basic - Incrementar strings

Life is soft - evento anual de software empresarial
 
Vista:

Incrementar strings

Publicado por Mamila (23 intervenciones) el 30/05/2006 22:24:52
Hola a todos,

Estoy tratando de incrementar un campo string en 1 cada vez que se crea un nuevo registro.

Se supone que cuando el ultimo valor de la tabla en el campo llamado "codigo" es 15, el valor siguiente lo asume como es 16. Hasta ahi bien.

Pero por ejemplo, cuando el ultimo valor del campo codigo es "hola", el siguiente deberia ser "hola1", o si el valor de codigo es "hola_1" el siguiente deberia ser "hola_2".....y asi.

Va mi codigo por si alguien se le ocurre como hacerlo.

Set Aux = Dat.OpenRecordset("Select MAX(codigo) as xx from Personas")
If IsNull(Aux!xx) Then
Text1.Text = 1
Else
If IsNumeric(Aux!xx) Then
Text1.Text = Aux!xx + 1
Else
Text1.Text = Aux!xx & 1
End If
End If

Segun mi codigo si quisiera aumentar codigo="hola_1" deberia quedarme como "hola_2" pero con esto me queda como "hola_11" que no esta del todo mal, pero no es la solucion que me sirve.

gracias de antemano
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:Incrementar strings

Publicado por Ivan (1039 intervenciones) el 31/05/2006 01:10:17
Te voy a dar la idea, no tengo tiempo como para ponerme a codificarte tu problema

La idea es recorrer tu variable, la cual llamaré CADENA, se recorre desde el último al primero.

Si la longitud de CADENA es igual a 1 o si en su total CADENA es un número, entonces verificarás si acaso es un número (si el total de la cadena son dígitos pasa sin problema por aquí) si acaso es dígito, solo se convierte a número y se incrementa en 1 y se vuelve a convertir otra vez

La la longitud no es 1 o si el total de su contenido NO son solo dígitos, entonces recorres todos los caracteres de CADENA, empezando desde el último al primero, conforme los últimos vayan siendo dígitos velos guardando en una variable, cuidando que el que agregues vaya quedando a la izquierda, estos números los guardo de CADENA_AUX, el bucle irá revisando caracter por caracter, en el momento en que se encuentre uno que NO SEA DIGITO entonces el bucle tiene que terminar, evalúas CADENA_MAX si acaso está vacío significa que que ningún caracter de CADENA fue número, asi que solo le agregas el "1" a CADENA, si acasto CADENA_AUX tiene valor, conviértelo a número (CANTIDAD), increméntale 1 y copialo a CADENA, acuerdate de quitar de CADENA los dígitos que estaban antes.

cuantos=len(cadena)
if cuantos=1 or val(cadena)<>0 Then
'es de 1 caracter pregunta si es numero
if isnumeric(cadena) then
resultado=val(cadena) + 1
cadena=str(resultado)
else
'la cadena no es numero, agrégale el número 1
cadena=cadena & "1"
end if
else
' la cadena tiene más de un caracter haz un bucle desde el ultimo al primero
posicion=len(cadena)
cadena_aux=""
' en cadena AUX iremos grabando el numero
Do
if isnumeric(mid(cadena,posicion,1)) then
' en cadena_aux ve guardando todos los dígitos
cadena_aux=mid(cadena,posicion,1) & cadena_aux
posicion=posicion-1
if posicion=0 then
'llegaste al principio de la cadena, esto no debe pasar se supone
' que arriba validaste si todo el contenido de CADENA era número
exit do
end if
else
' el caracter no es numero, el bucle tiene que terminar
'pregunta por CADENA_AUX
if cadena_aux="" Then
' el caracter en posicion POSICION no es numero
' y si cadena_aux está vacío, significa que en CADENA no hay números
' agregale el número 1
cadena=cadena & "1"
else
'cadena_aux no está vacío, lo que significa que en CADENA si existen
'números, conviértelo a número e incrementalo
cantidad=val(cadena_aux) + 1
' ahora modifica el valor de CADENA cambiándo los dígitos que estaban
'por los nuevos que estan en CANTIDAD
cadena=mid(cadena,1,posicion) & str(cantidad)
' se supone que en POSICION está el caracter que estás evaluando
' el cual NO es dígito
end if
exit do
end if
Loop
endif

Espero esto te sirva, para que le entiendas más al código ponle las debidas tabulaciones, ya que este editor le quita los espacios.

ESTO NO LO HE PROBADO, SOLO ES UNA IDEA, PUEDE QUE NO FUNCIONE.

SUERTE
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:Incrementar strings

Publicado por Mamila (23 intervenciones) el 31/05/2006 14:56:24
Gracias por tu respuesta.

Voy a probar a ver que pasa.

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