![]() |
Problema con Modificar Tabla desde Delphi
Hola Amigos de clubcdelphi la verdad es que tengo un problema con la modificacion de una tabla en SQL, tengo un programa que modifica la tabla a traves de un procedimiento almacenado llamado ModificaProductos
la tabla que esta en sql contiene los campos Codigo de tipo entero, NombreProducto de tipo varchar y Cantidad de tipo varchar por ejemplo Tabla Productos Codigo NombreProducto Cantidad 1 fierro 20 2 cobre 30 3 acero 20,7 ok, tengo el procedimiento almacenado que se llama modificaproducto, este procedimiento recibe dos parametros que son el codigo del producto y la cantidad, si lo invoco en SQL server asi modificaproducto 1,'45,8' me cambiaria sin problema la cantidad de fierro por 45,8. Pero cuando lo llamo en delphi de sta forma
me arroja un error por que delphi cree que van mas parametros de los que soporta el procedimiento me explico: si CodigoProducto = 1 y ValorModificadoProducto = 45,6 SQL cree que delphi manda el procedimiento de esta forma ModificaProducto 1,45,6 y si se dan cuenta en vez de haber solos dos parametros sql lo toma como si fuesen 3 el numero 45,6 lo toma como dos parametros y no todo junto como un string no se si me entienden, debido a esto no puedo modificar lso productos por que claro sql me reclama el error amigos alguien me podria ayudar con el procedimiento para cuando vaya un valor con coma se tome asi ModificaProducto 1,'45,8' y no asi ModificaProducto 1,45,8. Espero que me hayan entendido intente ser lo mas claro y conciso posible gracias por todo espero sus respuestas Ojo: la cantidad la declare como varchar y no como real por que todo el trabajo lo hago en el programa y le retorno un string al campo cantidad, al declararlo como real tenia problema con los puntos y las comas y como no quiero cambiar la configuracion regional por que eso no seria justo con otros programas lo hice asi |
Se me ocurre que manualmente modifiques la cadena antes de enviarla, o si te es últil, cambies los parámetros para toda la aplicación.
En mi caso utilizo un procedimiento similar a este:
|
Los STORE PROCEDURES deben de ser invocados con otro METODO
En lugar de usar el componente QUERY debes de usar un componente STOREPROCEDURE.. |
La recomendación de pcicom me parece es la más adecuada y la que deberías utilizar.
Pero podrías probar:
Insisto, lo que propone pcicom es lo más adecuado. |
amigos disculpenme si los hice perder el tiempo, es que a veces la solucion es tan facil y esta ahi mismo pero uno no se imagina como hasta que me di cuenta de una cosa bueno ojala esto e sirva a otra persona para no estar cambiando la configuracion regional
lo que pasa es que la tabla tiene Codigo de tipo entero, NombreProducto de tipo varchar y Cantidad de tipo varchar la cantidad es de tipo varchar o sea string entonces lo mas logico es que yo al modificar al tabla con los datos listos para enviar, deberia mandar un dato de tipo string no un real convertido a string, si se fijan en el ejemplo que di, desde delphi puse esto:
como ven estoy transformando el valor de un reala un string pero claro me va a reclamar por que le estoy mandando 3 parametros en vez de dos y como sql separa en sus procedimientos por comas esto no poria ser jamas, bueno la solucion era muy facil solo habia que cambiar el FloatToStr(ValorModificadoProducto); por + Chr(39) + ValorModificadoProducto + Chr(39); con esto el digo al procedimiento que todo lo que este entre Chr(39) quede como string ya que Chr(39) es el codigo ascci de el caracter ' bueno deje el procedimiento asi
con eso quedaria asi SP_MODIFICA_PRODUCTO 1,'dsdad' ok eso seria muchas gracias por la ayuda que me dieron, espeor le sirva a alguien eso gracias a todos ya resolvi el problema |
Al final de cuentas no le veo sentido a que uses store procedures para una modificacion de este tipo ya que lo puedes usar directamente, salvo que tengas mas acciones dentro del STOREPROCEDURE realices mas acciones.
que segun tu codigo seria
En fin, al final de cuentas siempre se pueden inventar muchos caminos para llegar a ROMA... Jejeje SAUDOS.. |
hola no sabia que existia el storedprocedure para ejecutar procedimientos de sql es que la verdad es que me manejo de manera bastante pobre en delphi no asi en java que es mi fuerte y como todo es tan diferente en java a como lo es en delphi y de delphi la verdad no he visto hace bastante tiempo, aun tengo instalada la version 6 y que es la que mas me gusta jejeje pero como aca en el trabajo estan haciendo cosas en delphi me sirvio para recordar este lenguaje, bueno agradezco la ayuda, gracias por los consejos
y si tienes mucha razon hay muchos caminos para llegar a roma jejjejeeje saludos |
| La franja horaria es GMT +2. Ahora son las 08:25:53. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi