Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problema con el table.edit (https://www.clubdelphi.com/foros/showthread.php?t=34590)

joako 14-08-2006 23:01:46

problema con el table.edit
 
hola amigos, no soy programador, pero por cuestiones laborales necesito hacer un sistema. estoy atorado con la actualizacion de registros.

es un modulo de compras, voy ingresando las claves y si ingreso una clave que ya esta en la lista (dbgrid ligado a una tabal de mysql) debe preguntarme si lo deseo sumarselo a la cantidad anterior.

el problema es que no se como decirle que me cambie los campos de un registro especifico.

espero haberme explicado

query1.SQL.clear;
query1.SQL.Add('select * from entradatemp WHERE id_producto="'+edit2.Text+'" ');
query1.Open;

//aqui cargo los campos a unos edits y hago las sumas
edit4.Text:=inttostr(strtoint(edit4.Text)+query1.fieldbyname('cantidad').AsInteger);
edit6.Text:=floattostr(strtoint(edit4.Text)*strtofloat(edit5.Text));

//aqui debe ingresar el valor de los edits, pero siempre modifica el primer registro de mi tabla
//como le hago para k me modifique un campo donde coincida con la clave del producto??

table1.Edit;
table1.FieldByName('cantidad').AsInteger:=strtoint(edit4.Text);
table1.FieldByName('importe').AsFloat:=strtofloat(edit6.Text);
table1.Post;

gracias

roman 14-08-2006 23:11:11

Primero debes colocar table1 en el registro adecuado. Prueba con una instrucción Locate, algo como:

Código Delphi [-]
table1.Locate('id_producto', [edit2.text]);

// Saludos

joako 14-08-2006 23:15:49

gracias por tu respuesta, pero me arroja un error esa sentencia:

[Error] entradas.pas(167): Ordinal type required

sabes a que se debe?

grax

roman 14-08-2006 23:21:05

Lo dije un poco de memoria. Creo que más bien debe ser:

Código Delphi [-]
table1.Locate('id_producto', edit2.Text, []);

De cualquier forma consulta la ayuda de Delphi acerca del método Locate de TDataSet para ver cuál es la sintaxis correcta.

// Saludos

joako 15-08-2006 00:03:07

Cita:

Empezado por roman
Lo dije un poco de memoria. Creo que más bien debe ser:

Código Delphi [-]table1.Locate('id_producto', edit2.Text, []);


De cualquier forma consulta la ayuda de Delphi acerca del método Locate de TDataSet para ver cuál es la sintaxis correcta.

// Saludos

ya lo he intentado de varias formas y no me hace los cambios en el registro correcto.
segun la ayuda de delpi la sintaxis esta bien, alguien ve cual es el problema:

Código SQL [-]table1.Locate('id_producto',edit2.Text,[lopartialkey]); table1.Edit; table1.fieldbyname('cantidad').AsInteger:=strtoint(edit4.Text); table1.FieldByName('importe').AsFloat:=strtofloat(edit6.Text); table1.Post;


Gracias

joako 15-08-2006 00:05:13

update!!
 
lo he intentado tambien con el UPDATE, pero no busco como ingresar los campos de tipo integer y float

Código SQL [-]
query1.SQL.Clear;      
query1.SQL.Text:='UPDATE entradatemp SET (cantidad:=edit4.text, importe:=edit6.text) WHERE id_producto="'+edit2.Text+'" ';      
query1.ExecSQL;


Grax ;)

Enan0 15-08-2006 01:28:42

Cita:

Empezado por joako
lo he intentado tambien con el UPDATE, pero no busco como ingresar los campos de tipo integer y float

Código SQL [-]query1.SQL.Clear; query1.SQL.Text:='UPDATE entradatemp SET (cantidad:=edit4.text, importe:=edit6.text) WHERE id_producto="'+edit2.Text+'" '; query1.ExecSQL;



Grax ;)


Mira ahi esta el problema el DElimitador de String es ' en SQL el mismo que en delphi..
entonces tenes que hacer lo siguiente

Código SQL [-]
query1.SQL.Clear;      
query1.SQL.Text:='UPDATE entradatemp SET (cantidad,importe) values('+#39+edit4.text+#39+','+#39+edit6.text+#39+') WHERE id_producto='+#39+edit2.Text+#39';      
query1.ExecSQL;

Como veras Puse varias Veces el Codigo #39 en delphi es ' por lo tanto estas introduciendo dicho valor a la cadena de SQL sin cortar el Srting.
Ahora Tenes que ver Si Cantidad son de tipo Numerico o String. como yo lo he puesto supongo que son del tipo STring.

Saludos


La franja horaria es GMT +2. Ahora son las 20:02:10.

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