Jump to content
Fivewin Brasil

?Browse com SqlLib


m.mac

Recommended Posts

Olá, sei que várias pessoas aqui utilizam SqlLib e MySQL bem como Browse's para exibir dados.

Pergunto: Alguém utiliza os recursos mencionados com xBrowse ? Pode postar um exemplo, pois estou conectando e abrindo o banco sem problemas, mas na hora de exibir no xBrowse o sistema simplesmente cai fora...

Qual a melhor alternativa ao xBrowse para exibir dados MySQL/SqlLib ?

Link to comment
Share on other sites

Olá, sei que várias pessoas aqui utilizam SqlLib e MySQL bem como Browse's para exibir dados.

Pergunto: Alguém utiliza os recursos mencionados com xBrowse ? Pode postar um exemplo, pois estou conectando e abrindo o banco sem problemas, mas na hora de exibir no xBrowse o sistema simplesmente cai fora...

Qual a melhor alternativa ao xBrowse para exibir dados MySQL/SqlLib ?

Link to comment
Share on other sites

No arquivo SQLLOG.TXT há alguma informaçao adicional sobre o erro?

Vailton Renato

***

#include "4evento_fw.ch"

lAnsioso := Date() <= CTOD( '25/11/2006' )

if lAnsioso

Alert( "Eu Apoio e vou ao :;" +;

"IV ENCONTRO DE PROG. FW ;" +;

"Dia : 25/11/2006 e vc?",{'Eu tb!','Claro!','Com cerveja!'})

end

Link to comment
Share on other sites

Vailton Renato ... :D

Vou tentar reproduzir isto q me falaste. Qual tua versão da SQL LIB e qual tua versão do xHB por favor ?

Vailton Renato

***

#include "4evento_fw.ch"

lAnsioso := Date() <= CTOD( '25/11/2006' )

if lAnsioso

Alert( "Eu Apoio e vou ao :;" +;

"IV ENCONTRO DE PROG. FW ;" +;

"Dia : 25/11/2006 e vc?",{'Eu tb!','Claro!','Com cerveja!'})

end

Link to comment
Share on other sites

Olá!

Embora eu não use a SQLLIB especificamente, mas o SQLRDD do xHarbout Builder, eu carrego todos os browses/listboxes com arrays. Executo minha query SQL e carrego os dados em array e monto o browse a partir do array. Eu prefiro, pois só carrego as colunas que me interessam...

Bom, não conheço a SQL LIB, mas certamente deve ter esse recurso de carregar dados pra um array :-)

[ ]'s

Maurilio

FWH 2.7 | xHarbour.com | SQLRDD | Workshop 4.5

Garça - SP

Link to comment
Share on other sites

No manual consulte: SQLArray(), USE SQL.

Um grande abraço à todos!

Vailton Renato

***

#include "4evento_fw.ch"

lAnsioso := Date() <= CTOD( '25/11/2006' )

if lAnsioso

Alert( "Eu Apoio e vou ao :;" +;

"IV ENCONTRO DE PROG. FW ;" +;

"Dia : 25/11/2006 e vc?",{'Eu tb!','Claro!','Com cerveja!'})

end

Link to comment
Share on other sites

Olá Kleyber e Vailton, me desculpem a distração..

Estou usando FW 2.7, xH 0.96 e a demo da SqlLib.

Segue um teste simples que estou fazendo com MySQL/SqlLib/xBrowse:

//======================================================

#include "FiveWin.ch"

#include "sqllib.ch"

#translate TRUE => .T.

#translate FALSE => .F.

REQUEST SQLLIB

REQUEST MySQL

Function Main()

public oDlg

public connect := true

RDDSetDefault('MySQL')

DEFINE DIALOG oDlg FROM 100, 100 TO 450, 600 PIXEL TITLE "SQL Lib"

CLOSE ALL

CheckConn()

USE CLIENTES AS "SELECT CodiClie, NomeClie FROM Clientes ORDER BY CodiClie" VIA 'mysql'

dbselectarea("CLIENTES")

dbgotop()

oBrw := TXBrowse():New( oDlg )

oBrw:cAlias := "Clientes"

FOR i := 1 to FCOUNT()

oCol := oBrw:AddCol()

oCol:bStrData := {|| cValToChar( FIELDGET(i))}

oCol:cHeader := FIELDNAME(i)

NEXT i

oBrw:nTop := 170

oBrw:nLeft := 2

oBrw:nRight := 450

oBrw:nBottom := 300

oBrw:nMarqueeStyle := 4

oBrw:SetRDD()

oBrw:CreateFromCode() // *** AQUI CAI FORA ***

ACTIVATE DIALOG oDlg CENTERED

return nil

//=======================================================================

function CheckConn()

static hasconnected := false

local host, db, user, pwd

/* É para se conectar novamente, mas já existe conexão aberta?*/

if connect .and. hasconnected

hasconnected := false

SQL DISCONNECT

end if

/* Já se conectou e não precisa se conectar novamente...*/

if hasconnected .and. !connect

return nil

end if

if bRemote

host := 'kssoftware.com.br'

db := 'kssoftwa_sqllib'

user := 'kssoftwa_sqllib'

pwd := 'sqllib'

else

host := 'localhost'

db := 'test'

user := 'root'

pwd := ''

end if

SQL CONNECT ON host;

PORT 3306 ;

DATABASE db ;

USER user ;

PASSWORD pwd ;

LIB "MySQL"

hasconnected := true

return

//========================================================================

Abraço,

Marcelo Alessandro

Link to comment
Share on other sites

Marcelo,

Experimente trocar esta linha:

citação:USE CLIENTES AS "SELECT CodiClie, NomeClie FROM Clientes ORDER BY CodiClie" VIA 'mysql'
id=quote>id=quote>

por:

citação:USE CLIENTES
id=quote>id=quote>

E me diga o que acontece

Abraço,

Kleyber Derick

xHarbour 0.99.4 + FWH 2.5

Visite São Luís - MA A Ilha dos Amores

Link to comment
Share on other sites

Eu uso de duas formas, com o array ou tipo dbf .

veja ai se te ajuda !!!

//usando o browse com arquivo tipo dbf

cCmdsql := 'select codigo, titulo from fpcodrec order by titulo'

use sql cCmdSql alias consulta new via 'MYSQL'

aCab :={'Codigo','Descricao da receita'}

oLbxcons:= TWBrowse():ReDefine( 600,, oDlgcons,aCab,,,,,,,,,,,,, .F.,,,,, )

oLbxcons:nLineStyle := 2

oLbxcons:nHeaderStyle:= 2

oLbxcons:bBkColor:= {|nRow,nCol,nStyle| if( nStyle==1,CLR_RED, ) }

oLbxcons:bTextColor:= {|nRow,nCol,nStyle| if( nStyle==1,CLR_YELLOW, ) }

oLbxcons:bKeyDown:={|nKey| iif(nKey=VK_RETURN,troca(@lAlt,oDlgcons),busca(nKey,oDlgcons,cAlias,aoGetp,aGetp,@cPesq,cBusca,oLbxcons))}

//USANDO O BROWSE COM O ARRAY DIRETO DO SELECT

cCmdSql :='SELECT " " AS marca , "Adt.Dep" AS TIPO, DATA AS DATA, " " AS VENC, " " AS DOC, vlr_adiant AS VALOR, sql_rowid as reg, juros, conta FROM adtmes '

cCmdSql +='WHERE adt_creli IS NULL '

cCmdSql +='AND adt_retor IS NULL '

cCmdSql +='AND vlr_adiant <> 0 '

cCmdSql +='UNION ALL '

cCmdSql +='SELECT " " AS marca , "Titulos" AS TIPO, tit_emis AS DATA, tit_vcto AS VENC,tit_ndoc AS DOC,tit_valor AS VALOR, sql_rowid as reg, tit_tparc, clf_conta as conta FROM ep_tits AS tit '

cCmdSql +='WHERE tit.tit_vcto < curdate() AND tit.tit_pgto IS NULL '

cCmdSql +='AND tit.tit_creli IS NULL '

cCmdSql +='UNION ALL '

cCmdSql +='SELECT " " AS marca , "Desconto" AS TIPO, cdd_emis AS DATA, cdd_vcto AS VENC, cdd_ndoc AS DOC,cdd_valor AS VALOR, sql_rowid as reg, cdd_numero, clf_conta as conta FROM ep_desc AS cdd '

cCmdSql +='WHERE cdd_vcto < curdate() AND cdd_baixa IS NULL '

cCmdSql +='AND cdd_creli IS NULL '

cCmdSql +='ORDER BY (concat(conta,tipo)) '

aDocs:=SQLArray( cCmdSql, SqlGetConn() )

if !empty(aDocs)

DEFINE DIALOG oDlg RESOURCE 'EXEMPLO' ICON oVS:vpoIco

REDEFINE LISTBOX oLbx FIELDS iif(aDocs[olbx]=' ',aHBitMaps[1],aHBitMaps[2] ) ,;

aDocs[olbx],aDocs[olbx], dtoc( FazData( aDocs[olbx],'AAAA-MM-DD' ) ),dtoc( FazData( aDocs[olbx],'AAAA-MM-DD' ) ),;

aDocs[olbx],transform( val(aDocs[olbx]), oVS:nove ) ;

HEADERS aHBitMaps[1],'Conta','Tipo','Emissao','Venc.','Doc','Valor' ;

FIELDSIZES 20, 80, 80, 80, 80, 100, 100 ;

COLORS CLR_BLUE,CLR_WHITE;

ID 103 OF oDlg ;

ON DBLCLICK MarcaDesVet(aDocs, oLbx)

oLbx:aJustify:= { 2, 2, 2, 2, 2, 2, 3 }

olbx:SetArray(aDocs)

olbx:refresh()

endif

FW26/XH9950/Pelles/ Mysql

laurentinocarlos@gmail.com

Rio de Janeiro/Montes Claros MG

Link to comment
Share on other sites

Laurenti, obrigado pelas dicas. Porém acho que trabalhamos de formas diferentes, por exemplo, não uso recursos, não uso (por enquanto) browse com array e só uso xBrowse... :-)

Estou relutando em trocar de classe browse pois já fiz vários ajustes no xBrowse e que pra mim ficaram bons.

Meu problema está na hora de exibir o xBrowse. Carrego o servidor do MySQL, abro tabelas, exibo dados em outros objetos como o Combo por exemplo, mas quando chamo o método :CreateFromCode() do xBrowse o programa cai.

Você tem algum exemplo de uso de xBrowse com RDD MySQL ??

Abraço

Marcelo Alessandro

------------------

Fwh 2.7/xH 0.99.4/MED 3.02/xMate 1.15/Delphi 6.0/Firebird 1.5

Link to comment
Share on other sites

Olá,

Fiz pequenas alterações no seu exemplo, e coloquei para acessar a base remota (kssoftware.com.br) que o Vaílton liberou para testes. Funciona normalmente. Veja abaixo:

//======================================================

#include "FiveWin.ch"

#include "sqllib.ch"

#translate TRUE => .T.

#translate FALSE => .F.

REQUEST SQLLIB

REQUEST MySQL

Function Main()

public oDlg

public connect := true

RDDSetDefault('MySQL')

DEFINE DIALOG oDlg FROM 100, 100 TO 450, 600 PIXEL TITLE "SQL Lib"

CLOSE ALL

CheckConn()

cCmdSql:='SELECT nome, cidade FROM cadacli ORDER BY nome'

use sql cCmdSql alias cli new via 'MYSQL'

dbselectarea("cli")

dbgotop()

@ 01, 01 LISTBOX oLbx FIELDS cli->nome, cli->cidade HEADERS 'Nome', 'Cidade' OF oDlg PIXEL SIZES 220, 720

//oBrw:CreateFromCode() // *** AQUI CAI FORA *** ///// deve ser algum problema com a tabela que estavas acessando

ACTIVATE DIALOG oDlg CENTERED

return nil

//=======================================================================

function CheckConn()

static hasconnected := false

local host, db, user, pwd

/* É para se conectar novamente, mas já existe conexão aberta?*/

if connect .and. hasconnected

hasconnected := false

SQL DISCONNECT

end if

/* Já se conectou e não precisa se conectar novamente...*/

if hasconnected .and. !connect

return nil

end if

host := 'kssoftware.com.br'

db := 'kssoftwa_sqllib'

user := 'kssoftwa_sqllib'

pwd := 'sqllib'

SQL CONNECT ON host;

PORT 3306 ;

DATABASE db ;

USER user ;

PASSWORD pwd ;

LIB "MySQL"

hasconnected := true

return

//========================================================================

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib

Link to comment
Share on other sites

Marcelo

Antes de voce quebrar a cabeça, verifique se o xBrowse é compatível com a SqlLib, pois o xBrowse não é o browse padrão do fivewin. Consulte o Vailton.

Uso o twbrose e funciona perfeitamente, tanto para as tabelas como para arrays.

José Carlos

Guarulhos-SP

FW 2.0 / Clipper 5.2e / WS | FWH 2.7 / xHarbour 99.51 / xDev / Pelles / SqlLib(MySql)

Link to comment
Share on other sites

Olá,

citação:Antes de voce quebrar a cabeça, verifique se o xBrowse é compatível com a SqlLib, pois o xBrowse não é o browse padrão do fivewin.
id=quote>id=quote>

Não há diferença entre um arquivo dbf e uma tabela SQL depois de abertos. É tudo a mesma coisa. Portanto não há incompatibilidade com qualquer browse (xBrowse, TWBrowuse, TSBrowse, etc.). Funciona com DBF, funciona com SQLLIB.

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib

Link to comment
Share on other sites

Evandro, peguei o código que você postou e criei um novo .prg.

Resultado: Conectou ao banco remoto normalmente, abriu a tabela sem problemas, mas... quando chegou na linha de montar o listbox (@ 01, 01 LISTBOX oLbx FIELDS ...) deu crepe !!

Está muito estranho, observei agora que quando coloco um

do while !eof() pra exibir os dados o programa aborta também...

Poderia ser a configuração do meu servidor MySql ou do ambiente FWH ?

-------------

E aí Vailton, o xBrowse é compatível com a SqlLib ?

