Clipper On Line • Ver Tópico - Loop/movenext com ADODB no xHarbour

Loop/movenext com ADODB no xHarbour

Discussão sobre SQL

Moderador: Moderadores

 

Loop/movenext com ADODB no xHarbour

Mensagempor fertriod3 » 13 Set 2018 10:56

Olá caríssimos,

Tenho que percorrer um recordset, numa consulta ao MySQL com ADO. No xharbour com DBF eu faria assim:

while !chq->(eof())                                         
   if ascan(arr_reg,Cid->numreg) == 0 .OR. Cid->numreg == "   "
      chq->(dbskip())
      loop
   endif
   chq->(dbskip())
end


O loop (abaixo) no recordset dá erro, alguem sabe como deveria proceder?

while !oRSChq:eof()                                         
   if ascan(arr_reg,Cid->numreg) == 0 .OR. Cid->numreg == "   "
      oRsChq:movenext()
      orsChq:loop()
   endif
   oRsChq:movenext()
end


Obrigado
Fernando Lara
fernando.pareschi@gmail.com
Clipper 5.2 - Blinker 7 - Samba
xHarbour
Avatar de usuário

fertriod3
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 36
Data de registro: 18 Set 2009 14:05
Cidade/Estado: Tietê-SP
Curtiu: 6 vezes
Mens.Curtidas: 1 vez

Loop/movenext com ADODB no xHarbour

Mensagempor alxsts » 13 Set 2018 12:13

Olá!

O método "loop" não existe em ADO.

Tente assim:
 while !oRSChq:eof()                    
  if ascan(arr_reg, oRSChq:fields:"numreg") == 0 .OR. oRSChq:fields:"numreg" == " "
     oRsChq:movenext()
     LOOP
  endif
  oRsChq:movenext()
end

Deve ser código exemplo pois está esquisito. Se não satisfizer a condição, despreza registro. Senão, despreza registro...
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Loop/movenext com ADODB no xHarbour

Mensagempor fertriod3 » 13 Set 2018 13:29

Beleza Alexandre, eu alterei aqui e pelo menos passou sem erro, agora vou conferir o relatorio.
Muito obrigado pela força
Fernando Lara
fernando.pareschi@gmail.com
Clipper 5.2 - Blinker 7 - Samba
xHarbour
Avatar de usuário

fertriod3
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 36
Data de registro: 18 Set 2009 14:05
Cidade/Estado: Tietê-SP
Curtiu: 6 vezes
Mens.Curtidas: 1 vez

Loop/movenext com ADODB no xHarbour

Mensagempor JoséQuintas » 14 Set 2018 10:45

alxsts escreveu:O método "loop" não existe em ADO.


Não existe nem em ADO, e nem em DBF.
Tem a ver com DO WHILE/ENDDO e não banco de dados.

Estranhei o Fields, que eu saiba seria Fields( "codigo" ):Value

E nesta parte talvez melhor inverter:

if ascan(arr_reg, oRSChq:fields:"numreg") == 0 .OR. oRSChq:fields:"numreg" == " "

Deste jeito nem perde tempo fazendo scan se for " " (apesar que a comparação continua esquisita)

IF oRSChq:fields( "numreg" ):Value == " " .OR. ascan(arr_reg, oRSChq:fields( "numreg" ):Value ) == 0
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Loop/movenext com ADODB no xHarbour

Mensagempor alxsts » 14 Set 2018 12:53

Olá!

JoséQuintas escreveu:Tem a ver com DO WHILE/ENDDO e não banco de dados.

Loop é um comando xBase. Pose ser usado com Do...While...Enddo, For...Next e provavelmente For...Each...Next (nunca testei).
JoséQuintas escreveu:Estranhei o Fields, que eu saiba seria Fields( "codigo" ):Value

Tem razão... na pressa, esqueci o :value. O correto é rs:fields("field"):value
JoséQuintas escreveu:E nesta parte talvez melhor inverter:

Tem razão. Eu ia dizer isto. Esta técnica é conhecida como shortcutting, ou seja: numa série de condições agrupadas com .OR., qualquer uma delas que for verdadeira valida toda a serie. Da mesma forma, numa série de condições agrupadas com .AND., qualquer uma delas que falhar invalida toda a serie. Este é o comportamento padrão do compilador e pode ser alterado para testar todas as condições, com o switch -z (isto vem do Cl*pper).
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Loop/movenext com ADODB no xHarbour

Mensagempor fertriod3 » 21 Set 2018 15:37

Amigos,

Realmente, deixando somente "loop" resolveu. Coloquei em produção esses dias e deu tudo certo. Obrigado José Quintas e Alexande Santos pela ajuda. Interessante a dica de que o loop faz tem a ver com o DO WHILE e não com a base de dados que é usada, eu ainda misturo as coisas, rs
Fernando Lara
fernando.pareschi@gmail.com
Clipper 5.2 - Blinker 7 - Samba
xHarbour
Avatar de usuário

fertriod3
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 36
Data de registro: 18 Set 2009 14:05
Cidade/Estado: Tietê-SP
Curtiu: 6 vezes
Mens.Curtidas: 1 vez

Loop/movenext com ADODB no xHarbour

Mensagempor fertriod3 » 21 Set 2018 15:42

Outra coisa que ia me esquecendo, somente pra deixar registrado: Cid->numreg é em dbf e eu acesso normalmente com select (não sei se é possível fazer select com dbf) então nesse caso é dbf junto com MySql
ascan(arr_reg,Cid->numreg) == 0 .OR. Cid->numreg == "   "


Até mais
Fernando Lara
fernando.pareschi@gmail.com
Clipper 5.2 - Blinker 7 - Samba
xHarbour
Avatar de usuário

fertriod3
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 36
Data de registro: 18 Set 2009 14:05
Cidade/Estado: Tietê-SP
Curtiu: 6 vezes
Mens.Curtidas: 1 vez




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro