3 em 1 com alias

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

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

3 em 1 com alias

Mensagem por Itamar M. Lins Jr. »

Olá!

Código: Selecionar todos

clientes->(dbSetOrder(1), dbGoTop(), dbSeek(cChave))
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

3 em 1 com alias

Mensagem por alxsts »

Olá!

É um recurso bem antigo (vem desde o Clipper 5) e bem útil (para quem usa DBF (especialmente dentro de code blocks). Mas é bom divulgar pois muitos o desconhecem. Lembro-me de ter usado isto em 2006...

No tópico Coluna RowVersion em Tabela DBF, onde nós dois interagimos, tem um exemplo:

Código: Selecionar todos

135	   tbState->( DbGoTop(), ;
136	              Browse(), ;
137	              DbEval( { || tbState->nmEstado := Upper( tbState->nmEstado ) } ), ;
138	              DbGoTop(), ;
139	              Browse(), ;
140	              DbCloseArea() ;
141	            )
O valor da última expressão é retornado. Por exemplo:

Código: Selecionar todos

LOCAL cCustName, nCust := 1024

   cCustName := Cust->( DbSetOrder( 2 ), DbSeek( nCust ), CustName ) --> retorna o nome do cliente
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

3 em 1 com alias

Mensagem por JoséQuintas »

E isso também pode ser usado em classes, pra facilitar o INLINE, uma vez que é codeblock.

Código: Selecionar todos

METHOD Soma( nValue ) INLINE ::nSoma += nValue, ::nSoma
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

3 em 1 com alias

Mensagem por JoséQuintas »

Ou num VALID:

Código: Selecionar todos

.... GET nAliIcms picture "999" VALID nValIcms := nValor * nAliIcms / 100, .T.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

3 em 1 com alias

Mensagem por JoséQuintas »

Mas ainda prefiro minha função, fica mais claro do que se trata, e desfaz as mudanças.
Mais ou menos isto, como resumo:

Código: Selecionar todos

Encontra( nCodigo, "clientes", "nome" )
...

FUNCTION Encontra( xChave, cAlias, cOrder )
LOCAL nSelect, xOrder, lEof
nSelect := Select()
SELECT   ( Select( cAlias ) )
xOrder := OrdSetFocus( cOrder )
SEEK xChave
lEof := Eof()
OrdSetFocus( xOrder )
SELECT ( nSelect )
RETURN lEof
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/
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

3 em 1 com alias

Mensagem por Itamar M. Lins Jr. »

Olá!
prefiro minha função,
Com uso do alias, select é redundância.
Toda vez que uso DbSeek() eu coloco (MeuAlias)->(OrderSetFocus() ), (MeuAlias)->(DbSeek("xyz")).

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

3 em 1 com alias

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:Com uso do alias, select é redundância.
Toda vez que uso DbSeek() eu coloco (MeuAlias)->(OrderSetFocus() ), (MeuAlias)->(DbSeek("xyz")).
Dependendo da situação, isso pode significar mudar o índice original e possibilidade de problemas.
Aliás.... tá aí uma boa aplicação de multithread.
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/
Responder