Abraços,

Marcelo Alessandro

------------------

Fwh 2.7/xH 0.99.4/MED 3.02/xMate 1.15/Delphi 6.0/Firebird 1.5

Link to comment
Share on other sites

Olá,

citação:Resultado: Conectou ao banco remoto normalmente, abriu a tabela sem problemas, mas... quando chegou na linha de montar o listbox (@ 01, 01 LISTBOX oLbx FIELDS ...) deu crepe !!
id=quote>id=quote>

Não é que deu crepe. É que com @SAY eu não vou ficar perdendo tempo de achar as coordenada para uma boa apresentação.

citação:Está muito estranho, observei agora que quando coloco um

do while !eof() pra exibir os dados o programa aborta também...

Poderia ser a configuração do meu servidor MySql ou do ambiente FWH ?


id=quote>id=quote>

Não deve ser. Poste a parte com o do while para vermos o que pode estar acontecendo.

citação:E aí Vailton, o xBrowse é compatível com a SqlLib ?
id=quote>id=quote>

Nem precisa do Vaílton. Com certeza é compatível.

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib

Link to comment
Share on other sites

Olá Evandro,

Quando digo que "deu crepe" não estou me referindo à apresentação mas sim que o programa aborta (encerra) nesta linha e volta o controle ao S.O.

Quanto ao xBrowse ser compatível com FW confesso que fiquei preocupado quando o José Carlos questinou e não tinha observado que você já havia respondido quando perguntei ao Vailton, de qualquer forma obrigado !

Segue apenas o trecho alterado que fiz pra testes:

...

dbselectarea("cli")

dbgotop()

do while !eof() //APENAS PARA EXIBIR OS DADOS

msginfo(FIELDNAME(recno()) + " - " + cValToChar(FIELDGET(recno())))

DBSKIP()

enddo

@ 01, 01 LISTBOX oLbx FIELDS cli->nome, cli->cidade HEADERS 'Nome', 'Cidade' OF oDlg PIXEL SIZES 220, 720

...

Obs: Se coloco simplesmente "MsgInfo(cValToChar(FIELDGET(recno())))" exibe normal a informação ("AAAAAAAAAABBBBBBE") da base do Vaiton.

Abraço,

Marcelo Alessandro

------------------

Fwh 2.7/xH 0.99.4/MED 3.02/xMate 1.15/Delphi 6.0/Firebird 1.5

Link to comment
Share on other sites

Olá,

Veja o erro que dá, pois se você não alterou nada no exemplo, roda legal. Mesmo as linha que você passou, que tem erro. O arquivo só tem dois campos( selecionamos nome e cidade apenas). Você pede para listar um campo maior que isto (fieldname( recno()) -> recno() =3, 4 ou mais )

do while !eof() //APENAS PARA EXIBIR OS DADOS

msginfo(FIELDNAME(recno()) + " - " + cValToChar(FIELDGET(recno())))

DBSKIP()

enddo

Colei aqui no exemplo e rodou legal.

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib

Editado por - evandro on 05/10/2006 19:40:40

Link to comment
Share on other sites

Evandro,

Continua o problema e não sei mais o que pensar.. Se o servidor MySQL está instalado e rodando, abro as tabelas tanto local quanto remota sem problemas, se o ambiente xH/FW está certo (pois rodo meus projetos normalmente) não entendo por que numa linha simples como um "do while !eof()" ou quando mando desenhar um ListBox ou um Browse com os dados o programa aborta...

Já verifiquei e o MySQL não está gerando nada no arquivo de Log.

Estou pensando na configuração do Servidor MySQL instalado na minha máquina. Como fiz a primeira instalação agora imagino que tenha algo que não esteja corretamente configurado.

Você (ou o Vailton) saberiam me passar a configuração básica e correta pro servidor MySQL apenas pra verificar ?

Abraço,

Marcelo Alessandro

------------------

Fwh 2.7/xH 0.99.4/MED 3.02/xMate 1.15/Delphi 6.0/Firebird 1.5

Link to comment
Share on other sites

Olá,

A configuração do servidor deve estar certa pois se você seguiu o default, vai funcionar. Mande novamente o prg (mas com o acesso à base remota, senão não tem jeito de testar) veja se gerou o errorlog e mande também.

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib

Editado por - evandro on 06/10/2006 13:37:28

Link to comment
Share on other sites

Olá,

Te respondi o emeio. O erro está aqui:

msginfo(FIELDNAME(recno()) + " - " + cValToChar(FIELDGET(recno())))

Não pode ser fildname( recno() ) pois só temos dois campos.

Troque por:

for x=1 to 2 // aqui teria de colocar a qtde de campos. como eu sei que são dois....

msginfo( FIELDNAME(x) + " - " + cValToChar( FIELDGET(x)) )

next

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...