Clipper On Line • Ver Tópico - Transformar em SQl

Transformar em SQl

Discussão sobre SQL

Moderador: Moderadores

 

Transformar em SQl

Mensagempor andrelucass » 04 Jan 2018 08:16

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
andrelucass
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 58
Data de registro: 25 Fev 2005 10:40
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Transformar em SQl

Mensagempor sygecom » 06 Jan 2018 12:56

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.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com
Avatar de usuário

sygecom
Membro Master

Membro Master
 
Mensagens: 6514
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 49 vezes

Transformar em SQl

Mensagempor andrelucass » 10 Jan 2018 07:52

Gostaria de agradecer pela resposta, vou testar
andrelucass
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 58
Data de registro: 25 Fev 2005 10:40
Curtiu: 0 vez
Mens.Curtidas: 2 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro