CARREGAR INFORMAÇÕES (LOAD OU SHOWN)

 Tópico anterior Próximo tópico Novo tópico

CARREGAR INFORMAÇÕES (LOAD OU SHOWN)

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#493873 - 19/05/2020 14:15:58

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Boa tarde pessoal, qual a forma mais rápida e segura de carregar as informações do Banco de Dados.
Ao carregar o FORM vocês Utilizam qual dos Eventos? (LOAD ou SHOWN)





#493874 - 19/05/2020 16:26:09

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Nem um, nem outro necessariamente. Depende do que você quer fazer. Esses eventos servem para diferentes propósitos. Eles não estão ali à toa.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#493875 - 19/05/2020 17:07:03

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Citação:
:
Nem um, nem outro necessariamente. Depende do que você quer fazer. Esses eventos servem para diferentes propósitos. Eles não estão ali à toa.


Não entendi Kerplunk.
no caso como que vc chama as funções. vou citar um exemplo:

tenho uma tela de cadastro de cliente certo?

tenho uma função para carregar.
quando abro a tela. eu Carrego o ID (00001), para exibir na tela.

tenho outra Função para carregar as permissões do usuario.
no qual o usuario vai poder cadastrar ou não. na tela tenho varios botoes. Cadastrar, excluir, consultar... dai eu desabilito o botão caso o usuario nao tenha permissao certo?

são 2 funções SELECT ao Banco de dados.


  No momento estou chamando elas no LOAD, andei pesquisando tbm da certo chamar no SHOWN

no seu Ponto de Vista. Onde vc chamaria essas duas Funções ?



#493876 - 19/05/2020 17:09:02

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


  Citei apenas o exemplo da tela de Cadastrar o Cliente,

Agora vai outro Exemplo: a tela de Consultar Cliente.  que tem um DataGridview. onde carrega todos os clientes cadastrados no banco de Dados. e ai ? seria qual dos dois eventos LOAD ou SHOWN ?  




#493877 - 19/05/2020 19:12:04

FUTURA
.
Cadast. em:Maio/2004


Vou te falar como faço hoje, por exemplo, eu tenho algumas telas, que carrego em combos, grupos de produtos, marcas, e demais que uso para filtros em relatórios e cadastros. Fazia essa carga no load. mas a abertura ficava um pouco lenta em algumas situações, hoje eu abro o form e qdo o componente que carrega dados do banco recebe o focu, é q eu carrego os dados, fica rápido e não fico carregando dados desnecessários, pois as vezes nem usa.



#493880 - 19/05/2020 22:22:10

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Citação:
:
:
Nem um, nem outro necessariamente. Depende do que você quer fazer. Esses eventos servem para diferentes propósitos. Eles não estão ali à toa.

Não entendi Kerplunk.
no caso como que vc chama as funções. vou citar um exemplo:

tenho uma tela de cadastro de cliente certo?

tenho uma função para carregar.
quando abro a tela. eu Carrego o ID (00001), para exibir na tela.

tenho outra Função para carregar as permissões do usuario.
no qual o usuario vai poder cadastrar ou não. na tela tenho varios botoes. Cadastrar, excluir, consultar... dai eu desabilito o botão caso o usuario nao tenha permissao certo?

são 2 funções SELECT ao Banco de dados.


  No momento estou chamando elas no LOAD, andei pesquisando tbm da certo chamar no SHOWN

no seu Ponto de Vista. Onde vc chamaria essas duas Funções ?

Nem um nem outro. Permissões de usuários são conhecidos como "Profiles".
Deixar botões habilitados ou não é questão de visualização, portanto, deve ser antes da exibição do form, ou seja, no momento do carregamento do form(Load). O correto mesmo seria usar Identity pra isso.

O Form, é intrinsicamente relacionado com a entidade à qual ele serve. Portanto, um form não é mais que uma exibição de uma entidade. Uma alternativa é criar construtores do form que recebam instâncias de entidade, assim os controles ficam necessariamente atrelados à cada propriedade e não há necessidade de formular queries manualmente.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


Resposta escolhida #493883 - 21/05/2020 06:46:03

PEGUDO
RIO DE JANEIRO
Cadast. em:Março/2009


