Jump to content
Fivewin Brasil

linhas xbrowse com cores diferente sqlrdd+mysql


sistem

Recommended Posts


Não sei se isso que você esteja querendo..

@ 035.5,002 listbox obrzNOTA fields asamplzNOTA[obrzNOTA:nat,1],asamplzNOTA[obrzNOTA:nat,2],;

asamplzNOTA[obrzNOTA:nat,3],asamplzNOTA[obrzNOTA:nat,4],asamplzNOTA[obrzNOTA:nat,5],;

asamplzNOTA[obrzNOTA:nat,6],asamplzNOTA[obrzNOTA:nat,7],asamplzNOTA[obrzNOTA:nat,8],;

asamplzNOTA[obrzNOTA:nat,9],asamplzNOTA[obrzNOTA:nat,10];

headers "","Série","Número","Emissão","Nome","CNPJ/CPF","UF","Tipo","Situação","DanFe";

FIELDSIZES 20,35,100,100,340,110,30,050,150,20 on dblclick marca_nfe();

size 500,135;

pixel of nfeletronica

// Esta muda a cor da linha ..........

obrzNOTA:nClrPane := {|| iif((obrzNOTA:nat/2) = int(obrzNOTA:nat/2),corfdogetnotafiscal,corlstbxnormal) }

obrzNOTA:lCellStyle = .t.

obrzNOTA:lAutoSkip = .t.

obrzNOTA:SetArray(asamplzNOTA)

obrzNOTA:bGoTop = { || obrzNOTA:nat := 1 }

obrzNOTA:bGoBottom = { || obrzNOTA:nat := Eval( obrzNOTA:bLogicLen ) }

obrzNOTA:bSkip = { | nWant, nOld | nOld := obrzNOTA:nat, obrzNOTA:nat += nWant,;

obrzNOTA:nat := Max( 1, Min( obrzNOTA:nat, Eval( obrzNOTA:bLogicLen ) ) ),;

obrzNOTA:nat - nOld }

obrzNOTA:bLogicLen = { || Len( asamplzNOTA ) }

obrzNOTA:cAlias = "Array" // Just put something

obrzNOTA:SetFocus()

obrzNOTA:Refresh()

Link to comment
Share on other sites

amigo, quando eu usava LISTBOX veja se ajuda.


   X         := .F.
*====================================================================================================

REDEFINE LISTBOX oLbx_COM FIELDS TCOMPRA->(STRZERO(CODVENDA,06,0)),;
DTOC(TCOMPRA->DATVENDA),;
TRANSFORM(TCOMPRA->VALVENDA,"@ZE 999,999.99"),;
TCOMPRA->TIPO_DOC,;
TCOMPRA->(STRZERO(NF_NUMER,06,0)),;
TCOMPRA->NF_SERIE;
HEADERS "Lanç.",;
"Data",;
"TOTAL",;
"Tipo Doc.",;
"Numero",;
"Série";
FONT O_F_BRW;
ID 073;
OF oFld_FORNE:aDialogs[ 2 ];
ON CHANGE (TCOD:=TCOMPRA->CODCLIVE,oLbx_COM:Refresh());
On DBLCLICK(TCOD:=TCOMPRA->CODCLIVE,oLbx_COM:Refresh(),oLbx_COM:SetFocus() )
oLbx_COM:ajustify:={.T.,.T.,.T.,.F.}
oLbx_COM:nLineStyle := 2
oLbx_COM:Refresh()
oLbx_COM:lCellStyle := .F.
oLbx_COM:nClrBackHead := CLR_HBLUE // Cor do Fundo do Cabe‡alho
oLbx_COM:nClrBackFocus := CLR_AZUL_BRANCO // Cor do Cursor Em Cima do Ötem
oLbx_COM:nClrForeHead := CLR_BLANCO // Cor nos Headers - Cabe‡alhos
*=============================================================================================
//// Aqui faço as corres
oLbx_COM:nClrPane:={ ||IIF(IIF(X,X:=.F.,X:=.T.)=.T., ;
CLR_LGREEN,CLR_LGRAY)}
*=============================================================================================

tenta ai quem sabe ajuda.

Link to comment
Share on other sites

xBrowse com array da tranquilo, DBF também é tranquilo....

Agora fazer com o RECNO não da, pois o RECNO no SQLRDD é um numero sequencial, então se tiver registros deletados no meio da tabela ele nao fica certo.

Ex:

CODIGO NOME RECNO DELETADO

000001 XXXXXXX 1 NAO

000002 YYYYYYY 2 SIM

000003 ZZZZZZZZ 3 NAO

No exemplo acima no xBrowse ele só vai exibir os codigos 1 e 3, porem os dois ficaram com a linha da mesma cor porque o recno de ambos é impar...

Faz testando o RECNO, o que for par eh uma cor, impar outra, dá certo

xbrowse array fica mais fácil ainda, ou ainda dá pra fazer isso complicando um pouco, definindo a cor em uma coluna do select que você fizer

Link to comment
Share on other sites

xBrowse com array da tranquilo, DBF também é tranquilo....

Agora fazer com o RECNO não da, pois o RECNO no SQLRDD é um numero sequencial, então se tiver registros deletados no meio da tabela ele nao fica certo.

Ex:

CODIGO NOME RECNO DELETADO

000001 XXXXXXX 1 NAO

000002 YYYYYYY 2 SIM

000003 ZZZZZZZZ 3 NAO

No exemplo acima no xBrowse ele só vai exibir os codigos 1 e 3, porem os dois ficaram com a linha da mesma cor porque o recno de ambos é impar...

Oi Emotta, eu disse isso pensando em um USE SQL por exemplo, que o RECNO fica algo sequencial e diferente do SQL_ROWID..... pelo menos acho que fica diferente ^^

De qualquer forma, dá pra fazer USE SQL criando uma nova coluna, e essa nova coluna você pode numerar sequencialmente e aí testar ela nos blocos do bClr, ou já retornar a cor diretamente..... bom, só explicando ...... o importante seria o sistem informar se conseguiu ^^

Link to comment
Share on other sites

Erciley, em SQL é a mesma coisa... Se deletar registros do meio da tabela ele nao refaz o recno....

Oi Emotta, eu disse isso pensando em um USE SQL por exemplo, que o RECNO fica algo sequencial e diferente do SQL_ROWID..... pelo menos acho que fica diferente ^^

De qualquer forma, dá pra fazer USE SQL criando uma nova coluna, e essa nova coluna você pode numerar sequencialmente e aí testar ela nos blocos do bClr, ou já retornar a cor diretamente..... bom, só explicando ...... o importante seria o sistem informar se conseguiu ^^

Link to comment
Share on other sites

Emotta, quanto a isso eu tenho minhas dúvidas, e aposto que não é bem isso.

Ou melhor, se abrir a tabela do banco de dados, via LIB, para trabalhar como DBF, onde não haja SQLFILTER nem nada, aí concordo com você

Agora se usar USE SQL, filtrando os dados pelo WHERE, para usar como DBF, o RECNO, que na verdade acaba pegando o valor do SQL_ROWID, não se permanece.

Mas lembro que percebi uma particularidade no retorno da função RECNO, quando no seu SELECT tem a coluna SQL_ROWID, e quando não tem, mas agora não me lembro exatamente o que era para falar.

Link to comment
Share on other sites

Erciley, estamos falando de DBUSEAREA aqui ok.... Se usar SELECT direto aí é outra história, aí o recno() é um sequencial do resultset... Mas o que me referi desde o inicio é o uso como se fosse DBF, ou seja, DBUSEAREA...

Emotta, quanto a isso eu tenho minhas dúvidas, e aposto que não é bem isso.

Ou melhor, se abrir a tabela do banco de dados, via LIB, para trabalhar como DBF, onde não haja SQLFILTER nem nada, aí concordo com você

Agora se usar USE SQL, filtrando os dados pelo WHERE, para usar como DBF, o RECNO, que na verdade acaba pegando o valor do SQL_ROWID, não se permanece.

Mas lembro que percebi uma particularidade no retorno da função RECNO, quando no seu SELECT tem a coluna SQL_ROWID, e quando não tem, mas agora não me lembro exatamente o que era para falar.

Link to comment
Share on other sites

Olá,

Sql_rowid é dá SqlLib.

SET @nRecno:=0;

SELECT @nRecno:=@nRecno+1 AS recno, campo FROM tabela;

Ola Evandro, sql_rowid não seria o ID da tabela, este nome a maioria utiliza pelo fato do aplicativo dbf2sql do Klebyer dar este nome na integração do dbf para mysql, mais poderia ser qualquer outro nome, e não teria nenhum vinculo com a sqllib, ou estou enganado sobre isto...

Abraços

Luiz Fernando

Link to comment
Share on other sites

Olá.

Emotta, e eu estava pensando em SQLLIB, onde você pode fazer o SELECT que quiser, criar a coluna que quiser, numerar como quiser através do SELECT, e utilizar com comandos DBF posteriormente, por isso dei esse exemplo. Sempre me confundo com os termos SQLRDD e SQLLIB, talvez foi aí que nos desentendemos.

Toda tabela criada pela SQLLIB, é criada com a coluna SQL_ROWID. Vailtom fez isso por compatibilidade/similaridade, com o RECNO, acredito.

O exemplo do Evandro, é a forma que falei em "criar uma coluna" e aí testar se é par ou ímpar, para colorir. Isso na SQLLIB funcionaria, fazendo um USE SQL e trabalhando como DBF. Eu particularmente prefiro utilizar tudo como array, salvo raras exceções.

O texto é só para esclarecer oq eu estava dizendo. Beijos :wub:

Link to comment
Share on other sites

Erciley, em SQLRDD também da pra criar o select conforme a necessidade... Quando é assim funciona tranquilo o efeito "pijama" no xBrowse. O problema é quando se abre o xBrowse em uma tabela do banco com DBUSEAREA normal (como em dbf). Essa é a questão.

vlw abraços

Olá.

Emotta, e eu estava pensando em SQLLIB, onde você pode fazer o SELECT que quiser, criar a coluna que quiser, numerar como quiser através do SELECT, e utilizar com comandos DBF posteriormente, por isso dei esse exemplo. Sempre me confundo com os termos SQLRDD e SQLLIB, talvez foi aí que nos desentendemos.

Toda tabela criada pela SQLLIB, é criada com a coluna SQL_ROWID. Vailtom fez isso por compatibilidade/similaridade, com o RECNO, acredito.

O exemplo do Evandro, é a forma que falei em "criar uma coluna" e aí testar se é par ou ímpar, para colorir. Isso na SQLLIB funcionaria, fazendo um USE SQL e trabalhando como DBF. Eu particularmente prefiro utilizar tudo como array, salvo raras exceções.

O texto é só para esclarecer oq eu estava dizendo. Beijos :wub:

Link to comment
Share on other sites

não é tão complicado não... a logica é que ele joga os RECNOS em um array na ordem da Chave e depois localizando o recno correspondente ele retorna a posicao do array... da certinho... só vou avaliar a performance disso, mas funcionar funciona...

vlwww

abraços

emotta

tem esse topico no forum internacional, achei meio complicado dai nao fiz teste

http://forums.fivetechsupport.com/viewtopic.php?f=3&t=24327&p=138645&hilit=sqlrdd+xbrowse+ORDKEYNO#p138645

Link to comment
Share on other sites

tentei o seguinte com base em xbrowse com array que tenho aki:(aplicando em tabela)

n1=1
...
....
..
   oLbxFami:bClrStd := {|| { CLR_WHITE, If(n1%2==0, CLR_BRW1, CLR_BRW2) } }

   oLbxFami:SetRDD()

   oLbxFami:bBookMark = { | nBkm | If( nBkm == nil, n1, n1:=nBkm ) }
   oLbxFami:bSkip     = { | nSkip | Skp( Fami->(lastrec()), @n1, nSkip ) }

*--------------------------------------------------------------------------------
FUNCTION Skp( nLastrec, n1, nSkip )
    LOCAL nOld := n1
    DEFAULT nSkip := 1

    n1 += nSkip

    If n1 > nLastrec
       n1 = nLastrec
    Endif

    If n1 < 1
       n1 = 1
    Endif

Return n1 - nOld


o xbrowse fica com zebra mais os dados ficam repetindo, o mesmo dado do inicio do browse

Link to comment
Share on other sites

  • 4 years later...
Function SR_OrdkeyNo()
Local nItem:= 0, nRecno:= Recno(), nKey:= 0

DbGotop()
DbEval({|| nItem++,Iif(Recno() == nRecno, nKey:= nItem,nil) },,{|| Empty(nKey) } )
If(Empty(nKey),nKey:= nItem,nil)
DbGoto(nRecno)

Return nKey

http://forums.fivetechsupport.com/viewtopic.php?f=3&t=18670&start=0

precisei criar um coluna numerando os itens do pedido e pesquisando no forum internacional encontrei a função acima (pcordonet merece um prêmio).. irei ver o comportamento em tabelas grande numero de registro.

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...