Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Actualizar tabla en una factura (https://www.clubdelphi.com/foros/showthread.php?t=36639)

maravert 19-10-2006 10:22:43

Actualizar tabla en una factura
 
Hola, trabajo con Delohi 7 y Paradox.

Estoy capturando una factura en un Dbgrid que esta asociado a una tabla Ventas que tiene los campos (Clave, Cantidad, Precio, etc)

Despues de capturarlas necesito descontar el campo cantidad (Ventas) de otra tabla llamada Productos (Clave, Existencias, .... )para actualizar las existencias, es decir

Si vendo 20 productos los deberé descontar del stock (Tabla Prosuctos)

Estoy haciendolo con el codigo siguiente:


Código SQL [-]

Query2.close;
Query2.SQL.Clear;
Query2.SQL.Add('UPDATE Productos SET Existencias = :Actuales WHERE UPPER(Clave) LIKE UPPER(:Clave)');
Query2.ParamByName('Actuales').Value := Query2.fieldbyname ('Existencias').AsFloat - Table3.fieldbyname ('Cantidad').asfloat;
Query2.ParamByName('Clave').Value := Table3.fieldbyname ('Clave').asstring;
Query2.Open;





Me dice que no existe el campo Existencias aquí:


Código SQL [-]

Query2.ParamByName('Actuales').Value := Query2.fieldbyname ('Existencias').AsFloat







Espero mucho puedan ayudarme o decirme como realizar esta actuaización

Gracias

maeyanes 19-10-2006 15:52:53

Hasta donde puedo ver, Query2 tiene una sentencia Update con parámetros. Esta sentencia no devuelve campos, es por eso que Query2.FieldByName('Existencias') te marca ese error...

Esto no lo he probado, pero intenta hacerlo así:

Código Delphi [-]
Query2.Close;
Query2.Clear;
Query2.SQL.Add('UPDATE Productos SET Existencias = Existencias - :Cantidad WHERE UPPER(Clave) LIKE UPPER(:Clave)');
Query2.ParamByName('Cantidad').AsFloat := Table3.FieldByName('Cantidad').AsFloat;
Query2.ParamByName('Clave').AsString := Table3.FieldByName('Clave').AsString;
Query2.ExecQuery; // Usa este método en lugar de Open


Saludos...

maravert 20-10-2006 01:08:30

Gracias
 
Gracias por tu respuesta

Voy a checar ahora mismo.
muy agradecido, muy agradecido, muy agradecido

maravert 20-10-2006 01:29:15

Hola, gracias por turespuesta he probado el codigo que me has dado


Código Delphi [-]

Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('UPDATE Productos SET Existencias = Existencias - :Cantidad WHERE UPPER(Clave) LIKE UPPER(:Clave)');
Query2.ParamByName('Cantidad').AsFloat := Table3.FieldByName('Cantidad').AsFloat;
Query2.ParamByName('Clave').AsString := Table3.FieldByName('Clave').AsString;
Query2.Open; // Usa este método en lugar de Open






Pero me da este error:

Error creating cursor handle


Alguien podría ayudarme en esto?

Gracias de antemano

Lepe 20-10-2006 12:07:14

Maeyanes ya te lo dijo, pero se te habrá pasado por alto:

Cita:

Query2.ExecQuery; // Usa este método en lugar de Open
Edito: Usas la cláusula LIKE en tus consultas pero no usas ningún comodin, o bien usas:
Código SQL [-]
where upper(clave) = :Clave

o bien usas
Código Delphi [-]
Query2.ParamByName('Clave').AsString := QuotedStr(Table3.FieldByName('Clave').AsString + '%';
para añadirle el comodín y usar LIKE.

Obviamente no es lo mismo usar
"like" que usar "=", pero tú sabrás mejor qué quieres hacer.

Saludos


La franja horaria es GMT +2. Ahora son las 05:44:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi