Buenos dias,
Tengo un TDBBrowse conectado a un dataset de clientes con el siguiente formato :
:cSelect:= Select clientes.*, ifnull(clientes.suspendido,0) AS suspendido, Trim(Concat(ifnull(localidades.nombre,''),' ',ifnull(provincias.nombre,'')) ) AS cLocalidad,
ifnull(tipoderesponsable.nombrer,'') AS cFiscal, ifnull(vendedores.codven,0) AS nVendedor, ifnull(comopaga.nombre,'') AS cPaga, "+;
ifnull(categorias.nombre,'') AS cCategoria
from clientes
LEFT JOIN localidades ON clientes.idlocalidad=localidades.id
LEFT JOIN provincias ON localidades.idprovincia=provincias.id
LEFT JOIN tipoderesponsable ON clientes.idfiscal=tipoderesponsable.id
LEFT JOIN vendedores ON clientes.idvendedor=vendedores.id
LEFT JOIN categorias ON clientes.idcategoria=categorias.id
LEFT JOIN comopaga ON clientes.idpaga=comopaga.id
ORDER BY clientes.nombre;
todo bien, muestra la info correcta, pero al digitar teclas (sobre el browse) para localizar un cliente me tira el siguiente error :
Date: 30-11-2019 11:26:24 User: Administrador
MariaDB Error:
select lista_id from (select IF( nombre LIKE 'M%', 1, 0) as lista_id, clientes.*, ifnull(clientes.suspendido,0) AS suspendido, Trim(Concat(ifnull(localidades.nombre,''),' ',ifnull(provincias.nombre,'')) ) AS cLocalidad, ifnull(tipoderesponsable.nombrer,'') AS cFiscal, ifnull(vendedores.codven,0) AS nVendedor, ifnull(comopaga.nombre,'') AS cPaga, ifnull(categorias.nombre,'') AS cCategoria FROM clientes LEFT JOIN localidades ON clientes.idlocalidad=localidades.id LEFT JOIN provincias ON localidades.idprovincia=provincias.id LEFT JOIN tipoderesponsable ON clientes.idfiscal=tipoderesponsable.id LEFT JOIN vendedores ON clientes.idvendedor=vendedores.id LEFT JOIN categorias ON clientes.idcategoria=categorias.id LEFT JOIN comopaga ON clientes.idpaga=comopaga.id WHERE ifnull(clientes.baja,'*')='*' ORDER BY clientes.nombre,clientes.id ) as tmp_sql
Column 'nombre' in field list is ambiguous [# 1052]
En procedimiento: TDBBROWSE:AUTOSEEK línea: 1444
Called from XMARIADBDATASOURCE:EXECUTE(0)
Called from TMARIADBDATASOURCE:EXECUTE(5044)
Called from TMARIADBRECORDS:LOCATE(4100)
Called from TSQLQUERY:LOCATE(813)
Called from TDBBROWSE:AUTOSEEK(1444)
Called from TDBBROWSE:ONSEEK(0)
Called from TDBBROWSE:SEEK(613)
Called from XBROWSE:WMCHAR(2433)
Called from TDBBROWSE:WMCHAR(629)
Called from RUNFORM(0)
Called from TAPPLICATION:RUN(289)
Called from MAIN(16)
:lAutoSeek esta en .t.
Interpreto que falta el alias de la tabla antes del campo, pero no sé como resolverlo.
Gracias!
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
TDBBrowse y lAutoSeek
- ignacio
- Site Admin
- Mensajes: 9256
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: TDBBrowse y lAutoSeek
Buenos días,
El motivo de ese error es porque hay más de una tabla con el nombre de campo 'Nombre' y en el proceso de filtrado Xailer y debido a la complejidad de la SELECT, Xailer no es capaz de construir la cadena de filtrado correctamente. Debido a que con esa complejidad es imposible que pueda editar el recodset, le recomiendo que simplemente utilice un TMemDataset. En este caso la ordenación y filtrado se hace en local sin tener que repetir la consulta y es infinitamente más rápido.
Una recomendación: Si no va a editar el recordset, SIEMPRE utilice un TMemDataset.
Saludos
El motivo de ese error es porque hay más de una tabla con el nombre de campo 'Nombre' y en el proceso de filtrado Xailer y debido a la complejidad de la SELECT, Xailer no es capaz de construir la cadena de filtrado correctamente. Debido a que con esa complejidad es imposible que pueda editar el recodset, le recomiendo que simplemente utilice un TMemDataset. En este caso la ordenación y filtrado se hace en local sin tener que repetir la consulta y es infinitamente más rápido.
Una recomendación: Si no va a editar el recordset, SIEMPRE utilice un TMemDataset.
Saludos
Re: TDBBrowse y lAutoSeek
Ignacio,
gracias por responder, supuse que venian por ahi los tiros, voy a probarlo como dices. gracias
gracias por responder, supuse que venian por ahi los tiros, voy a probarlo como dices. gracias