Última edição em 24/05/2020 06:22:55 por PEGUDO

Cara,
Independentemente do que seu programa vai fazer ou como ele carregará os dados, você tem que entender que:
LOAD: Executa os códigos que estão dentro deste bloco, antes do Form ser exibido;
SHOWN: Executa os códigos que estão dentro deste bloco, DEPOIS que o Form é exibido/aberto.

Se estiver falando de desempenho, depende muito de como sua Query SQL é montada; da quantidade de dados retornados; se seu código VB tem funções e/ou Subs redundantes (que fazem a mesma coisa em diversos lugares diferentes, ou seja não é centralizada), memória total da máquina onde seu programa for executado, enfim.

Quanto ao LOAD e ao SHOWN, você só tem que decidir qual é o melhor momento para exibir os dados para o usuário.

Você perguntou como a gente faria:
Meu irmão me incumbiu de criar um programa para ele. Então, eu ecidi que este programa trabalhará de forma DESCONECTADA quando eu precisar preencher DataGridViews ou ComboBoxes:
1- O programa terá uma classe Shared que poderá ser acessada em todo o programa;
2- Criei uma Thread que buscará os dados que eu quero.
3- Eu também abuso muito das STORED PROCEDURES. Eu deixo todo o trabalho de pesquisa para a "Engine" do banco de dados e livro o programa deste fardo.
4- Então, no LOAD, eu chamo essa segunda thread e coloco os dados retornados em uma COLLECTION que está na classe Shared que comentei no item 1. Assim, sempre que eu precisar consultar dados de um cliente selecionado, eu não preciso ir no banco de dados fazer consultas a todo momento;

OBS.: O jeito certo de se trabalhar de forma DESCONECTADA é com um DataTable ou DataSet. Eu adquiri a peculiaridade de trabalhar com COLLECTION devido a vários fatores que não cabem aqui, mas aconselho, se você quiser, estudar DtaTable ou DataSet.

Então é isso. Não quero dizer que meu jeito e a forma como trato os dados é o melhor caminho. Só quero mostrar que você tem possibilidades de como tratar seus dados e, como o KERPLUNK falou, os métodos estão ali por um motivo.
Se você quer desempenho, centralize as Subs, Functions e Property de seu código para que você tenha menos código escrito e seu programa tenha menos carga.

Espero ter ajudado.


"Às vezes, para poder andar pra frente, o homem deve deixar tudo para trás"

#493907 - 23/05/2020 10:17:28

PLUGSOFTSM
SANTA MARIA
Cadast. em:Julho/2015


Amigo...
Assino embaixo de tudo que o colega PEGUDO falou.
Existem padrões de programação e existem alternativas que vc usa para melhorar o desempenho do seu aplicativo que nem sempre vão de encontro ao "recomendado". Na maioria das vezes essas decisões são tomadas de acordo com o perfil dos nossos clientes.
Eu por exemplo adotei algumas técnicas aqui que podem ser uteis pra vc....
1 - Abuse do uso das classes;
2 - O que causa lentidão a um aplicativo quando instalado em equipamentos mais simples(o que é o caso da maioria dos usuários hoje) o que torna ele lento é o acesso ao Banco de Dados. Então o que vou te citar agora serve para outras situações. Ao iniciar o aplicativo eu carrego a lista de usuários numa classe com todas as informações que o sistema vai precisar. Ao necessitar da informação de um usuário eu consulto a lista e não o Banco de Dados. O processo é praticamente instantâneo e não consome recursos (e isso vc pode fazer com outros itens, como grupo de produtos, dados da empresa, etc...)
3 - Com relação a informação acima, cuidado para não carregar listas de itens que podem ser mudados pelo usuário.Como produtos, clientes... pense nas consequências;
4 - Se for utilizar o evento Load faça uso de threads e execute-as em segundo plano. Elas vão melhorar muito o desempenho do seu aplicativo e vão eliminar aquela sensação de "travado"....
5 - Muito, muito mas muito cuidado mesmo com combobox, listbox que são preenchidos com informações do Banco de Dados. É comum programadores usarem os eventos do tipo changed dos mesmos e, se não tratados entram em redundância e dependendo do volume de dados a ser recuperados do Banco de Dados, efetuam a mesma operação dezenas e até centenas de vezes;



