Thank you.
Unforgivable oversight on our part.
G. N. Rao.
Hyderabad, India
Thank you.
Unforgivable oversight on our part.
Master, your great knowledge and your humility make you great, thank you.
Saludos,
Carlos Gallego
*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***
Mr. Rao and Mr Carlos:
With the advice of Mr. Gallego, now everything is going very well.
I already breathe better
Can you explain to me the function of the H and the S?
Thank you very much to both
With best regards
Armando,
The problem is related with xBrowse.
If you run your example without including the xBrowse instantiation
@ oBar:nHeight, 0 XBROWSE oBrw SIZE 0,-30 PIXEL OF oDlg ;
DATA SOURCE oRsHdr ;
COLUMNS "HDR_FOL","HDR_FDM","HDR_REF",;
"HDR_EOS",;
"HDR_TOU",;
....
and in exchange you use
cSql := "SELECT *,S.SUC_NOM FROM HdrVda H LEFT JOIN Branches S ON H.HDR_SUC = S.SUC_NUM ORDER BY HDR_FOL"
FW_OpenRecordSet( oCn , cSql )
xBrowse(oRsHdr)
You will see that the syntax without the "H" of the alias works correctly
But if you want to use @oBar:nHeight, 0 XBROWSE oBrw SIZE 0,-30 PIXEL OF oDlg .....
you have to write
cSql := "SELECT H.*,S.SUC_NOM FROM HdrVda H LEFT JOIN Branches S ON H.HDR_SUC = S.SUC_NUM ORDER BY HDR_FOL"
That is, forcing the identification of each object on the LEFT table with its alias "H".
I think it is something related to XBROWSE. Perhaps the master Rao can shed more light on this.
H and S are aliases to indentify LEFT and RIGHT tables (hdrvda and sucursales in your example). Each field in table hdrva will be invoked with prefix "H.": H.HDR_FOL, H.HDR_EOS, H.HDR_SUC, etc., and each field of table sucursales will be invoked with prefix "S.": S.SUC_NUM,
S.SUC_NOM. This is very usefull when you have a field with the same name in both tables you are joining.
Regards,
Saludos,
Carlos Gallego
*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***
Carlos:
it became very clear
Thank you.
With best regards