Sobre harbour com SQL

Forum sobre SQL.

Moderador: Moderadores

marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Sobre harbour com SQL

Mensagem por marco.prodata »

Mestres,
Sobre harbour com SQL, vou usar o postgresql, você usam as libs padrão do sql (hbpgsql, hbmysql pra mysql), ou usam o rddsql do harbour (q é bem difernte do xharbour)?
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Sobre harbour com SQL

Mensagem por alxsts »

Olá!

Postgresql é muito bom. Se o teu sistema roda apenas em Windows, sugiro que use ADO. É um produto Microsoft consolidado há anos e disponível na instalação do Harbour, bastando usar hbwin.hbc na linkedicão. Tem muita documentação e exemplos na internet e também aqui no fórum.

Boa sorte e conte com o pessoal do fórum!
[]´s
Alexandre Santos (AlxSts)
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

alxsts escreveu:Olá!

Postgresql é muito bom. Se o teu sistema roda apenas em Windows, sugiro que use ADO. É um produto Microsoft consolidado há anos e disponível na instalação do Harbour, bastando usar hbwin.hbc na linkedicão. Tem muita documentação e exemplos na internet e também aqui no fórum.

Boa sorte e conte com o pessoal do fórum!
hoje uso exatamente o indicado , mas gostaria de preparar meu APP para rodar em Linux ai qual seria a indicação para o lugar do ADO ??

e como tratar o RECORDSET retornado, pequeno exemplo
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Sobre harbour com SQL

Mensagem por alxsts »

Olá!

Meu conhecimento em Linux/Unix é zero... nunca mexi.
No tópico Sistema ERP rodando em LINUX, o Itamar Lins postou um link mostrando como usar ADO com Linux, via WINE. Não sei se alguém testou.
Quanto a exemplo de manipulação de recordset, tem vários exemplos aqui no fórum, postados por mim e pelo Quintas. Procure por Tbrowse ADO.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Sobre harbour com SQL

Mensagem por Itamar M. Lins Jr. »

Olá!
Recomendo usar "primeiro" no windows via ADO. Pq o grande lance é fazer a migração, usar, quando tudo estiver pronto partir para o LINUX.
O Linux não tem ADO NATIVO. Só vai aproveitar as SQLs mais nada ou usar WINE.
Hoje não uso mais WINDOWS. Só mantenho o Windows por conta do POVO que usa Windows.
Meu desktop é Linux Kubuntu ficarei com ele até enjoar... Depois mudo para outra distro Linux, por enquanto tá legal.
O que reparei foi a velocidade da aplicação via Wine no Linux alias meu CPU só tem 4Gib e não 8, e ficou muito rápido.
Vejo que SQL no Linux é mais para PHP, e essas linguagens mais modernas. Quem sabe no futuro teremos algo mais simples igual temos o ADO no Windows.
https://adodb.org/dokuwiki/doku.php ou no Lazarus que é super simples também.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

Itamar M. Lins Jr. escreveu:Olá!
Recomendo usar "primeiro" no windows via ADO. Pq o grande lance é fazer a migração, usar, quando tudo estiver pronto partir para o LINUX.
O Linux não tem ADO NATIVO. Só vai aproveitar as SQLs mais nada ou usar WINE.
Hoje não uso mais WINDOWS. Só mantenho o Windows por conta do POVO que usa Windows.
Meu desktop é Linux Kubuntu ficarei com ele até enjoar... Depois mudo para outra distro Linux, por enquanto tá legal.
O que reparei foi a velocidade da aplicação via Wine no Linux alias meu CPU só tem 4Gib e não 8, e ficou muito rápido.
Vejo que SQL no Linux é mais para PHP, e essas linguagens mais modernas. Quem sabe no futuro teremos algo mais simples igual temos o ADO no Windows.
https://adodb.org/dokuwiki/doku.php ou no Lazarus que é super simples também.

Saudações,
Itamar M. Lins Jr.
Itamar atualmente uso com ADO no windows mas gostaria de fazer uma versão para rodar no LINUX , qual a opcao para substituir a manipulação do DATASET de ADO para ????? no LINUX

e algum exemplo da connecao e manipulacao em linux

me falaram de SQLMIX mas nao sei nada sobre como usar o DATASET

HOJE USO ASSIM

Código: Selecionar todos

METHOD MySqlConnection( cServer, cUser, cPassword, nPort ) CLASS CONECCOESCLASS
LOCAL cnConnection

    cnConnection:= win_OleCreateObject( "ADODB.Connection" )
    cnConnection:ConnectionString := iif( win_OsIs10(), "Provider=MSDASQL;", "" )
    cnConnection:ConnectionString += "Driver={MariaDB ODBC 3.1 Driver};"
    cnConnection:ConnectionString += ;
        "Server=" + cServer + ";" + ;
        "Port=" +  nPort  + ";" + ;
        "Stmt=;" + ;
        "User=" + cUser + ";" + ;
        "Password=" + cPassword + ";" + ;
        "Collation=utf8_general_ci;" + ;
        "AUTO_RECONNECT=1;" + ;
        "COMPRESSED_PROTO=1;" + ;
        "PAD_SPACE=1"
    cnConnection:CursorLocation    := 3
    cnConnection:CommandTimeOut    := 600 // seconds
    cnConnection:ConnectionTimeOut := 600 // seconds

RETURN cnConnection
e trato o DATASET assim:

Código: Selecionar todos

	cQuery := "SELECT PRODUTOS_ID, ";
				   + "produtos.DESPRO, ";
				   + "IF(produtos.ESTATU < produtos.ESTMIN,'BAIXO','') AS SITUACAO,  ";
				   + "produtos.ESTATU, ";
				   + "produtos.ESTL02, ";
				   + "produtos.CODREF, ";
				   + "produtos.PRECUS, ";
				   + "produtos.PREVEN, ";
				   + "produtos.TIPUNI, ";
				   + "produtos.EAN13, ";
				   + "produtos.NCM, ";
				   + "produtos.CEST, ";
				   + "IF(produtos.PROSER ='1','PRODUTO','SERVICO') AS PROSER, ";
				   + "produtos.QUEM_BLOQ, ";
				   + "(produtos.ESTATU + produtos.ESTL02) AS SOMA ";
				   + "FROM produtos ";
				   + cAlvo_Consulta
	oQuery := CONECCOESCLASS():ExecuteSQL(::oServer, cQuery)

	if  ! oQuery:Eof()
		
	DO WHILE ! oQuery:Eof()
				aAdd( aResult, {oQuery:Fields( "PRODUTOS_ID" ):Value,;
								oQuery:Fields( "DESPRO" ):Value,;
								oQuery:Fields( "TIPUNI" ):Value,;
								oQuery:Fields( "ESTATU" ):Value,;
								oQuery:Fields( "ESTL02" ):Value,;
								oQuery:Fields( "CODREF" ):Value,;
								oQuery:Fields( "PRECUS" ):Value,;
								oQuery:Fields( "PREVEN" ):Value,;
								oQuery:Fields( "EAN13" ):Value,;
								oQuery:Fields( "NCM" ):Value,;
								oQuery:Fields( "CEST" ):Value,;
								oQuery:Fields( "PROSER" ):Value,;
								oQuery:Fields( "QUEM_BLOQ" ):Value,;
								oQuery:Fields( "SOMA" ):Value} ) 

				oQuery:MoveNext()
	ENDDO
		endif
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

no caso estava usando o retorno da query e carregando um ARRAY para usar no BROWSE
na realidade substituiria o oQuery:Fields( "DESPRO" ):Value por ????? no LINUX
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

outra coisa que ficou na duvida foi como usar o SEFAZCLASS pois ela usa o CAPICOM.DLL e qual seria a solucao para o caso
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Sobre harbour com SQL

Mensagem por Itamar M. Lins Jr. »

Olá!
A unica forma que usei foi o SQLMIX, APENAS para extrair dados, puxar de vários tipos Mysql/MSSQL/Firebird...
No linux é via ODBC, vc deve estudar como fazer isso quando instalar e testar o seu SGBD no Linux.
Já fiz alguns testes usando o Harbour e deu certo mas faz muito tempo.
Melhor será se alguém que realmente usar Harbour com SGBD no linux para ensinar essa parte.
Meus testes atuais foram com LetoDBf, a questão é tempo para fazer manual passo a passo, melhor seria o interessado fazer isso.
Não é nada complicado, mas precisa ler MANUAIS e CÓDIGOS FONTE de EXEMPLOS que tem vários nas pastas contrib do Harbour.

SEFAZCLASS parece que roda no Linux, teria que estudar isso com o José Quintas.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

Itamar M. Lins Jr. escreveu:Olá!
A unica forma que usei foi o SQLMIX, APENAS para extrair dados, puxar de vários tipos Mysql/MSSQL/Firebird...

Saudações,
Itamar M. Lins Jr.
era exatamente isto que gostaria de saber como você fez , já me daria um norte por onde começar
como tratar os resultado das suas query , usando SQLMIX
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

Dando umas pesquisadas pelo forum encontrei isso:

No SQLODBC

Código: Selecionar todos

SQLDriverConnect( hDbc, cConnStr, @cConstrout )
SQLExecDirect( hStmt, "SELECT * FROM test" )

oQuery:FieldByName( "PRODUTOS_ID" ):Value
No ADO

Código: Selecionar todos

    cnConnection:= win_OleCreateObject( "ADODB.Connection" )
    cnConnection:ConnectionString := iif( win_OsIs10(), "Provider=MSDASQL;", "" )
    cnConnection:ConnectionString += "Driver={MariaDB ODBC 3.1 Driver};"
    cnConnection:ConnectionString += ;
        "Server=" + cServer + ";" + ;
        "Port=" +  nPort  + ";" + ;
        "Stmt=;" + ;
        "User=" + cUser + ";" + ;
        "Password=" + cPassword + ";" + ;
        "Collation=utf8_general_ci;" + ;
        "AUTO_RECONNECT=1;" + ;
        "COMPRESSED_PROTO=1;" + ;
        "PAD_SPACE=1"
    cnConnection:CursorLocation    := 3
    cnConnection:CommandTimeOut    := 600 // seconds
    cnConnection:ConnectionTimeOut := 600 // seconds

cnConnection:EXECUTE( "SELECT * FROM test" )

oQuery:Fields( "PRODUTOS_ID" ):Value
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

resumindo minha situação ,
nao uso DBF, LETO, SQLRDD ou qualquer coisa relacionada para fazer com que se pareça com DBF
uso SQL puro em banco de dados MARIADB
agora o retorno da QUERY é que manipulo com o ADO para pegar os dados
que gostaria de passar para algo que funcione mais genérico tanto em LINUX como no WINDOWS

pode ser via ODBC ou qualquer coisa que não me limite o uso em LINUX ou WINDOWS

O que hoje tenho em ADO
cnConnection:EXECUTE( "select PRODUTOS_ID from produtos where ... )
oQuery:Fields( "PRODUTOS_ID" ):Value
oQuery:MoveNext()
MoveFirst, MoveLast, MoveNext, and MovePrevious


Passaria para ODBC assim
cnConnection:SetSQL( "select PRODUTOS_ID from produtos where ... )
cnConnection:Open()
oQuery:FieldByName( "PRODUTOS_ID" ):Value
oQuery:Skip()
oQuery:GoTo( 1 )
oQuery:Prior()
oQuery:First()
oQuery:Last()




OBS: Hoje uso o ODBC para o MARIADB
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Sobre harbour com SQL

Mensagem por Itamar M. Lins Jr. »

Olá!
Faltou vc achar exemplos de SQLMIX, aqui no forum tem e na pasta contrib tem exemplos.
Ou usar a LIB para MySQL do Harbour que funciona no linux também
Neste caso é tudo array tem exemplo disso na pasta contrib tambem.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

Itamar M. Lins Jr. escreveu:Olá!
Faltou vc achar exemplos de SQLMIX, aqui no forum tem e na pasta contrib tem exemplos.
Ou usar a LIB para MySQL do Harbour que funciona no linux também
Neste caso é tudo array tem exemplo disso na pasta contrib tambem.

Saudações,
Itamar M. Lins Jr.
olha procurei no CONTRIB mas não achei ou não sei o nome
encontrei
HBFBIRD
HBMYSQL
HBODBC
HBPGSQL
HBSQLIT3

mas o tal de SQLMIX não encontrei
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Sobre harbour com SQL

Mensagem por Fernando queiroz »

verificando aqui o que tenho e a melhor opção para mudar seria a ODBC pela semelhança de comando, quase não mudaria nada no que tenho atualmente.

e como é padrao para todos os DB , ficaria funcional para todos
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Responder