Page 1 of 1
xbrowse(autosort) + tdolphin - erro
Posted: Wed Nov 13, 2024 9:05 pm
by MGA
I have an object 'xbrowse', using tdolphin. The main query has a relationship between tables, which coincidentally has a field in the table with the same name: "key". But this field is not part of the query.
SELECT p.key, p.data, c.name FROM orders AS p LEFT JOIN customers AS c ON(c.code=p.code)
the browse works fine, however when clicking on the header (autosort) of the "key" column, an error is generated.
Note: When clicking on the header of the 'key' column, internally xbrowse does:
SELECT * FROM orders AS p LEFT JOIN customers AS c ON(c.code=p.code) ORDER by key
I believe this is the problem. How can I solve the situation?
example:
estrutura:
table pedidos:
chave
data
codigo
table clientes:
codigo
nome
chave
oQry := oServer:Query('SELECT p.chave, p.data, c.nome FROM pedidos AS p LEFT JOIN clientes AS c ON(c.codigo=p.codigo)'
@ 0,0 XBROWSE oBrowse OF oDialog OBJECT oQry AUTOCOLS AUTOSORT LINES
with object oBrowse:oCol(1)
:cHeader := 'Chave'
:cEditPicture := '@!'
:bEditValue := {|| oQry:chave}
end
with object oBrowse:oCol(2)
:cHeader := 'Data'
:cEditPicture := '@!'
:bEditValue := {|| oQry:data}
end
Error description: Error MYSQL/1052 Column 'chave' in order clause is ambiguous
Stack Calls
===========
Called from: .\source\prg\tdolpsrv.prg => DOLPHIN_DEFERROR( 2807 )
Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:CHECKERROR( 793 )
Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:SQLQUERY( 2024 )
Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:LOADQUERY( 1145 )
Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:SETNEWFILTER( 1577 )
Called from: .\source\prg\tdolpqry.prg => (b)TDOLPHINQRY( 237 )
Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:SETORDER( 0 )
Called from: xbrowse.prg => TXBRWCOLUMN:SETORDER( 17428 )
Called from: xbrowse.prg => TXBRWCOLUMN:HEADERLBUTTONUP( 15938 )
Called from: xbrowse.prg => TXBROWSE:LBUTTONUP( 5157 )
Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1851
Re: xbrowse(autosort) + tdolphin - erro
Posted: Wed Nov 13, 2024 10:50 pm
by cmsoft
Prueba de esta forma:
Code: Select all | Expand
#include "FiveWin.ch"
#include "xBrowse.ch"
#include "tdolphin.ch"
function Main()
LOCAL oForm, oServer, oQry, oBrw
CONNECT oServer HOST 'localhost' ;
USER 'root' ;
PASSWORD 'miclave' ;
PORT 3306 ;
FLAGS 0;
DATABASE 'test'
oQry := oServer:Query('SELECT p.chave as chave, p.data as data, c.nome as nome FROM ped AS p LEFT JOIN cli AS c ON(c.codigo=p.codigo)')
DEFINE DIALOG oForm TITLE "MGA" FROM 05,10 TO 42,100
@ 00,00 XBROWSE oBrw DATASOURCE oQry;
COLUMNS "chave","data","nome";
HEADERS "Chave","Data","Nome";
SIZES 100,300,100;
OF oForm SIZE 340,215 PIXEL AUTOSORT LINES
oBrw:CreateFromCode()
ACTIVATE DIALOG oForm CENTER
RETURN nil
Re: xbrowse(autosort) + tdolphin - erro
Posted: Thu Nov 14, 2024 2:31 pm
by MGA
cmsoft,
Friend, thanks for answering.
The problem happens when there is ORDER BY in the query. I redid it below in your code, and the error occurs. Without ORDER BY, there is no error.
#include "FiveWin.ch"
#include "xBrowse.ch"
#include "tdolphin.ch"
function Main()
LOCAL oForm, oServer, oQry, oBrw
CONNECT oServer HOST 'localhost' ;
USER 'root' ;
PASSWORD 'miclave' ;
PORT 3306 ;
FLAGS 0;
DATABASE 'test'
oQry := oServer:Query('SELECT p.chave as chave, p.data as data, c.nome as nome FROM ped AS p LEFT JOIN cli AS c ON(c.codigo=p.codigo) ORDER BY p.chave')
DEFINE DIALOG oForm TITLE "MGA" FROM 05,10 TO 42,100
@ 00,00 XBROWSE oBrw DATASOURCE oQry;
COLUMNS "chave","data","nome";
HEADERS "Chave","Data","Nome";
SIZES 100,300,100;
OF oForm SIZE 340,215 PIXEL AUTOSORT LINES
oBrw:CreateFromCode()
ACTIVATE DIALOG oForm CENTER
RETURN nil
Re: xbrowse(autosort) + tdolphin - erro
Posted: Thu Nov 14, 2024 4:39 pm
by cmsoft
Esto no me produce error:
Code: Select all | Expand
#include "FiveWin.ch"
#include "xBrowse.ch"
#include "tdolphin.ch"
function Main()
LOCAL oForm, oServer, oQry, oBrw
CONNECT oServer HOST 'localhost' ;
USER 'root' ;
PASSWORD 'miclave' ;
PORT 3306 ;
FLAGS 0;
DATABASE 'test'
oQry := oServer:Query('SELECT p.chave as chave, p.data as data, c.nome as nome FROM ped AS p LEFT JOIN cli AS c ON(c.codigo=p.codigo) ORDER BY p.chave')
DEFINE DIALOG oForm TITLE "MGA" FROM 05,10 TO 42,100
@ 00,00 XBROWSE oBrw DATASOURCE oQry;
COLUMNS "chave","data","nome";
HEADERS "Chave","Data","Nome";
SIZES 100,300,100;
OF oForm SIZE 340,215 PIXEL AUTOSORT LINES
oBrw:CreateFromCode()
oBrw:aCols[1]:SetOrder()
ACTIVATE DIALOG oForm CENTER
RETURN nil
Re: xbrowse(autosort) + tdolphin - erro
Posted: Thu Nov 14, 2024 6:30 pm
by MGA
Here the error occurs, it seems that internally xbrowse does SELECT *... see the error log
Time from start: 0 hours 1 mins 17 secs
Error occurred at: 14/11/2024, 15:28:38
Error description: Error MYSQL/1052 Column 'chave' in order clause is ambiguous
Stack Calls
===========
Called from: .\source\prg\tdolpsrv.prg => DOLPHIN_DEFERROR( 2807 )
Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:CHECKERROR( 793 )
Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:SQLQUERY( 2024 )
Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:LOADQUERY( 1145 )
Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:SETNEWFILTER( 1577 )
Called from: .\source\prg\tdolpqry.prg => (b)TDOLPHINQRY( 237 )
Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:SETORDER( 0 )
Called from: xbrowse.prg => TXBRWCOLUMN:SETORDER( 17432 )
Called from: xbrowse.prg => TXBRWCOLUMN:HEADERLBUTTONUP( 15938 )
Called from: xbrowse.prg => TXBROWSE:LBUTTONUP( 5157 )
Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1851 )
Called from: xbrowse.prg => TXBROWSE:HANDLEEVENT( 12642 )
Called from: .\source\classes\window.prg => _FWH( 3653 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\window.prg => TMDIFRAME:ACTIVATE( 1114 )
Called from: mga.prg => MGASISTEMAS( 302 )
Called from: mga.prg => MAIN( 79 )
System
======
CPU type: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz 3392 Mhz
Hardware memory: 8099 megs
Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %
Windows total applications running: 1
1 ,
Variables in use
================
Procedure Type Value
==========================
DOLPHIN_DEFERROR
Param 1: O Class: ERROR
TDOLPHINSRV:CHECKERROR
Param 1: O Class: TDOLPHINSRV
Param 2: N 1052
Param 3: L .F.
Param 4: C ""
Local 1: C ""
Local 2: O Class: ERROR
TDOLPHINSRV:SQLQUERY
Local 1: N 1052
Local 2: U
Local 3: L .F.
TDOLPHINQRY:LOADQUERY
Param 1: C "SELECT * FROM nfsaida AS nf LEFT JOIN pedidos AS p ON (nf.chave=p.chave) LEFT JOIN clientes AS c ON (nf.cliente = c.codigo) WHERE IF(nf.filialfiscal!=0,nf.filialfiscal,nf.filial) = 1 AND nf.emissao BETWEEN '2024-11-01' AND '2024-11-30' AND COALESCE(nf.notaservico, 0 ) = 0 ORDER BY chave"
Local 1: N 287
Re: xbrowse(autosort) + tdolphin - erro
Posted: Fri Nov 15, 2024 2:33 am
by cmsoft
MGA wrote:
Param 1: C "SELECT * FROM nfsaida AS nf LEFT JOIN pedidos AS p ON (nf.chave=p.chave) LEFT JOIN clientes AS c ON (nf.cliente = c.codigo) WHERE IF(nf.filialfiscal!=0,nf.filialfiscal,nf.filial) = 1 AND nf.emissao BETWEEN '2024-11-01' AND '2024-11-30' AND COALESCE(nf.notaservico, 0 ) = 0 ORDER BY chave"
Esta es otra consulta totalmente diferente.
Cual es la consulta original que usas?
El ejemplo que yo te pase, te da errores en tu computadora?
Re: xbrowse(autosort) + tdolphin - erro
Posted: Fri Nov 15, 2024 2:42 am
by nageswaragunupudi
Here the error occurs, it seems that internally xbrowse does SELECT *... see the error log
There is NO problem with XBrowse.
XBroswe does not make any SELECT queries.
XBrowse simply calls
Your error is occurring inside Dolphin Qry's SetOrder method.
The problem must be with the names you used to prepare your query.