Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-04-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Cool Actualizando un Campo pasando Parametros con MyDac


Hola a todos, después de tanto andar con MyDac y MySQL empiezo poco a poco a entender este componente aunque me sigue fallando un poco mi programación . Vean tengo lo siguiente, Acabo de crear una tabla llamada AUTOS con los siguientes campos: Codigo,Cantidad,color y agregar
Autos
Codigo (txtcodigo)[Es un edit]
Cantidad (DBcantidad)[Es un DBedit3]
Color (DBcolor)[es un DBedit]
Agregar(txtagregar)[es un Edit]

Ahora lo que necesito es solamente ir incrementando mi campo CANTIDAD de acuerdo a lo que voy a ir agregando en el TXTAGREGAR. Ejemplo:

Si tengo 10 autos VW y agrego 2 mas en mi TXTAGREGAR, ahora debe mostrarme 12 en DBCANTIDAD.

He implementado lo siguiente:
1 MyQuery con el siguiente Código:

UPDATE autos
SET
cantidad = :cantidad + :agregar // Pasados como parametros
WHERE
codigo = :codigo // Pasado como parámetro

Se me hace que aqui debo implementar la clausula AS para guardar el valor de agregar, seguire analizando

En mi botón:

MyTable1.Edit;
QueryUpdate.Close;
QueryUpdate.SQL.Clear;
QueryUpdate.SQL.Text:='UPDATE autos SET cantidad='(+DBedit3.Text+)+(txtagregar))' WHERE codigo="'+txtcodigo.Text+'"';
QueryUpdate.Execute;
MyTable1.Post;
MyTable1.Refresh;

Tambien checando este codigo que implemento:
SQL.Add('UPDATE autos SET cantidad = cantidad + :agregar')
o
SQL.Add('UPDATE autos SET cantidad = cantidad + txtagregar')



Si el código de mi botón esta mal que es lo mas seguro, como puedo implementar la acción de sumar lo que tengo en DBCANTIDAD + TXTAGREGAR.

Gracias.

Atte.
Karla

Última edición por karlaoax fecha: 27-04-2007 a las 18:51:47.
Responder Con Cita
  #2  
Antiguo 27-04-2007
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
consejo, porque no usas format a veces las consultas salen más transparentes:


Código Delphi [-]

    QueryUpdate.SQL.Text:= format('UPDATE autos SET CANTIDAD=%d+%d WHERE codigo="%s" ', 
[ dbEdit3.field.asInteger, strToIntDef(txtAgregar.text, 0), txtCodigo.text ] );

bueno dije a veces

ah por cierto, en TDBEdit resulta mejor trabajar con la propiedad field que con el text
__________________
self.free;

Última edición por droguerman fecha: 27-04-2007 a las 19:17:06.
Responder Con Cita
  #3  
Antiguo 27-04-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Ok checo la sugerencia y nueva prueba

En este momento checando la sugerencia, y este codigo creado en MySQL

select SUM(cantidad)
as agregar // Aqui pongo la cantidad actual de autos
from autos
where codigo=:codigo


Ahora checare si lo obtenido se lo sumo a TXTAGREGAR

Sigo haciendo pruebas
Responder Con Cita
  #4  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se me parece que algo pasa aqui:
Código SQL [-]
//MyTable1.Edit;
QueryUpdate.Close;
QueryUpdate.SQL.Clear;
QueryUpdate.SQL.Text:='UPDATE autos SET cantidad= '+QuotedStr(DBedit3.Text)+ + +QuotedStr(txtagregar)+' WHERE codigo="'+QuotedStr(txtcodigo.Text)+'"';
QueryUpdate.Execute;
//MyTable1.Post;
No lo he probado asi que pues dudas.
Saludos
Responder Con Cita
  #5  
Antiguo 27-04-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Nop, de las dos sugerencias, no queda lo que deseo hacer, sigo revisando los errores
Responder Con Cita
  #6  
Antiguo 27-04-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
QueryUpdate.SQL.Text:='UPDATE productos SET stock= '+QuotedStr(DBedit3.Text)+ + +QuotedStr(txtagregar.Text)+' WHERE codigo="'+QuotedStr(txtcodigo.Text)+'"';


Duda, que me permite hacert QuoStr?
Necesito entenderlo por que me marca un error:
"INCOMPATIBLES TYPES: 'STRINGS' AND 'TEDIT'
Responder Con Cita
  #7  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Que se supone quieres hacer aqui

Cita:
QuotedStr(DBedit3.Text)+ + +QuotedStr(txtagregar.Text)
No deberia de ser algo asi

Cita:
QuotedStr(strtoint(DBedit3.Text)+strtoint(txtagregar.Text))
Porque me parece que no estas sumando valores, estas concatenado.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Bueno,

