Problema de String

25/07/2011 - 22:27 por Mike | Informe spam
Que tal compañeros tengo un pequeño detalle, resulta que tengo un
storeprocedure que tiene un parametro char que recibe una cadena de
todos los tickets a facturar, yo le mando lo siguente '120,134,230' y
lo recibe el store procedure

NombredeSP
@valor char(20)

Select sum(VtatotalMN),Sum(VtatotIva),
sum(VtatotalMN) - Sum(VtatotIva)
from ventas where SuCveSucur=1 and VtaNumFol in(@valor)

pero cuando lo procesa me dice que no se puede convertir, como puedo
hacer esto, hay alguna manera de hacerlo...

saludos
mike

Preguntas similare

Leer las respuestas

#1 Richard García
26/07/2011 - 13:51 | Informe spam
On 25 jul, 15:27, Mike wrote:
Que tal compañeros tengo un pequeño detalle, resulta que tengo un
storeprocedure que tiene un parametro char que recibe una cadena de
todos los tickets a facturar, yo le mando lo siguente '120,134,230' y
lo recibe el store procedure

NombredeSP
@valor char(20)

 Select sum(VtatotalMN),Sum(VtatotIva),
    sum(VtatotalMN) - Sum(VtatotIva)
  from ventas where SuCveSucur=1 and VtaNumFol in(@valor)

pero cuando lo procesa me dice que no se puede convertir, como puedo
hacer esto, hay alguna manera de hacerlo...

saludos
mike



Hola Mike,

qué tipo de campo es la columna VtaNumFol por la que quiere
consultar?. Trate de que la variable @valor sea del mismo tipo de
campo que la columna VtaNumFol.

También podría probar enviando solo un valor en la variable,por
ejemplo '120' y convertir la condición en where SuCveSucur=1 and
VtaNumFol = @valor.

Esto para garantizar que por lo menos la condición sí aplica y ya
revisar porqué al enviar varios parámetros está poniendo problema.

Lo último que se me ocurre si el problema persiste es crear una
consulta dinámica donde concatene la variable @valor y hacer un print
para ver exactamente qué valores recibe esa variable.

Espero haber ayudado en algo, me cuenta por favor cómo le fue.
Respuesta Responder a este mensaje
#2 Mike
26/07/2011 - 19:04 | Informe spam
On 26 jul, 04:51, Richard García
wrote:
On 25 jul, 15:27, Mike wrote:





> Que tal compañeros tengo un pequeño detalle, resulta que tengo un
> storeprocedure que tiene un parametro char que recibe una cadena de
> todos los tickets a facturar, yo le mando lo siguente '120,134,230' y
> lo recibe el store procedure

> NombredeSP
> @valor char(20)

>  Select sum(VtatotalMN),Sum(VtatotIva),
>     sum(VtatotalMN) - Sum(VtatotIva)
>   from ventas where SuCveSucur=1 and VtaNumFol in(@valor)

> pero cuando lo procesa me dice que no se puede convertir, como puedo
> hacer esto, hay alguna manera de hacerlo...

> saludos
> mike

Hola Mike,

qué tipo de campo es la columna VtaNumFol  por la que quiere
consultar?. Trate de que la variable @valor sea del mismo tipo de
campo que la columna VtaNumFol.

También podría probar enviando solo un valor en la variable,por
ejemplo '120' y convertir la condición en where SuCveSucur=1 and
VtaNumFol = @valor.

Esto para garantizar que por lo menos la condición sí aplica y ya
revisar porqué al enviar varios parámetros está poniendo problema.

Lo último que se me ocurre si el problema persiste es crear una
consulta dinámica donde concatene la variable @valor y hacer un print
para ver exactamente qué valores recibe esa variable.

Espero haber ayudado en algo, me cuenta por favor cómo le fue.



Gracias Richard por tu tiempo
Estuve buscando en grupos y internet y encontre esta solucion:
set @sql='Update Ventas set VtaNumFact=' + str(@folio) +
',VtaStatusFact=' + 'Facturado' +
' where Sucvesucur='+ Ltrim(Str(@sucursal)) + ' and VtaNumFol in(' +
rtrim(@numerodetickets) + ')'
exec (@sql)
no es el mismo ejemplo que puse pero es igual, ahora el problema que
tengo es donde esta VtaStatusFact ya que el estatus de la factura le
tengo que poner Facturado pero me dice que no se puede porque le
faltan las ' ' osea pone VtaStatusFact=Facturado no
vtaStatusFact='Facturado' no encuentro como poner las comillas le puse
''Facturado'' pero marca error..

saludos
Mike
Respuesta Responder a este mensaje
#3 Richard García
27/07/2011 - 14:48 | Informe spam
On 26 jul, 12:04, Mike wrote:
On 26 jul, 04:51, Richard García
wrote:



> On 25 jul, 15:27, Mike wrote:

> > Que tal compañeros tengo un pequeño detalle, resulta que tengo un
> > storeprocedure que tiene un parametro char que recibe una cadena de
> > todos los tickets a facturar, yo le mando lo siguente '120,134,230' y
> > lo recibe el store procedure

> > NombredeSP
> > @valor char(20)

> >  Select sum(VtatotalMN),Sum(VtatotIva),
> >     sum(VtatotalMN) - Sum(VtatotIva)
> >   from ventas where SuCveSucur=1 and VtaNumFol in(@valor)

> > pero cuando lo procesa me dice que no se puede convertir, como puedo
> > hacer esto, hay alguna manera de hacerlo...

> > saludos
> > mike

> Hola Mike,

