DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da ClubeDelphi
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!

Video: Rad Studio 2007-DBX4 e Firebird 2.0-Aplicação comercial de vendas do Inicio ao Fim-Parte 32-Criando layout da tela de venda

Nesta vídeo aula, criaremos todo o layout para que possamos ter uma idéia de como ficará a tela para efetuarmos as vendas.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Título: Rad Studio 2007-DBX4 e Firebird 2.0-Aplicação comercial de vendas do Inicio ao Fim-Parte 32-Criando layout da tela de venda

Tempo: 16:19 min

Resumo: Após fazer a segunda otimização do sistema seguimos no nosso curso dando inicio a criação da tela de venda. Nesta vídeo criamos todo o layout para que possamos ter uma idéia de como ficara a tela que o usuário ira utilizar para efetuar as vendas. Foi criado um projeto separado para facilitar a compilação e o teste uma vez que o sistema em breve será modularizado para trabalhar com pacotes.

Metodologia de desenvolvimento do exemplo: A tela de venda começou a ser desenvolvida em um projeto separado. Isto foi necessário, pois se criássemos direto o pacote teríamos dificuldade de compilar e teste a aplicação de vendas. Para os controles de tela ficaram nas posições estabelecidas foi utilizado a propriedade Anchors.

Tecnologias utilizadas: RadStudio 2007, FireBird2.0, DBX4

Exemplos construídos: Tela de Venda

Palavras chaves: Delphi2007, DBX4, Anchors, Vendas.

Listar todos os posts de Rad Studio 2007-DBX4 e Firebird 2.0-Aplicação comercial de vendas(básico) do Inicio ao Fim

Rodrigo Carreiro Mourão
Gestor de TI com especialização em gerência de projetos (PMI) e Governança de TI (ITIL e COBIT) pelo instituto Infnet. Embarcadero MVP e Instrutor certificado pela Borland. Graduando-se em Gestão de TI focada em negócios. Grande entusiasta do desenvolvimento orientado a objetos, padrões de projetos,...
O que você achou deste post?

    17 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Paulo Sérgo Feix
Bom dia Rodrigo, uma duvida, posso fazer este pacote, em 3 camada? Supondo um PDV usando o mecanismo de 3 camada. Outra pergunta, a vídeo aula sobre 3 camada DataSnap 2009, para quando vai esta disponível vídeo pronto? Abraço.
[há +1 ano] - Responder

 

[autor] Rodrigo Carreiro Mourão
Olá Amigo, vamos lá.

Bem 3 camadas é arquitetura sendo assim nada tem haver com 3 camadas, ou seja, você pode aplicar normalmente pois usar pacotes significa em modularizar, dividar sua aplicação para facilitar o Deploy.

Então é possivel sim basta você criar tanto o Servidor quanto o Cliente usando pacotes.

Quanto as aulas de DataSnap no 2009 já estão sendo montadas. Montei todo o roteiro e estou testando a aplicaçã. Em breve estarei postando .

Abs!!

[há +1 ano] - Responder
 

Juan Gonzales Torres
Rodrigo, primeiro parabens estou a aprender muitas coisas. Gostaria na próxima Otimização: Melhorar o combobox da pesquisa, para que seja mais rápido é não precise acessar a base de dados para pegar os fields. Solulção: 1-Verificar se existe no diretorio do aplicativo um arquivo XML no mesmo nome da Tabela
2a-Abrir e carregar deste arquivo XML os fields, muito mais rápido.
2b-Carregar como hoje da base de dados/tabela e criar e gravar no arquivo de mesmo nome XML, os fields.
3-Ter uma tela para manunteção dos arquivos XML ou seja com as opções de 1-Reconstruir, 2-Excluir. Para uma eventual corrupção do Arquivo, ou atualização da base de dados.

Valeu...

Sorte.paz.produtividade

juan
[há +1 ano] - Responder

 

[autor] Rodrigo Carreiro Mourão
Olá Juan !!!

Em primeiro lugar obrigado pelo contato, que bom que tem gostado das vídoes.  Sua ideia realmente é muito bacana e até interessante de se implementar pois esta tecnica poderia ser empregada em outros locais. Porém do ponto de vista custo beneficio eu, no projeto atual, não vejo muitas vantagens uma vez que estamos pegando apenas metadados, ou seja, isso não depende da quantidade de registro que temos na tabela. Mas é claro que se não tiver que ir ao banco melhor. Porém o ganho não vai compensar o trabalho que teriamos para implementar a rotina.

Como lhe falei e ideia é muito válida sim, mas para que possamos colocar em prática neste projeto o "custo" nãio iria compensar. Na parte de venda eu irei falar de XML, como trabalhar off-line. Acredito que ja vai dar base que quem quiser implementar este metodo ai.

Mais uma vez obrigado pelo contato e pelo feedback.

Abs !!!!!!!!!!!!


[há +1 ano] - Responder
 

Juan Gonzales Torres
Que bom que será mostrado como usar o XML. Caso faça a função te passo para ser incorporado ao curso. Valeu.

sorte.paz

juan
[há +1 ano] - Responder
 

[autor] Rodrigo Carreiro Mourão
Olá Juan, fico feliz em poder contribuir se fizer a rotina nao esqueca de me enviar pois com prazer adicionarei ao projeto !!!

Abs !!!
[há +1 ano] - Responder
 

Edson José Dionisio

Boa tarde Rodrigo, tudo bom?

como sempre venho acompanhando as videos da maneira que posso e como sempre elas estão cada veze melhores!
 
rodrigo, a minha dúvida é a seguinte: estou desenvolvendo este mesmo sistema das aulas com uma diferença, estou usando o Rad 2009 e estou encontrando um problema com relação a herança nos botões (aula 10). estou fazendo da mesma que está na vídeo e dá um AccessViolation na seguinte linha:
 
 Tform_modelo.Ac_incluirExecute(Sender: TObject);
begin
  PageControl1.ActivePage := Cadastro;
    if not Ds.DataSet.Active then
    Ds.DataSet.Open;
  Ds.DataSet.Insert;
end;
procedure Tform_modelo.Ac_incluirUpdate(Sender: TObject);
begin
     TAction(Sender).Enabled := Ds.DataSet.State in [dsInactive,dsBrowse];
end;
procedure Tform_modelo.Ac_PesquisarExecute(Sender: TObject);
begin
  if PageControl1.ActivePage = Consulta then
  PageControl1.ActivePage := Cadastro
    else
      PageControl1.ActivePage := Consulta;
 
já tentei refazer e não consigo encontrar qual a falha, pois estou fazendo igual ao video. sem herança de botões funciona normal...podes me responder Rodrigo?
 
Desde já, muito Obrigado!  
[há +1 ano] - Responder
 

[autor] Rodrigo Carreiro Mourão
Olá Amigo,

Provavelmente o DsTabela na tela que vc esta abrindo nao esta apontando para nenhum CDS. Atanção: apesar do erro ocorrer no FrmModelo lembre-se que o DsTabela tem que ser setado no form que esta abrindo, exempo, se erro e no frmcliente conecte o DsTabela no Form Cliente.

Abs!!!


[há +1 ano] - Responder
 

Edson José Dionisio
Rodrigo,
agora eu conectei a uma tabela, ainda no form modelo e ele deu outro access violation e agora com relação ao tbodbxfb.dll. aqui o que ele mostra:
 

