Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   indexfieldnames, field not found (https://www.clubdelphi.com/foros/showthread.php?t=71670)

anubis 02-01-2011 19:21:14

indexfieldnames, field not found
 
Buenas de nuevo,
Aqui sigo peleando;).

Intento poner un query1.indexfieldnames:='codigo';
pero a la hora de ejecutar el programa me dice que field not found 'codigo'.

En tiempo de diseño, si le meto en propiedades al query en indexfieldnames si me lo acepta y me lo ordena, pero en ejecucion no.

Ya probe a desactivar el query antes de usarlo y viceversa, a cerrar el query antes de y a abrirlo despues de.

No entiendo porque no le lo admite.

un saludo y gracias

marcoszorrilla 02-01-2011 19:42:09

Que yo sepa el Query no tiene la propiedad IndexFieldNames, sino la Tabla prueba con una tabla y verás como funciona, tienes que poner el nombre del campo indexado no el nombre del índice.

Si quieres poner el nombre del índice utiliza IndexName.

Un Saludo.

anubis 02-01-2011 19:48:28

gracias.

El caso es que ya lo habia usado pero con sqlite en vez de firebird. Pero de todas formas en la propiedad del tzquery (zeos) si me aparece indexfieldnames, y en timepo de diseño si se ve que funciona el indexado poniendo el mismo campo.

No se que pasa la verdad.

anubis 02-01-2011 22:44:38

Hola denuevo,

Es una cosa curiosa lo que pasa.

Al crear el form, le pongo

query1.sql.clear;
query1.sql.text:='select * from lineasventa';
query1.sql.text:='select max(codigo) AS CONTADOR from lineasventa';
query1.Open;
CONTADORREGIS:=query1.fieldbyname('coNTADOR').AsInteger;

**Esto último para que señale el ultimo registro puesto que nose como aplicarlo al generador de autoincremento que aplique en la tabla.**

query1.open;

Eso me funciona, pero si le pongo otra línea

query1.sortedfields:='codigo';

me dice que no lo encuentra.

En cambio en otro procedimiento que aplico lo mismo si me funciona y en otro diferente no.


Sabeis a que se puede deber?, estan mal aplicadas las instrucciones?.

Casimiro Noteví 02-01-2011 22:51:14

Cita:

Empezado por anubis
query1.sql.clear;
query1.sql.text:='select * from lineasventa';
query1.sql.text:='select max(codigo) AS CONTADOR from lineasventa';

query1.Open;
CONTADORREGIS:=query1.fieldbyname('coNTADOR').AsInteger;
query1.open;
Eso me funciona, pero si le pongo otra línea

El primer query1.sql.text le dices que es "select * from lineasventa'
Luego le asignas: select max(codigo) AS CONTADOR from lineasventa
O sea, la primera asignación no sirve para nada.

anubis 02-01-2011 23:36:51

cierto casimironotevi, ya me di cuenta ;), le fui cambiando y quitando lo que no sirve para ver un poco mas donde esta el problema, pero sigo sin saber porque en algunos sitios me funciona el sort y en otros me dice que no existe el campo.

:(

pacopenin 03-01-2011 12:41:31

Hola.

Date cuenta que el sql que se ejecuta es
Código Delphi [-]
query1.sql.text:='select max(codigo) AS CONTADOR from lineasventa';
Ahí no devuelve ningún campo que se llame codigo, mientras que en
Código Delphi [-]
query1.sql.text:='select * from lineasventa';
devuelve todos los campos de la tabla, que probablemente contendrá codigo.

Saludos,

anubis 03-01-2011 15:10:04

Gracias pacopenin,

Correcto, por eso despues de poner eso, le vuelvo a poner:

Código Delphi [-]
zconnection1.Database:='g:\leerdes\ventas.fdb';
  zconnection1.Connected:=true;
  qquery1.Connection:=zconnection1;
  query1.sql.clear;
  query1.sql.text:='select max(codigo) AS CONTADOR from lineasventa';
  query1.Open;
    CONTADORREGIS:=query1.fieldbyname('coNTADOR').AsInteger;

query1.clear;
query1.sql.text:='select * from lineasventa';
query1.open;
query1.sortedfields:='codigo';
query1.open;

No tendría porque no dejarme ordenarlo.

Por lo que estoy viendo, al aplicar despues
Código Delphi [-]
query1.sql.text:='select max(codigo) AS CONTADOR from lineasventa';

antes tengo que poner en blanco el sortedfields
y si, efectivamente así funciona mejor.


Por cierto, a grandes rasgos, cual es la diferencia para estas cosas entre activar y abrir.?
Me imagino que el open cuando has ingresado alguna modificacion o insertado algun registro y el active es simplemente para consultas?


La franja horaria es GMT +2. Ahora son las 06:36:25.

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