#493917 - 24/05/2020 00:18:46

COQUITO
BELO HORIZONTE
Cadast. em:Junho/2014


No meu caso, eu fazia isso antigamente carregava no load e quando executava o form ficava muito lenta, mais achei um metodo muito mais prático e simples dentro de uma camada onde que chamo o script.
na verdade quando passamos blocos de codigos carregada no load deixa muito lenta principalmente quando vc não da um top em teu select, esse processo acabei elminando muito ao mudar meu processo de desenvolvimento. hoje eu recomendo bastante criar uma camada somente para script do sql e converter para string pasando pelo source. assim customiza 70% codigo, e dou uma instrução ao momento de chamar o evento load.


Deus é melhor amigo meu...


#493919 - 24/05/2020 05:38:26

PEGUDO
RIO DE JANEIRO
Cadast. em:Março/2009


Última edição em 24/05/2020 06:25:11 por PEGUDO

COQUITO, por isso o PLUGSOFTSM e eu aconselhamos o uso de Threads secundárias/separadas.
Sabemos que o evento LOAD pode ser um vilão de vez em quando, mas como falamos: o JOHNSTEVE precisa estudar sobre desempenho.
Como o JOHNSTEVE, nós, no começo, não tínhamos o macete, a malícia e experiência que temos agora.
Ele poderia, por exemplo, utilizar o "Add New Data Source"  do próprio Visual Studio. Enfim...

O importante é que o JOHNSTEVE tenha a capacidade de entender seu próprio programa e que se dedique a estudar e a entender POO (OOP)


"Às vezes, para poder andar pra frente, o homem deve deixar tudo para trás"

#493921 - 24/05/2020 08:12:20

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Citação:
:
Cara,
Independentemente do que seu programa vai fazer ou como ele carregará os dados, você tem que entender que:
LOAD: Executa os códigos que estão dentro deste bloco, antes do Form ser exibido;
SHOWN: Executa os códigos que estão dentro deste bloco, DEPOIS que o Form é exibido/aberto.

Se estiver falando de desempenho, depende muito de como sua Query SQL é montada; da quantidade de dados retornados; se seu código VB tem funções e/ou Subs redundantes (que fazem a mesma coisa em diversos lugares diferentes, ou seja não é centralizada), memória total da máquina onde seu programa for executado, enfim.

Quanto ao LOAD e ao SHOWN, você só tem que decidir qual é o melhor momento para exibir os dados para o usuário.

Você perguntou como a gente faria:
Meu irmão me incumbiu de criar um programa para ele. Então, eu ecidi que este programa trabalhará de forma DESCONECTADA quando eu precisar preencher DataGridViews ou ComboBoxes:
1- O programa terá uma classe Shared que poderá ser acessada em todo o programa;
2- Criei uma Thread que buscará os dados que eu quero.
3- Eu também abuso muito das STORED PROCEDURES. Eu deixo todo o trabalho de pesquisa para a "Engine" do banco de dados e livro o programa deste fardo.
4- Então, no LOAD, eu chamo essa segunda thread e coloco os dados retornados em uma COLLECTION que está na classe Shared que comentei no item 1. Assim, sempre que eu precisar consultar dados de um cliente selecionado, eu não preciso ir no banco de dados fazer consultas a todo momento;

OBS.: O jeito certo de se trabalhar de forma DESCONECTADA é com um DataTable ou DataSet. Eu adquiri a peculiaridade de trabalhar com COLLECTION devido a vários fatores que não cabem aqui, mas aconselho, se você quiser, estudar DtaTable ou DataSet.

Então é isso. Não quero dizer que meu jeito e a forma como trato os dados é o melhor caminho. Só quero mostrar que você tem possibilidades de como tratar seus dados e, como o KERPLUNK falou, os métodos estão ali por um motivo.
Se você quer desempenho, centralize as Subs, Functions e Property de seu código para que você tenha menos código escrito e seu programa tenha menos carga.

Espero ter ajudado.



BOA BROTHER, BEM EXPLICATIVO, SHOWWW DE BOLA GOSTEI DAS DICAS. VOU FAZER EM PRATICA,



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JOHNSTEVE em 25/05/2020 15:10:41