Página 1 de 1

Otimização em telas

Enviado: 01 Set 2020 12:39
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.

Otimização em telas

Enviado: 01 Set 2020 12:47
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.