Hice una prueba con tu sentencia SQL y aqui te pongo lo que paso.

Primero modifique tu linea, no me compila tal como la pones

Cita:
QueryUpdate.SQL.Text:='UPDATE productos SET stock= '+QuotedStr(DBedit3.Text)+ + +QuotedStr(txtagregar.Text)+' WHERE codigo="'+QuotedStr(txtcodigo.Text)+'"';
los siignos de + rojos los quite y las " las cuales se sustituyen por la fuincion QuotedStr.

Código Delphi [-]
  //Sustitui los objetos por valores y quite algunos signos de +
  Cadena :='UPDATE productos SET stock= '+QuotedStr('123')+
           QuotedStr('567')+' WHERE codigo="'+QuotedStr('234');
  Memo1.Lines.Add(Cadena);
  Cadena :='UPDATE productos SET stock= '+
           QuotedStr(inttostr(strtoint('123')+strtoint('567')))+
           ' WHERE codigo='+QuotedStr('234');
  Memo1.Lines.Add(Cadena);

En el memo me sale esto, para cada sentencia

Cita:
UPDATE productos SET stock= '123''567' WHERE codigo="'234'
UPDATE productos SET stock= '690' WHERE codigo='234'
No es lo mismo no crees.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 27-04-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Analizando nuevamente la linea:

QueryUpdate.SQL.Text:='UPDATE productos SET stock= '+QuotedStr(strtoint(DBedit3.Text)+strtoint(txtagregar.Text)+' WHERE codigo="'+QuotedStr(txtcodigo.Text)+'"';

Me marca un error en: QuotedStr(txtcodigo.Text)+'"'

Incompatible types: 'String' and 'Integer'

Ya he checado vonviertiendolo a otro tipo, y nada

Sigo analizando
Responder Con Cita
  #10  
Antiguo 27-04-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Gracias EgoStar checare tu linea
Responder Con Cita
  #11  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Checa el codigo que acabo de poner, yo creo que es la solución.

De todos modos lo pongo de nuevo con los objetos que estas usando.

Código Delphi [-]
  QueryUpdate.SQL.Text :='UPDATE productos SET stock= '+
           QuotedStr(inttostr(strtoint(DBedit3.Text)+strtoint(DBedit3.Text)))+
           ' WHERE codigo='+txtcodigo.Text;

Cita:
Empezado por karlaoax
Me marca un error en: QuotedStr(txtcodigo.Text)+'"'

Incompatible types: 'String' and 'Integer'
El problema es que estas pasando el valor de codigo asi "123" y eso es un string no un entero.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #12  
Antiguo 27-04-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Thumbs up Ok

Muchas Gracias EgoStar, aqui pongo la modificacion:

QueryUpdate.Close;
QueryUpdate.SQL.Clear;
QueryUpdate.SQL.Text:='UPDATE productos SET stock= '+QuotedStr(inttostr(strtoint(DBedit3.Text)+strtoint(txtagregar.Text)))+' WHERE codigo='+txtcodigo2.Text;
QueryUpdate.Execute;

Codigo Funcionando al 100%

Gracias a todos los que me orientaron.

Solo una duda, no logro entender el funionamiento de QuotedStr
Responder Con Cita
  #13  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Muy cierto Egostar, el codigo modificado esta muy bien, bueno maestro al fin.
Con respecto a QuotedStr, se usa, bueno en este caso lo use, por el desconocimiento del campo, con esto parece hacer una traduccion o similar, egostar te puede decir mas.
Me alegro que allas resuelto el asunto.
Saludos
Responder Con Cita
  #14  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Pues solo basta con ver la ayuda de delphi.

QuotedStr Routine Returns the quoted version of a string.
Unit SysUtils

Syntax

[delphi]

function QuotedStr(const S: string): string;


Description Use QuotedStr to convert the string S to a quoted string. A single quote character (') is inserted at the beginning and end of S, and each single quote character in the string is repeated.

Note:
When working with multi-byte character systems (MBCS), use AnsiQuotedStr instead.


Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #15  
Antiguo 27-04-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Talking Gracias

Gracias por la explicacion

Gracias a todos los que me orientaron a traves de este codigo

Chocolates para todos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizando AdoQuery Nathan Conexión con bases de datos 3 05-05-2006 20:07:19
TWebModule actualizando respuestas... Xianto Internet 2 26-05-2005 18:33:08
Actualizando un campo... StartKill Firebird e Interbase 5 05-03-2004 20:50:54
Actualizando los TImage Magneto Varios 4 05-12-2003 07:40:55
Actualizando Firebird hgiacobone Conexión con bases de datos 5 09-06-2003 22:35:02


La franja horaria es GMT +2. Ahora son las 21:06: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
Copyright 1996-2007 Club Delphi