Fechar uma alias com SQLRDD

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Fechar uma alias com SQLRDD

Mensagem por marcos.gurupi »

Caros, estou usando o codigo abaixo para abrir uma conexao MYSQL gravar um registro e sair, quando executto a funcao uma vez dar certo, acontece q quando executo a segunda vez ele diz q o alias jah estah aberto. Eu pensei q fechando a conexao com SR_END() se fechava tb o alias. Como faco para resolver a questao ?

Código: Selecionar todos

FUNCTION imp_dup()


#include "sqlrdd.ch"
#include "dbinfo.ch"
#include "mysql.ch"        // Needed if you plan to use native connection to MySQL

#define RECORDS_IN_TEST                   1000
#define SQL_DBMS_NAME                       17
#define SQL_DBMS_VER                        18


REQUEST SQLRDD             // SQLRDD should be linked in
REQUEST SR_MYSQL           // Needed if you plan to use native connection to MySQL
Local Areant:=Select(), vTabela:={}, vCarteira
MsgRun("Abrindo conexao com o banco de impressao.")
cConnString :="MySQL=localhost;UID=banco;PWD=senha;AUTOCOMMIT=1000;DTB=duplicata"
nDetected   := DetectDBFromDSN( cConnString )
If nDetected > 0
   nCnn := SR_AddConnection( nDetected, cConnString )
   If nCnn < 0
      Fim_Run()
		MsgStop("Nao foi possivel conectar ao banco.")
      Select(Areant)
      Return .f.
   Endif
ElSE
   Fim_Run()
	MsgStop("E necessario a instalacao do MYSQL.")
   Select(Areant)
   Return .f.
EndIf
vTabela := SR_ListTables()
vCarteira := vTabela[1]
If !SR_ExistTable(vCarteira)
   MsgStop("Nao foi possivel encontrar a tabela no banco.")
   SR_EndConnection(nCnn)
	Select(Areant)
   Return .f.
EndIf
Hw_Atualiza_Dialogo("Preparando duplicata para impressao.")
USE &vCarteira NEW SHARED VIA "SQLRDD"
Do While .t.
	if travarqivo(5)
      dbappend()
      Replace CNPJ       with RetiraCar(Empresa->CGC)
      Replace Documento  with Receber->Documento
      Replace Codigo     with Receber->Codigo
      Replace Cliente    with Receber->Cliente
      Replace Valor      with Receber->Valor
      Replace Debito     with Receber->Debito
      Replace Emissao    with Receber->Emissao
      Replace Vencimento with Receber->Vencimento
      Replace Nom_Vend   with Receber->Nom_Vend
      Replace TIPO       with Receber->Tipo
      dbunlock()
   Else
      Loop
   Endif
   Exit
Enddo
SR_End()
Select(Areant)
Fim_Run()
Return .t.
O erro:

Código: Selecionar todos

Error DBCMD/1011  Alias already in use: RECEBER_DBF
Called from ->DBUSEAREA(0)
Called from vendas.prg->IMP_DUP(3776)
Called from quiosquevenda.prg->(b)QUIOSQUEVENDA(69)
Marcos Roberto
NetService Software
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Fechar uma alias com SQLRDD

Mensagem por marcos.gurupi »

Caros para efeito de documentacao. O problema foi resolvido. Acontece q o array criado estava local e deve ser private para ser reconhecido pelo ambiente virtual.

Marcos Roberto
Marcos Roberto
NetService Software
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Fechar uma alias com SQLRDD

Mensagem por Hasse »

Bom dia Marcos.

Estou apanhando para conectar a um Banco Firebird.

Quais os LIB's, CH's e outros que são necessários para conexão com e teu exemplo ?

DetectDBFromDSN
SR_AddConnection
SR_ExistTable
SR_EndConnection
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Fechar uma alias com SQLRDD

Mensagem por Mário Isa »

Alo Marcos.Gurupi

que função é essa que vc está utilizando ?
SR_End()

o nome correto não seria sr_endconnection(numerodaconexaoatual) ?

digo isso pq aqui quando abro uma conexão e fecho o programa começa a se comportar de forma estranha até que se fecha sozinho...

exemplo:
logo após a desconexão do banco a minha função

Código: Selecionar todos

*******************************
Function VerificaNet( cAddress )
*******************************
LOCAL aHosts
LOCAL cName
InetInit()
IF cAddress == NIL
cAddress := "www.google.com.br"
ENDIF
aHosts := InetGetHosts( cAddress )
IF aHosts == NIL .or. len(aHosts)=0
InetCleanup()
RETURN .f.
endif
InetCleanup()
RETURN .t.
não funciona mais ....
eu a utilizo para verificar se a net tá conectada

ela começa a voltar .f.

:%
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fechar uma alias com SQLRDD

Mensagem por JoséQuintas »

Tente esta.

Código: Selecionar todos

FUNCTION IsInternet( cUrl, nPort )

   LOCAL lOk := .F. , aAddr

   hb_Default( @cUrl, "www.google.com" )
   hb_Default( @nPort, 80 )
   aAddr := hb_socketResolveINetAddr( cUrl, nPort )
   IF ! Empty( aAddr )
      lOk := hb_socketConnect( hb_socketOpen(), aAddr, 2000 )
   ENDIF

   RETURN lOk
Veja isso com mais atenção.
Se não conseguir conectar com mais nada, também não vai conseguir conectar com o MySQL novamente.

Isso de abrir/fechar conexão é problema, quando fiz isso, travava a ponto de ter que reiniciar o ROTEADOR.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder