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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/