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 ?
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.
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)
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.
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)
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/