Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   DB2 (https://www.clubdelphi.com/foros/forumdisplay.php?f=33)
-   -   Query1:Field no found (https://www.clubdelphi.com/foros/showthread.php?t=82979)

Juan Quintana 30-04-2013 01:18:16

Query1:Field no found
 
Estoy ejecutando un Tquery con Delphi 7 a una base de datos de DB2 UDV; el query se ejecuta correctamente y me regresa 30 registros; pero al tratar de accesar el valor de uno de los campos de la consulta del query, me da el error de field not found; sin embargo ya cheqe el nombre del campo y si existe tanto en la tabla como en la consulta. La coneccion que hago al DB2 es por ODBC y esta se hace correctamente, Alguien puede decirme por donde buscar la solucion a esto... de antemano gracias

cloayza 30-04-2013 03:56:48

Verifica los nombres de campos que te devuelve el query...

Supongo que estas accediendo al campo del query a travez de su nombre...

Código Delphi [-]
Query1.FieldByName('Nombre_Campo').Value; //Si es de esta forma verifica los nombres de campos que te devuelve el query

Código Delphi [-]
for i:=0 to Query1.FieldCount-1 do
     memo1.lines.add( Format('Campo %d: %s',[i, Query1.Fields[i].FieldName]));

Bueno eso por ahora...

Juan Quintana 30-04-2013 16:34:06

Hize lo que me sugeriste, de listar los campos que devuelve el query y cosa curiosa, solamente me lista los campos que en la tabla estan definidos como DATE o NUMBER, pero no me lista los campos que estan definidos como CHARACTER o como STRING y es por eso que me da el field no found; que tendria que hacer para que me aparezcan estos campos ?. Si consulto la propiedad FieldDef de la tabla a la que le estoy haciendo el query si me aparecen todos los campos

oscarac 01-05-2013 07:14:23

podrias colocar tu query?

Juan Quintana 02-05-2013 16:13:01

El query que estoy haciendo es:



QUERY1.SQL.Clear;
QUERY1.SQL.Add('SELECT * FROM PRODDTA.F0901 ' );
QUERY1.SQL.Add(' WHERE GMCO=''00013'' AND GMOBJ IN (''6250'',''6400'')');
query1.SQL.add(' and GMSUB=''020201''');
QUERY1.Open;
for i:=0 to Query1.FieldCount-1 do
memo1.lines.add( Format('Campo %d: %s',[i, Query1.Fields[i].FieldName]));


Cuando se ejecuta los anterior no me da error; pero en los los nombres de los campos que obtengo no me aparecen los campos que en la tabla PRODDTA.F0901 estan definidos como
CHARACTER o STRING. Asi que cuando ejecuto


LINEA:='AUX='+String(Query1.FieldValues['gmsub'])+'#'+
'NOM='+String(Query1.FieldValues['gmobj'])+'#';


me da el error de field no found

cloayza 02-05-2013 16:23:55

Podrías explicitar los campos que te estan dando problemas...y probar de esta forma...

Código Delphi [-]
QUERY1.SQL.Clear;
QUERY1.SQL.Add('SELECT GMCO, GMOBJ, GMSUB ');
QUERY1.SQL.Add('FROM PRODDTA.F0901 ' );
QUERY1.SQL.Add('WHERE GMCO=''00013'' AND GMOBJ IN (''6250'',''6400'')');
query1.SQL.add(' AND GMSUB=''020201''');
QUERY1.Open;
for i:=0 to Query1.FieldCount-1 do
        memo1.lines.add( Format('Campo %d: %s',[i, Query1.Fields[i].FieldName]));

LINEA:='AUX='+Query1.FieldByName('gmsub').AsString+'#'+
          'NOM='+Query1.FieldByName('gmobj').AsString+'#';

A ver como va la cosa...

Juan Quintana 02-05-2013 19:09:17

Lo intente como me sugeriste
Código Delphi [-]
QUERY1.SQL.Clear;
QUERY1.SQL.Add('SELECT GMCO, GMOBJ, GMSUB ');
QUERY1.SQL.Add('FROM PRODDTA.F0901 ' );
QUERY1.SQL.Add('WHERE GMCO=''00013'' AND GMOBJ IN (''6250'',''6400'')');
query1.SQL.add(' AND GMSUB=''020201''');
QUERY1.Open;
for i:=0 to Query1.FieldCount-1 do        
  memo1.lines.add( Format('Campo %d: %s',[i, Query1.Fields[i].FieldName]));
LINEA:='AUX='+Query1.FieldByName('gmsub').AsString+'#'+          'NOM='+Query1.FieldByName('gmobj').AsString+'#';
y me sigue dando el error; el error me lo da en el campo GMSUB

oscarac 03-05-2013 17:30:08

Puedes mostrar el error?
captura la pantalla y trata de adjuntarlo aqui
revisa bien la estructura de la tabla F0901
quiza el campo GMSUB no sea string


La franja horaria es GMT +2. Ahora son las 20:58:39.

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