PDA

Ver la Versión Completa : Query1:Field no found


Juan Quintana
30-04-2013, 01:18:16
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...


Query1.FieldByName('Nombre_Campo').Value; //Si es de esta forma verifica los nombres de campos que te devuelve el query



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...


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

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