Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Ayuda con consulta Upadate y Delphi (https://www.clubdelphi.com/foros/showthread.php?t=67474)

abdielalej 19-04-2010 14:56:18

Ayuda con consulta Upadate y Delphi
 
Buenas y muchas gracias a todos...

Necesito actualizar un campo de una tabla con un valor calculado...pero Access me da el sgte error: necesita usar una consulta actualizable

Por favor necesito ayuda o alguna otra idea, esta es la consulta que pongo en el Adoquery:

UPDATE tiendaproducto SET tiendaproducto.cantidad =[cant], tiendaproducto.importe = (Select producto.precio*[cant] From producto Where producto.nombreproducto=[producto])

O sea cuando le pongo la consulta de Selección da ese error...
Me han dado algunas soluciones...pero con código VBA...

Espero sus respuestas


Caral 19-04-2010 19:09:05

Hola
Me pregunto?
Por que no divides la consulta y el update?.
Primero se consulta y el dato del parametro se pasa al update.
Asi lo haria yo...
Saludos

Casimiro Notevi 19-04-2010 19:43:55

Está bien como lo quieres hacer, pero muchas veces es más cómodo hacer lo que comenta Caral: divide y vencerás :)

marcoszorrilla 19-04-2010 19:56:59

Yo también estoy con lo propuesto por Carlos incluso en alguna ocasión divido procesos en 2 ó 3 pasos y utilizo ficheros temporales.


Un Saludo.

abdielalej 19-04-2010 20:19:53

Hola a todos y muchas gracias...
Cómo podría pasarle el resultado de la consulta de selección que me calcule el importe que lo pondría ejemplo: AdoQueryCalcula_Imorte y tendría el otro: AdoQueryUpdate...

O sea... como le paso el resultado que devuelve AdoQueryCalcula_Imorte como parámetro a AdoQueryUpdate...

Creo que es una excelente idea...muchas gracias...

Caral 19-04-2010 20:38:23

Hola
Veamos una forma de hacerlo:
No me hagas mucho caso, es solo una idea.
Código Delphi [-]
AdoQueryCalcula_Imorte.Sql.Text:= 'Select (producto.precio*:cant) As Canti From producto Where producto.nombreproducto= :producto';
AdoQueryCalcula_Imorte.Parameters[0].Value:= TuDato1
AdoQueryCalcula_Imorte.Parameters[1].Value:= TuDato2
AdoQueryCalcula_Imorte.Open;

AdoQueryUpdate.Sql.Text:= ' UPDATE tiendaproducto SET tiendaproducto.cantidad = :cant1, tiendaproducto.importe = :Dato';
AdoQueryUpdate.Parameters[0].Value:= AdoQueryCalcula_Imorte.Filebyname('Canti').Value;
AdoQueryUpdate.Parameters[1].Value:= AdoQueryCalcula_Imorte.Filebyname('nombreproducto').Value;
AdoQueryUpdate.ExecSQL
Saludos

abdielalej 19-04-2010 20:52:07

Gracias a todos muchachos...bueno....al final en específico a caral... pero a todos muchas gracias...

Da gusto ver esas soluciones que ustedes dan y cómo se preocupan en ayudar a los que menos saben...nos animan a seguir...

GRACIAS DENUEVO A TODOS...


La franja horaria es GMT +2. Ahora son las 00:56:48.

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