Clipper On Line • Ver Tópico - Transformar em SQl
Página 1 de 1

Transformar em SQl

MensagemEnviado: 04 Jan 2018 08:16
por andrelucass
Ola a todos

Estou migrando minha base de dados de DBF para postgresql, sou iniciante em sql, e gostaria de saber como transforma essa rotina de para sql.

while MovFun->(!eof())
if CadFun->(dbsetorder(1),dbseek(MovFun->CodFun))
while !CadFun->(Trava_Reg())
end
if MovFun->tipo == "1"
CadFun->SldFun += MovFun->Valor
else
CadFun->SldFun -= MovFun->Valor
end
CadFun->(dbunlock())
end
MovFun->(dbskip())


Atenciosamente
André Lucas Souza

Transformar em SQl

MensagemEnviado: 06 Jan 2018 12:56
por sygecom
André,
Até virar a chave, pode ser que você fique confuso, mas lhe garanto que em pouco tempo, vai começar a dominar a coisa, o SQL é fácil depois que pega o jeito, tudo fica mais fácil e transparente.

Existe varias formas de fazer isso.
Vou postar uns exemplos:
update cadfun as a set sldfun=a.sldfun+ a.valor+coalesce((select sum(valor) from movfun as b where  b.codfun=a.CODFUN and b.movfun='1'),0) - coalesce((select sum(valor) from movfun as b where  b.codfun=a.CODFUN and b.movfun<>'1'),0)

Nesse exemplo acima, estou pegando todos os cadastro de funcionários e, pegando o valor anterior do campo de saldo, somando todos os valores igual a tipo um, menos todos os valores diferente de tipo um, e deduzindo que na tabela MOVFUN o campo com o código do funcionário seja CODFUN, caso não seja mude aonde está: a.CODFUN para o nome de campo certo.

Outro exemplo:
aSQL:=EXECUTA_SQL('select codfun,valor,tipo from movfun') // pega todas as movimentações, o certo era ter um WHERE pra limitar as buscas
FOR nI:=1 TO len(aSQL)
   IF aSQL[nI,3]=='1'   
      EXECUTA_SQL('update cadfun set sldfun=sldfun+'+cs(aSQL[nI,2])+' where codfun='+cs(aSQL[nI,1])  )
   ELSE
      EXECUTA_SQL('update cadfun set sldfun=sldfun-'+cs(aSQL[nI,2])+' where codfun='+cs(aSQL[nI,1])  )
   ENDIF
NEXT

Nesse exemplo acima, estou deduzindo que você tenha alguma FUNCTION que retorne em ARRAY seus comando SQL e, uma FUNCTION que retorne em string como deve ser concatenado suas variáveis no sql ( meu exemplo tenho a FUNCTION CS() )
Pode ser que eu tenha me esquecido de algo, fiz aqui direto no forum o exemplo, e claro que isso tudo você precisa entender e testar. Qualquer duvida, post aqui.

Transformar em SQl

MensagemEnviado: 10 Jan 2018 07:52
por andrelucass
Gostaria de agradecer pela resposta, vou testar