Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error Adoquery (https://www.clubdelphi.com/foros/showthread.php?t=62319)

odrack 16-12-2008 19:05:17

Error Adoquery
 
Que tal a todo el foro.

Tengo una consulta en adoquery donde busco ciertos campos, y al ejecutarla me arroja un error "invalid field size".

La consulta la he hecho asi:
Código Delphi [-]
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Text:='select * from compras where numreferencia='+quotedstr(edit1.text);
  adoquery1.ExecSQL;
//<--------Hasta aqui hace todo el proceso bien------->
  adoquery1.Open;

al ejecutarla me marca el error, he colocado algunos showmessage para identificar en que linea me provoca el error y he identificado que es al abrir la tabla.

Alguien sabe por que da este error??

egostar 16-12-2008 19:11:22

Hola

Cuando realizas un Select no necesitas ejecutar ExecSQL, solo debes usar Open. Quitale esa linea e intenta de nuevo.

Salud OS

Caral 16-12-2008 19:15:46

Hola
Me da la impresion de que (numreferencia) es un campo integer.
Ademas de que estas ejecutando y abriendo la consulta.
prueba asi:
Código Delphi [-]
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Text:='select * from compras where numreferencia = :Num';
  adoquery1.Parameters[0].value:= StrToInt(edit1.text);
  adoquery1.Open;
Saludos

odrack 16-12-2008 19:19:18

He probado de las dos formas y con ambas me sigue provocando el mismo error. :confused:

Mi campo numreferencia es de tipo char

Conexion que usa adoquery
Provider=MSDASQL.1;Password=prueba;Persist Security Info=True;User ID=root;Data Source=XXXX

Caral 16-12-2008 19:25:28

Hola
Código Delphi [-]
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Text:='select * from compras where numreferencia = :Num';
  adoquery1.Parameters[0].value:= edit1.text;
  adoquery1.Open;
Saludos

odrack 16-12-2008 19:27:37

Hola de nuevo caral

Ya habia intentado quitando el cambio a integer pero me sigue marcando el mismo error :(

Saludos

egostar 16-12-2008 19:29:03

Cita:

Empezado por odrack (Mensaje 331164)
He probado de las dos formas y con ambas me sigue provocando el mismo error. :confused:

Mi campo numreferencia es de tipo char

Conexion que usa adoquery
Provider=MSDASQL.1;Password=prueba;Persist Security Info=True;User ID=root;Data Source=XXXX

Hola

Una pregunta, ese campo es Char o VarChar, por otro lado si es char, cuantos caracteres estas enviando en el edit1.text, solo puedes enviar un caracter y tal vez por eso el error.

Salud OS

Caral 16-12-2008 19:29:09

Hola
Y no tendra que ver con el tamaño asignado al campo?.
Saludos

odrack 16-12-2008 19:30:28

El campo que utilizo para guardar la informacion es de tipo char con 20 caracteres, no creo que sea el error o que opinas??

saludos

egostar 16-12-2008 19:33:42

Cita:

Empezado por odrack (Mensaje 331170)
El campo que utilizo para guardar la informacion es de tipo char con 20 caracteres, no creo que sea el error o que opinas??

saludos

Me pregunto si modificaste el tamaño del campo en tu tabla después de que ya tenias tu programa :rolleyes:

Salud OS

Caral 16-12-2008 19:34:02

Hola
Siempre es dificil ver los errores sin la totalidad del codigo.
Aveces marca el error en un sitio y es en otro.
As usado F7 para probarlo?.
Saludos

odrack 16-12-2008 19:37:34

Saludos
egostar, no he modificado datos en mi base, aun que realmente no tiene por que afectar si estoy adicionando un modulo donde esoy creando mi consulta o estoy mal??:D

He modificado mi busqueda solo seleccionando los campos que necesito y me ha quedado asi:

Código Delphi [-]
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Text:='select numreferencia, clvarticulo, descripcion, cantidad, costo, dscto, monto from compras where numreferencia = Num';
  adoquery1.Parameters[0].Value:=edit1.text;
  adoquery1.Open;

ahora me marca un list out bonus:confused:

odrack 16-12-2008 19:42:57

He logrado resolver el problema con el codigo que ha puesto caral y lo he modificado con solo ciertos campos quedando asi:

Código Delphi [-]
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Text:='select numreferencia, clvarticulo, descripcion, cantidad, costo, dscto, monto from compras where numreferencia =:Num';
  adoquery1.Parameters[0].Value:=edit1.text;
  adoquery1.Open;

el list out bonus me daba por que me faltaban dos puntos ( : );


Gracias a todos por el apoyo!!:D

Caral 16-12-2008 19:48:47

Hola
Donde faltaban dos puntos?.
Saludos

odrack 16-12-2008 19:51:48

Hola

Lo que paso es que cuando copie tu codigo el SQL tenia todos los campos con la sentencia.

Código Delphi [-]
adoquery1.SQL.Text:='select * from compras where numreferencia = :Num';

Despues hice una sentencia con solo los campos que necesitaba pero no me percate de que me faltaban los dos puntos despues del igual ( = Num).

de hecho en el codigo que puse de list out bonus esta el error..

Gracias caral por el apoyo!!

egostar 16-12-2008 19:53:03

Cita:

Empezado por Caral (Mensaje 331180)
Hola
Donde faltaban dos puntos?.
Saludos

Aqui amigo aqui, no te aloques :D:D:D

Salud OS

Caral 16-12-2008 19:54:56

Hola
Ahora me hechas en cara que soy ciego.:D:D:D
Y eso que te gane, lero, lero.:D:D:D:D
Saludos

egostar 16-12-2008 19:57:23

Cita:

Empezado por Caral (Mensaje 331184)
Hola
Ahora me hechas en cara que soy ciego.:D
Y eso que te gane, lero, lero.:D
Saludos

:rolleyes::rolleyes::rolleyes:, bueno amigo, es que usted ya no es el novato que entro pidiendo ayuda, ahora es todo un "maistro", me alegra que el dinero invertido en su educación no fué tirado a la basura :D:D:D

Salud OS

Caral 16-12-2008 20:00:47

Hola
:D:D:D
Saludos

odrack 16-12-2008 20:55:13

Saludos!!

Suele pasar que se nos vaya un punto o no caral??:D

Por cierto, tengo entendido que con adoquery puedes modificar los datos directos en un dbgrid cosa que si he podido hacer, pero lo que no entiendo es por que solo puedo modificar el mismo numero de caracteres con el cual se leyo? por decir, si tengo un campo cantidad con el numero 10 equivale a 2 caracteres, a lo cual si quiero modificarlo por la cantidad 100 no puedo hacerlo ya que solo cuenta con 2 espacios, hay alguna forma que lo pueda modifcar sin esta restriccion??

Y gracias por todo su apoyo compañeros!!!:D


La franja horaria es GMT +2. Ahora son las 01:08:03.

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