× Linguagem de Programação ADVPL

Perguntas QUERY

Mais
9 anos 11 meses atrás #26695 por manoelcarlosjunior
QUERY foi criado por manoelcarlosjunior
Bom dia Pessoal gostaria de saber como faço para comparar em SQL parte de um de um campo com outro.

Exemplo.:

AB4_NUMOS = '00003301'

AB6_NUMOS = '000033'

Quer AB6_NUMOS seja igual a os 6 primeiros dígitos de AB4_NUMOS

pra jogar em uma clausula where ou num left join...


Se puderem me ajudar ...

Abraço,


Manoel Carlos Júnior

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #26696 por afppellegrini
Respondido por afppellegrini no tópico QUERY
Boa Tarde Manoel,
Você pode utilizar a função Substr

Ex:

substr(AB4_NUMOS , 1, 6) = AB6_NUMOS


Esperto ter ajudado!


Obrigado!

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #26699 por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico QUERY
Obriagado Andre Pellegrini me ajudou Bastante, só que quando faço no SQL executa normal mais no ponto de entrada em advpl ele não funciona.
Preciso fazer essas alteações automatística na rotina AB6_XORCA = AB4_NUMORC, AB6_XCHAM = AB4_NRCHAM

Segue abaixo o código.
Se puder me ajudar?!

Abraço

Manoel Carlos Júnior

User Function AT400GOS() // Ponto de entrada ja usado pela totvs
Local aArea := GetArea()
Local cQry := ""


cQry += " UPDATE "
cQry += " AB6010 "
cQry += " SET "
cQry += " AB6_ZZCLI = A1_NREDUZ "
cQry += " FROM "
cQry += " AB6010 AB6 "
cQry += " LEFT JOIN "
cQry += " SA1010 SA1 "
cQry += " ON "
cQry += " AB6_CODCLI = A1_COD "
cQry += " AND "
cQry += " AB6_LOJA = A1_LOJA "
cQry += " AND "
cQry += " SA1.D_E_L_E_T_ = '' "
cQry += " WHERE "
cQry += " AB6.D_E_L_E_T_ = '' "
cQry += " AND "
cQry += " AB6_ZZCLI = '' "



TCSQLExec(cQry)
RestArea(aArea)


Return
/************************************************************************************************/

User Function AT400GOS() // com os campo que eu preciso alterar automatica mente na rotina
Local aArea := GetArea()
Local cQry := ""


cQry += " UPDATE "
cQry += " AB6010 "
cQry += " SET "
cQry += " AB6_ZZCLI = A1_NREDUZ "
cQry += " FROM "
cQry += " AB6010 AB6 "
cQry += " LEFT JOIN "
cQry += " SA1010 SA1 "
cQry += " ON "
cQry += " AB6_CODCLI = A1_COD "
cQry += " AND "
cQry += " AB6_LOJA = A1_LOJA "
cQry += " AND "
cQry += " SA1.D_E_L_E_T_ = '' "
cQry += " WHERE "
cQry += " AB6.D_E_L_E_T_ = '' "
cQry += " AND "
cQry += " AB6_ZZCLI = '' "
cQry += " UPDATE " // a partir daqui minha alteração
cQry += " AB6010 "
cQry += " SET "
cQry += " AB6_XORCA = AB4_NUMORC, AB6_XCHAM = AB4_NRCHAM "
cQry += " FROM "
cQry += " AB6010 AB6 "
cQry += " LEFT JOIN "
cQry += " AB4010 AB4 "
cQry += " ON "
cQry += " AB6_FILIAL = AB4_FILIAL"
cQry += " AND "
cQry += " AB6_NUMOS = Left( AB4_NUMOS,6)"
cQry += " AND "
cQry += " AB4.D_E_L_E_T_ = '' "
cQry += " WHERE "
cQry += " AB6.D_E_L_E_T_ = '' "
cQry += " AND "
cQry += " AB6_ZZCLI = '' "



TCSQLExec(cQry)
RestArea(aArea)


Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #26700 por afppellegrini
Respondido por afppellegrini no tópico QUERY
Bom dia,
Veja se funciona dessa forma:

User Function AT400GOS() // com os campo que eu preciso alterar automatica mente na rotina
Local aArea := GetArea()
Local cQry := ""


cQry += " UPDATE "
cQry += " AB6010 "
cQry += " SET "
cQry += " AB6_ZZCLI = A1_NREDUZ "
cQry += " FROM "
cQry += " AB6010 AB6 "
cQry += " LEFT JOIN "
cQry += " SA1010 SA1 "
cQry += " ON "
cQry += " AB6_CODCLI = A1_COD "
cQry += " AND "
cQry += " AB6_LOJA = A1_LOJA "
cQry += " AND "
cQry += " SA1.D_E_L_E_T_ = '' "
cQry += " WHERE "
cQry += " AB6.D_E_L_E_T_ = '' "
cQry += " AND "
cQry += " AB6_ZZCLI = '' "

If (TCSQLExec(cQry) < 0)
    Return MsgStop("TCSQLError() " + TCSQLError())
EndIf

//Você tem que separar com pelo menos um ; (ponto e virgula) para executar duas sentenças SQL. Mas aconselho a executar uma por vez.

cQry := ""
cQry += " UPDATE " // a partir daqui minha alteração
cQry += " AB6010 "
cQry += " SET "
cQry += " AB6_XORCA = AB4_NUMORC, AB6_XCHAM = AB4_NRCHAM "
cQry += " FROM "
cQry += " AB6010 AB6 "
cQry += " LEFT JOIN "
cQry += " AB4010 AB4 "
cQry += " ON "
cQry += " AB6_FILIAL = AB4_FILIAL"
cQry += " AND "
cQry += " AB6_NUMOS = Left( AB4_NUMOS,6)"
cQry += " AND "
cQry += " AB4.D_E_L_E_T_ = '' "
cQry += " WHERE "
cQry += " AB6.D_E_L_E_T_ = '' "
cQry += " AND "
cQry += " AB6_ZZCLI = '' "

If (TCSQLExec(cQry) < 0)
    Return MsgStop("TCSQLError() " + TCSQLError())
EndIf

RestArea(aArea)


Return


**Obs. Não esqueça de colocar os includes.

Espero ter ajudado!


Obrigado!

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #26701 por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico QUERY
Cara não da erro nem nada mais não preenche o campo automatico, estranho é que quando pego a query mesmo as duas juntas no SQL funciona normal o UPDATE......

Bom to tentando por aqui

Muito obrigado André !!!

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #26734 por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico QUERY
É TEEETRAAAA!

Consegui Galera !!! Valeu o apoio de Vocês !!!
Foi erro de sintaxe mesmo !!! A peça a frente do computador rsrsr

Abraço


Query errada

cQry += " UPDATE " // Update analista totvs
cQry += " AB6010 "
cQry += " SET "
cQry += " AB6_ZZCLI = A1_NREDUZ "
cQry += " FROM "
cQry += " AB6010 AB6 "
cQry += " LEFT JOIN "
cQry += " SA1010 SA1 "
cQry += " ON "
cQry += " AB6_CODCLI = A1_COD "
cQry += " AND "
cQry += " AB6_LOJA = A1_LOJA "
cQry += " AND "
cQry += " SA1.D_E_L_E_T_ = '' "
cQry += " WHERE "
cQry += " AB6.D_E_L_E_T_ = '' "
cQry += " AND "
cQry += " AB6_ZZCLI = '' "
cQry += " "
cQry += " UPDATE " // a partir daqui minha alteração
cQry += " AB6010 "
cQry += " SET "
cQry += " AB6_XORCA = AB4_NUMORC, AB6_XCHAM = AB4_NRCHAM "
cQry += " FROM "
cQry += " AB6010 AB6 "
cQry += " LEFT JOIN "
cQry += " AB4010 AB4 "
cQry += " ON "
cQry += " AB6_FILIAL = AB4_FILIAL"
cQry += " AND "
cQry += " AB6_NUMOS = Left( AB4_NUMOS,6)"
cQry += " AND "
cQry += " AB4.D_E_L_E_T_ = '' "
cQry += " WHERE "
cQry += " AB6.D_E_L_E_T_ = '' "
cQry += " AND "
cQry += " AB6_ZZCLI = '' " Ja mencionado no primeiro update

cQry += " UPDATE " // a partir daqui minha alteração Manoel Carlos Junior 06/01/2015 Corrigida
cQry += " AB6010 "
cQry += " SET "
cQry += " AB6_XORCA = AB4_NUMORC, AB6_XCHAM = AB4_NRCHAM "
cQry += " FROM "
cQry += " AB6010 AB6 "
cQry += " LEFT JOIN "
cQry += " AB4010 AB4 "
cQry += " ON "
cQry += " AB6_FILIAL = AB4_FILIAL"
cQry += " AND "
cQry += " AB6_NUMOS = Left( AB4_NUMOS,6)"
cQry += " WHERE "
cQry += " AB6.D_E_L_E_T_ = ‘‘ "
cQry += " AND "
cQry += " AB4.D_E_L_E_T_ = ‘‘ "

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.131 segundos
Joomla templates by a4joomla