Skip to content

FUNCTION SR_SubQuoted #20

@sygecom

Description

@sygecom

Mestre Marcos.

Tive que fazer uma alteração aqui no SQLRDD depois de muito teste.
Por algum motivo na versão xHarbour ( lib compilada que tenho aqui antiga ) dava certo e no Harbour dava errado.
Sempre que usava a function SR_cDBValue que por sua vez chama a function SR_SubQuoted, com campos vazio( ex: SR_cDBValue('')) ele gerava um E'' e, isso quebrava na hora de gerar os retortos para mostrar em tela ou gerar macro conforme exemplo abaixo:
cADD:=''
aCOL:=DBSTRUCT() // aqui pega uma estrutura de uma tabela minha
FOR mY:=1 TO LEN(aCOL)
IF alltrim(aCOL[mY,1])='NUMBOL'
cADD+='0,'
ELSEIF alltrim(aCOL[mY,1])='ORDEM_NRO_IMPR'
cADD+='0,'
ELSEIF alltrim(aCOL[mY,1])='MEDIA_VOLUME'
cADD+='0,'
ELSEIF alltrim(aCOL[mY,1])='QTD'
cADD+='0,'
ELSEIF alltrim(aCOL[mY,1])='PRODUTO'
cADD+="'',"
ELSE
IF VALTYPE(RETORNA_TIPO_CAMPO('ORDEM',alltrim(aCOL[mY,1])))='D'
cADD+='CTOD(SPACE(8)),'
ELSEIF VALTYPE(RETORNA_TIPO_CAMPO('ORDEM',alltrim(aCOL[mY,1])))='L'
cADD+='.F.,'
ELSE
cADD+=CS(RETORNA_TIPO_CAMPO('ORDEM',alltrim(aCOL[mY,1])))+","
ENDIF
ENDIF
NEXT
cADD+="0,'','',0"
aVET:={{ &cADD }}

Colocando para ver na tela o que cada versão gerou:
cADD:="0,E'',E'',E'',E'',E'',E'',E'',E'',E'',CTOD(SPACE(8)),E'',E'',E'',E'',0,'','',0," //HARBOUR
cADD:="0,'','','','','','','','','',CTOD(SPACE(8)),'','','','',0,'','',0" //XHARBOUR(versão do SQLRDD antes de abrirem como opensource)

Então acabei mudando em UTILS.PRG para comentar as linhas 595 e 596, conforme abaixo:
image

Eu testei com: POSTGRESQL 9.5, 10, 13 e 16 e deram varios SQL certo depois dessa alteração.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions