Otimização em telas

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Otimização em telas

Mensagem por JoséQuintas »

O que tem a ver otimizar tela com SQL?
Muito.

Em DBF, isto é normal, e até pode ser em SQL também.

Código: Selecionar todos

Encontra( nIdFinanceiro, "financeiro" )
nIdFinanceiro := financeiro->IdFinanceiro
nIdCliente     := financeiro->IdCliente
nIdPortador  := financeiro->idPortador
nValor := financeiro->Valor
@ 1, 0 SAY "id.financeiro" GET nIdFinanceiro
@ Row() + 1, 0 SAY "cliente:" GET nIdCliente
Encontra( nIdCliente, "clientes" )
@ Row(), 22 SAY clientes->CLInome
@ Row() + 1 SAY "portador:" GET nIdPortador
Encontra( nIdPortador, "portador" )
@ Row(), 22 SAY portador->PORNome
@ Row() + 1, SAY "valor" GET nValor
READ
Mas.... em SQL... podemos fazer isto:

Código: Selecionar todos

WITH OBJECT cnSQL
   :cSQL := "SELECT FINANCEIRO.*, CLIENTES.clinome, PORTADOR.pornome ..."
   :Execute()
   nIdFinanceiro := :Number( "IDFINANCEIRO" )
   nIdCliente     := :Number( "IDCLIENTE" )
   nIdPortador  := :Number( "IDPORTADOR" )
   nValor := :Number( "VALOR" )
   @ 1, 0 SAY "id.financeiro" GET nIdFinanceiro
   @ Row() + 1, 0 SAY "cliente:" GET nIdCliente
   @ Row(), 22 SAY :String( "CLINOME" )
   @ Row() + 1 SAY "portador:" GET nIdPortador
   @ Row(), 22 SAY :String( "PORNOME" )
   @ Row() + 1, SAY "valor" GET nValor
   :CloseRecordset()
ENDWITH
   READ
Pra que pedir um pedacinho da tela por vez, se pode pedir a tela inteira de uma vez?
É mais rápido e economiza fonte.

Nota:
Se as tabelas tem nome de campo repetido, com SQL não é problema, é usar ALIAS pra usar outro nome.
Com certeza deixei pra fazer isso pra depois.
E tanto faz se é console ou GUI, isso ajuda nos dois casos.
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

Otimização em telas

Mensagem por JoséQuintas »

Lembrei de um recurso do VB6, que era fazer o "bind" do campo ao textbox.

Tradução:

Você criava a tela na IDE, vinculando o "get" ao campo do ADO.
Era só fazer SKIP (MoveNext()), e a tela já era atualizada automaticamente.
O mesmo pra inclusão - ao contrário do Harbour, o "append blank" é local, sem salvar no servidor, então podia ser preenchido e podia escolher entre salvar ou descartar tudo.

Pois é... uma IDE não se limita a apenas desenhar tela... vai muito além disso.
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