Actualizar columna de saldo

Hola experto tengo un problema en cuanto a actualizar mi columna saldo de mi tabla artículos en mysql desde foxpro como puedes ver te paso las sentencias que estoy utilizando en mi formulario donde quiero ejecutar las compras me guarda y me modifica correctamente en mi tabla detalle de compra pero necesito que me actualize mi saldo de mi tabla artículos al momento de guardar cada cantidad por registro ahora la sentencia que he utilizado para querer actualizar mi saldo es esta.      ssql="update articulos set saldo=saldo + cantidad where codarticulo='saldo'"
Pero al momento de guardar el registro no me actauliza mi saldo, pues la verdad no se donde estoy fallando quiero que me aclares mis errores por favor. Disculpa soy nuevo en mysql y por favor quiero que me muestres que parámetros me faltan y en que parte de mi código ubicarlo.
if  modificar=.f. Then
aca pongo las variables que estoy declarando por cada campo
ssql="insert into detcomp (nofactura,codArticulo,nombre,Cantidad) values "
ssql=ssql+ " ('" + mNFact + "','" + mCodArt + "','" + mnom + "'," + mcant + ")"
else
aca de nuevo pongo las variables que estoy declarando por cada campo
 ssql="update detcomp set nombre='"+mnom+"',Cantidad='"+mcant+"' Where codArticulo='"+mCodArt+"'"
 endif
resp = sqlexec(cn,ssql)
if resp >= 1 then
thisform.txtCodArt. Limpio los datos
Endif
Thisform. Refresca

1 Respuesta

Respuesta
1
Espero poder ayudarte:
Para no hacer muy extensa mi respuesta te pido que pruebes poniendo el signo de interrogación delante de las variables que pasas como parámetro.. por ejemplo
"update articulos set saldo=saldo+?mCantidad where codArticulo=?mCodigo"
¿Ponelo en? ¿MNfact,? MCodArt, etc.
¿Las variables que envías hacia el mySql llevan el signo? Delante.
Después de este paso veremos si no actualiza o si hay otro problema
Otra cosa es capturar el error y mostrarlo, así no estas adivinando si resp viene en -1
Así:
if resp>0
....
else
   aError(queError)
   wait queError(1,2) window
Endif
Eso te va a decir cual es el error que se produce en mySql.
Espero que haya sido de utilidad
OK probare haber si me funciona luego te aviso de los resultados que tuve.
Hola.
Puse en praticas tus respuesta pero la verdad que el programa me guarda los registros y me los modifica a la base de datos de mysql de mi tabla detallecompras y compras lo que necesito es actualizar desde mi formulario que consta con estas dos tablas a la tabla artículos de su columna saldo pero las sentencias que me pasaste no efectuaron nada me sigue guardando pero no me actualiza la columna saldo de mi tabla artículos no se donde esta el error nuevamente te pido que me ayudes, el error lo e capturado en tiempo de ejecución pero no me muestra su linea. Nuevamente te pido disculpas por que soy novato en mysql por eso te pido me aclares un poco detenidamente.
Si al ejecutar la sentencia sql viene -1 en la respuesta, quiere decir que el error se produce en mySql. Por eso que aError() captura el dato y lo pone en el array queError.
En realidad yo no te pase una sentencia, sino un ejemplo de como se pasan variables al odbc, siempre con el signo de interrogación delante.
Particularmente en esta linea:
ssql="update detcomp set nombre='"+mnom+"',Cantidad='"+mcant+"' Where codArticulo='"+mCodArt+"'"
Cambia la manera de trabajar. No uses +, por ejemplo mcant es numérico y lo sumas a una cadena entonces no funciona.
Tienes que trabajar como siempre, sin cambiar el tipo de datos a solo efecto de pasarlo, acostumbrate a trabajar como si estuvieras trabajando con el sql del fox. Yo te paso el ejemplo para esa linea puntual.
mNom='Christian'
mCant=12.4
mCodArt="ART123"      &&Supongo que es de caracteres
ssql="update detcomp set nombre=?mNom, cantidad=?mCant where codArticulo=?mCodArt"
¿Viste qué es mucho más fácil?
Incluso podes hacer referencia a cualquier dato local.. por ejemplo:
update detcomp set nombre=?miTabla.nombre
Estoy a tu disposición.
Un abrazo
Hola:
Me sirvió de gran manera tu ayuda, sabes al parecer si tenia ese problema donde estaba mandando variables al odbc solo del tipo carácter y con tu forma de cambiar las variables he podido resolver el problema ahora mi columna saldo actualiza, ¿pasando a esta forma?mCant la variable es más fácil y más eficaz de antemano te agradezco mil gracias por tu respuesta brillantes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas