Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   problemas con parametros (https://www.clubdelphi.com/foros/showthread.php?t=57885)

pollo_c 01-07-2008 13:56:23

problemas con parametros
 
hola amigos les pido una ayuda, tengo un programa para una biblioteca muy simple con cuatro tablas alumnos, libros, prestamos y prestamos_detalle, al correr mi programa no me marca ningún error pero al llegar al siguiente código:

MD.Caux.SQL.Clear;
MD.Caux.SQL.Add('insert into alumnos values (:v1,:v2,:v3,:v4,:v5,:v6');
MD.Caux.Params.Items[0].AsString:=Edit1.Text;
MD.Caux.Params.Items[1].AsString:=Edit2.Text;
MD.Caux.Params.Items[2].AsString:=Edit3.Text;
MD.Caux.Params.Items[3].AsString:=Edit4.Text;
MD.Caux.Params.Items[4].AsString:=Edit5.Text;
MD.Caux.Params.Items[5].AsString:=Edit6.Text;
MD.Caux.ExecSQL();
Donde:
MD =Objeto Modulo de datos.
Caux= objeto Query.
Aparece el siguente error project1.exe raised exceptionclass EDBEEngineError with message ‘ Unexpected en of command. Token:?’
Saben a que se deba este error ?
Espero de su ayuda gracias

marcoszorrilla 01-07-2008 14:30:51

Por lo que veo te falta un paréntesis:

Cita:

Empezado por pollo_c (Mensaje 297393)
hola amigos les pido una ayuda, tengo un programa para una biblioteca muy simple con cuatro tablas alumnos, libros, prestamos y prestamos_detalle, al correr mi programa no me marca ningún error pero al llegar al siguiente código:

MD.Caux.SQL.Clear;
MD.Caux.SQL.Add('insert into alumnos values (:v1,:v2,:v3,:v4,:v5,:v6)');
MD.Caux.Params.Items[0].AsString:=Edit1.Text;
MD.Caux.Params.Items[1].AsString:=Edit2.Text;
MD.Caux.Params.Items[2].AsString:=Edit3.Text;
MD.Caux.Params.Items[3].AsString:=Edit4.Text;
MD.Caux.Params.Items[4].AsString:=Edit5.Text;
MD.Caux.Params.Items[5].AsString:=Edit6.Text;
MD.Caux.ExecSQL();
Donde:
MD =Objeto Modulo de datos.
Caux= objeto Query.
Aparece el siguente error project1.exe raised exceptionclass EDBEEngineError with message ‘ Unexpected en of command. Token:?’
Saben a que se deba este error ?
Espero de su ayuda gracias


Caro 01-07-2008 14:57:57

Hola, como te dice Marcos, le falta un parentesis y la comilla debe estar fuera del primer parentesis.

Código Delphi [-]
 MD.Caux.SQL.Add('insert into alumnos values (:v1,:v2,:v3,:v4,:v5,:v6)');

Saluditos

pollo_c 02-07-2008 06:17:38

hola amigos me sigue marcando mas errores
 
Hola amigos ya corregí el código del error del paréntesis pero me sigue marcando el siguiente error a la ora de ejecutar el query MD.Caux.ExecSQL; type mismatch in expression amigo ayúdenme a darle una checada a mi código quiero saber si se pueden usar parámetros de la manera que quiero usarlos, si le ven algo raro díganme por favor es que soy muy novato en delphi
Código Delphi [-]
 MD.Caux.SQL.Clear;
   MD.Caux.SQL.Add('insert into alumnos values (:v1,:v2,:v3,:v4,:v5,:v6)');
   MD.Caux.Params.Items[0].AsString:=Edit1.Text;
   MD.Caux.Params.Items[1].AsString:=Edit2.Text;
   MD.Caux.Params.Items[2].AsString:=Edit3.Text;
   MD.Caux.Params.Items[3].AsString:=Edit4.Text;
   MD.Caux.Params.Items[4].AsString:=Edit5.Text;
   MD.Caux.Params.Items[5].AsString:=Edit6.Text;
   MD.Caux.ExecSQL;

Caro 02-07-2008 14:06:11

Hola pollo_c, si se pueden usar los parametros de la forma que lo estas haciendo, pero también lo puedes hacer utilizando ParamByName de esta forma.

Código Delphi [-]
   MD.Caux.SQL.Clear;
   MD.Caux.SQL.Add('insert into alumnos values (:v1,:v2,:v3,:v4,:v5,:v6)');
   MD.Caux.ParamByName('v1').AsString:=Edit1.Text;
   MD.Caux.ParamByName('v2').AsString:=Edit2.Text;
   MD.Caux.ParamByName('v3').AsString:=Edit3.Text;
   MD.Caux.ParamByName('v4').AsString:=Edit4.Text;
   MD.Caux.ParamByName('v5').AsString:=Edit5.Text;
   MD.Caux.ParamByName('v6').AsString:=Edit6.Text;
   MD.Caux.ExecSQL;

Sobre el error que te marca, el tipo de dato que tienes en alguno de tus campos no esta coincidiendo con lo que le pasas en tus Edits, todos tus campos son String?? , ya que en todos utilizas AsString, que tampoco habría problema si le pasas como cadena el formato que necesita tu campo (Integer, Date....), si tienes diferentes tipos en tu tabla puedes utilizar AsInteger si es entero, AsDateTime (Fecha hora), AsDate (Fecha), AsFloat, AsBoolean......

Saluditos


La franja horaria es GMT +2. Ahora son las 22:37:30.

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