none
actualizar una columna? :S RRS feed

  • Pregunta

  • hola... tengo un pequeño problema q no se como resolverlo... 

    Estoy trabajando con transacciones a GP y como es un modulo externo al sistema q estoy generando a la hora de realizar una transaccion desde mi proyecto hay un registro q necesito insertar q se llama IVDOCNBR, este se actualiza solo si realiza la transaccion dentro d GP, pero cuando la hago fuera no lo hace.. el problema es q el tipo d dato s char '0000000000001' entonces para irlo actualizando yo necesito irle sumando 1 pero si se lo sumo ya no me aparece '0000000000002' sino q '2' y no se como hacerle para q queden los ceros... espero me entiendan y me puedan ayudar... gracias!!!

    lunes, 13 de septiembre de 2010 15:51

Respuestas

  • Hola.

    La primera parte de la pregunta no la acabo de entender. Parece un problema de transacciones, puede que no la finalices, que te falte el "commit".

    Sobre la segunda parte, el problema está en que para hacer la suma deberás convertir el número a entero, si no lo haces, la conversión será implícita. En resumen, tienes que convertir a entero, sumar y volver a colocar los ceros transformando a cadena de nuevo. Sería más o menos así:

    select right('0000000000000' + cast(cast(Cadena as int) + 1 as varchar(13)), 13)

    Si no lo logras, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    lunes, 13 de septiembre de 2010 15:58
    Moderador

Todas las respuestas

  • Hola.

    La primera parte de la pregunta no la acabo de entender. Parece un problema de transacciones, puede que no la finalices, que te falte el "commit".

    Sobre la segunda parte, el problema está en que para hacer la suma deberás convertir el número a entero, si no lo haces, la conversión será implícita. En resumen, tienes que convertir a entero, sumar y volver a colocar los ceros transformando a cadena de nuevo. Sería más o menos así:

    select right('0000000000000' + cast(cast(Cadena as int) + 1 as varchar(13)), 13)

    Si no lo logras, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    lunes, 13 de septiembre de 2010 15:58
    Moderador
  • ok gracias ahora tengo otra pregunta siempre con lo mismo... funciona esa misma funcion digamos q yo tengo '0000000000009' si no me equivoco y entiendo bien lo q has puesto a los 12 cero a la hora de suma le añadiria el 10 y ya no serian 13 digitos sino q 14... creo.... 

    y si me equivoco me lo podrias explicar un poquito mas... y perdon por molestar tanto... jijiji... pero realmente me interesa no solo hacerlo sino aprender...

    lunes, 13 de septiembre de 2010 16:10
  • Hola.

    Para eso está la función "right". De la cadena resultante se toman únicamente los 13 caracteres más a la derecha, con lo que tomaría un cero menos.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    lunes, 13 de septiembre de 2010 16:13
    Moderador
  • ok... gracias Alberto!! 

     

    Bendiciones!!

    lunes, 13 de septiembre de 2010 16:14