function TDBXDynalinkDriverCommonLoader.Load(DriverDef: TDBXDriverDef): TDBXDriver;
begin
  Result := nil;
  if DriverDef.FDriverProperties[TDBXPropertyNames.LibraryName] <> '''' then
  begin
    try
      LoadDriverLibraryAndMethodTable(DriverDef.FDBXContext, DriverDef.FDriverProperties);
      Result  := CreateDynalinkDriver;
      FreeOldLibrary;
      FMethodTable := nil;
    finally
      FreeAndNil(FMethodTable); // NO-OP if success because it is set to nil.
    end;
  end;
end;
[há +1 ano] - Responder
 

[autor] Rodrigo Carreiro Mourão
Olá amigo talvez a atualização do driver resolva, já está na versão 0.9 Outro detalhe é verificar se a dll nao está na pasta do executável e na system32. Ja tive problema com isso.

Espero ter ajudado !!

Abs!!
[há +1 ano] - Responder
 

[autor] Rodrigo Carreiro Mourão
Olá Edson, eu precisaria analisar e depurar o fonte para verificar o que pode esta ocorrendo. Tente rodar em outra maquina se puder !!!

Na splash das minhas videos tem o meu email, compacte e mande pra mim pra eu dar uma olhada !!!

Abs !!!
[há +1 ano] - Responder
 

Edson José Dionisio
Boa tarde Rodrigo,
por enquanto esta saindo tudo certo com o treinamento, exceto uma dúvida que me surgiu a alguns instantes com relação ao master-detail. No sistema de matrículas que eu estou desenvolvendo eu tenho as tabelas de matricula, aluno, professor, idioma, nivel, turma e notas. creio que seja necessário a criação de tabelas auxiliares (ainda vou rever esse ponto), mas já de ante-mão, é possível a relação master-detail com mais de 2 conexões??

obrigado pela atenção!
[há +1 ano] - Responder
 

[autor] Rodrigo Carreiro Mourão
Olá Edson !!

Este estrutura master detail suporta se ano me engando 13 data set. Eu já cheguei a no máximo quatro:

Clientes -> Notas -> Faturas -> Duplicatas.

Fazendo as conexões corretamente não haverá problema algum !!!

Abs !!!
[há +1 ano] - Responder
 

Saul Gabeloni
Saudações Rodrigo, tudo bem?

To assistindo as video aulas, tenho gostado bastante.

Estou começanda a me aventurar no Delphi a algum tempo, porém estou começando a criar uma aplicação em 3 camadas. Tudo estava sossegado até entrar no tão temido mestre/detalhe.
Ja procurei por muito materiais, mas todos com 2 camadas, o q torna tudo simples.

O que estou fazendo é o seguinte.

- Qdo do lado cliente dou o upate(0) la no servidor antes de gravar no banco eu pego o generator do cara.

- Porem qdo é mestre detalhe ele tbem faz isso, porem qdo chega no servidor o mestre é zero, ai vai pegar o generator bonitinho, porem o detalhe ainda continua com a ligação sendo zero.

- Ja li muitas materia POGs, que no OnNewRecord do cliente deixam o Id com -1 ou ja pegam o generator, mas se essa for a unica solução então terei q programar do lado cliente ? Se tiver que fazer isso então a arquitetura n camadas cai por terra.., não há o pq fazer em n camadas ?!

Existe alguma forma de contornar isso no servidor, pq não queria deixar codigo fonte no cliente.

Se vc tiver alguma materia para 3 camadas que possa ajudar eu agradeço !

Sem mais

Saul Gabeloni
Londrina, PR
[há +1 ano] - Responder
 

[autor] Rodrigo Carreiro Mourão
Existe um metodo no DataSetProvider, chamado BeforeUpdateRecord. Nele vc consegue interceptar o pacote que esta indo para o banco. Gerar a chave e passar para a chave. Isso tudo no lado do servidor.

O caminho e por ai !!

Abs!!
[há +1 ano] - Responder
 

Anderson Jose Ferreira Da Silva
procedure TFrmPerfil.LoadDefaultActions;
var
  I: Integer;
begin
  if DsDetail.DataSet.RecordCount > 0 then
  begin
    with DsDetail.DataSet do
    begin
      First;
      while not EOF do
        Delete;
      TClientDataSet(DsDetail.DataSet).ApplyUpdates(0);
    end;
  end;
 
  for I := 0 to Pred(FAcoes.ActionCount) do //esta dando erro nessa linha acsses violation nessa linha estou usando delfhi 2010

  begin
    with DsDetail.DataSet do
    begin
      Append;
      FieldByName(''''''''''''''''NAME'''''''''''''''').AsString := TAction(FAcoes.Actions[I]).Name;
      FieldByName(''''''''''''''''CAPTION'''''''''''''''').AsString := TAction(FAcoes.Actions[I]).Caption;
      FieldByName(''''''''''''''''PREMISSAO'''''''''''''''').AsString := ''''''''''''''''F'''''''''''''''';
      Post;
    end;
  end;
end;
 
sera q  daria par me ajudar  não consigo descobrir o erro
[há +1 ano] - Responder

 

[autor] Rodrigo Carreiro Mourão
Olá Amigo.

Provavelmente ou o Action List não foi passado no create do form ou entao nao foi passado para o atributo FAcoes. REvise a video e compare com seu código.

Abs!!!

[há +1 ano] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03