> qué tipo de campo es la columna VtaNumFol  por la que quiere
> consultar?. Trate de que la variable @valor sea del mismo tipo de
> campo que la columna VtaNumFol.

> También podría probar enviando solo un valor en la variable,por
> ejemplo '120' y convertir la condición en where SuCveSucur=1 and
> VtaNumFol = @valor.

> Esto para garantizar que por lo menos la condición sí aplica y ya
> revisar porqué al enviar varios parámetros está poniendo problema.

> Lo último que se me ocurre si el problema persiste es crear una
> consulta dinámica donde concatene la variable @valor y hacer un print
> para ver exactamente qué valores recibe esa variable.

> Espero haber ayudado en algo, me cuenta por favor cómo le fue.

Gracias Richard por tu tiempo
Estuve buscando en grupos y internet y encontre esta solucion:
 set @sql='Update Ventas set VtaNumFact=' + str(@folio) +
',VtaStatusFact='  + 'Facturado' +
  ' where Sucvesucur='+ Ltrim(Str(@sucursal)) + ' and VtaNumFol in(' +
rtrim(@numerodetickets) + ')'
   exec (@sql)
no es el mismo ejemplo que puse pero es igual, ahora el problema que
tengo es donde esta VtaStatusFact ya que el estatus de la factura le
tengo que poner Facturado pero me dice que no se puede porque le
faltan las ' ' osea pone VtaStatusFact=Facturado no
vtaStatusFact='Facturado' no encuentro como poner las comillas le puse
''Facturado'' pero marca error..

saludos
Mike



Hola Mike,

me alegro de que halla encontrado la solución. A esa misma solución me
refería con "consulta dinámica".

Para las comillas debe concatenar char(39), quedando la consulta de la
siguiente forma:

set @sql='Update Ventas set VtaNumFact=' + char(39) + str(@folio) +
char(39) + ...

Si no estoy mal el código 39 corresponde al ASCII del carácter '.
También puede concatenar char(13). Esto solo es un salto de línea para
que toda la sentencia Update no quede a lo largo y al momento de hacer
un print a @sql sea mas legíble el código, pero eso ya es opcional.

Espero le sirva,

Por favor me comenta cómo resultó todo.
Respuesta Responder a este mensaje
#4 Mike
27/07/2011 - 19:30 | Informe spam
On 27 jul, 05:48, Richard García
wrote:
On 26 jul, 12:04, Mike wrote:





> On 26 jul, 04:51, Richard García
> wrote:

> > On 25 jul, 15:27, Mike wrote:

> > > Que tal compañeros tengo un pequeño detalle, resulta que tengo un
> > > storeprocedure que tiene un parametro char que recibe una cadena de
> > > todos los tickets a facturar, yo le mando lo siguente '120,134,230' y
> > > lo recibe el store procedure

> > > NombredeSP
> > > @valor char(20)

> > >  Select sum(VtatotalMN),Sum(VtatotIva),
> > >     sum(VtatotalMN) - Sum(VtatotIva)
> > >   from ventas where SuCveSucur=1 and VtaNumFol in(@valor)

> > > pero cuando lo procesa me dice que no se puede convertir, como puedo
> > > hacer esto, hay alguna manera de hacerlo...

> > > saludos
> > > mike

> > Hola Mike,

> > qué tipo de campo es la columna VtaNumFol  por la que quiere
> > consultar?. Trate de que la variable @valor sea del mismo tipo de
> > campo que la columna VtaNumFol.

> > También podría probar enviando solo un valor en la variable,por
> > ejemplo '120' y convertir la condición en where SuCveSucur=1 and
> > VtaNumFol = @valor.

> > Esto para garantizar que por lo menos la condición sí aplica y ya
> > revisar porqué al enviar varios parámetros está poniendo problema.

> > Lo último que se me ocurre si el problema persiste es crear una
> > consulta dinámica donde concatene la variable @valor y hacer un print
> > para ver exactamente qué valores recibe esa variable.

> > Espero haber ayudado en algo, me cuenta por favor cómo le fue.

> Gracias Richard por tu tiempo
> Estuve buscando en grupos y internet y encontre esta solucion:
>  set @sql='Update Ventas set VtaNumFact=' + str(@folio) +
> ',VtaStatusFact='  + 'Facturado' +
>   ' where Sucvesucur='+ Ltrim(Str(@sucursal)) + ' and VtaNumFol in(' +
> rtrim(@numerodetickets) + ')'
>    exec (@sql)
> no es el mismo ejemplo que puse pero es igual, ahora el problema que
> tengo es donde esta VtaStatusFact ya que el estatus de la factura le
> tengo que poner Facturado pero me dice que no se puede porque le
> faltan las ' ' osea pone VtaStatusFact=Facturado no
> vtaStatusFact='Facturado' no encuentro como poner las comillas le puse
> ''Facturado'' pero marca error..

> saludos
> Mike

Hola Mike,

me alegro de que halla encontrado la solución. A esa misma solución me
refería con "consulta dinámica".

Para las comillas debe concatenar char(39), quedando la consulta de la
siguiente forma:

 set @sql='Update Ventas set VtaNumFact=' + char(39) + str(@folio) +
char(39) + ...

Si no estoy mal el código 39 corresponde al ASCII del carácter '.
También puede concatenar char(13). Esto solo es un salto de línea para
que toda la sentencia Update no quede a lo largo y al momento de hacer
un print a @sql sea mas legíble el código, pero eso ya es opcional.

Espero le sirva,

Por favor me comenta cómo resultó todo.



Richard, tuve que cambiar toda la programacion porque no encontre esa
solucion, pero ya supe como se ponen las comillas,
no se me ocurrio esa solucion..

Gracias
Mike
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida