Página 1 de 3 123 ÚltimoÚltimo
Resultados 1 a 10 de 24

Tópico: [DUVIDA] Controlador de BD para MS Access

  1. #1
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like

    [DUVIDA] Controlador de BD para MS Access

    Ola,
    Invaders.

    Estou desenvolvendo um projeto simples em Delphi XE3.

    É apenas um form que tem a função de inserir, deletar, alterar e pesquisar dados de um Banco de Dados no formato MS Access 2003.

    Estou seguindo o seguinte tutorial:
    http://programadoronline.blogspot.co...-e-access.html

    Sim, estou seguindo tuto pois não sou um expert em Delphi.

    E o projeto esta em: https://www.dropbox.com/home/Public/...20Delphi%20XE3

    Eu queria que me orientassem quanto a parte de pesquisa.

    Para os campos Tipo, Tecelagem e Nome do tecido do BD terá uma combobox para selecionar os itens desse campo, ex:
    No campo Tipo (Basico, Estampado, Dry, ...)

    PRIMEIRA PERGUNTA:
    Essa combobox deverá ser TBDComboBox ou o que??

    SEGUNDA PERGUNTA:
    Digamos que no campo 'Tecelagem' tenha as 3 seguintes tecelagens (Advance, Santa Constancia e Duart), e eu começo a trabalhar com uma
    quarta tecelagem, como a "Doutex", para inserir essa nova tecelagem basta escrever na combobox como se fosse uma textbox?

    TERCEIRA PERGUNTA:
    Existe uma hierarquia nesses 3 campos: Tipo, Tecelagem e Nome do Tecido, exatamente nessa ordem.
    Então no tipo A temos as tecelagens A, B e C; no tipo B temos as tecelagens A, D, E e F, ...
    Tanto o tipo B quanto o tipo A tem tem a tecelagem A, mas nem todos tecidos mas a tecelagem A tem os tecidos A, B, C e D, sendo que os tecidos A e B são tipo A e os tecidos C e D são tipo B.
    Queria pesquisar da seguinte forma: Selecionarei o tipo, e terei as tecelagens relacionadas, depois selecionarei a tecelagem e terei os tecidos relacionados.
    No VB.Net não consegui fazer isso, alem de tudo para cada dado tinha um tipo, ou seja, tinha 10 tecidos básicos no campo tipo aparecia 10 nome "Básico".
    Então gostaria de facilitar a pesquisa usando esse sistema de hierarquia.

    QUARTA PERGUNTA:
    Como ficaria o sistema de alteração, pois campos como 'Preço' são constantemente modificados.


    Desde já, grato.
    Att,
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

  2. #2
    Membro ingresso Avatar de hacker_wap
    Data de Ingresso
    Feb 2009
    Posts
    151
    Post Thanks / Like
    Não entendi muito bem, mais eu faria um dos dois tipos de relacionamentos a seguir.


    Aqui segue um exemplo bem básico, seguindo o primeiro modelo(azul).
    https://dl.dropboxusercontent.com/u/...s/AcpGuedes.7z
    É melhor não dizer nada e pensarem que é bobo, do que abrir a boca e acabar com as duvidas.

  3. #3
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like
    Não entendi,
    você criou 3 tabelas??
    Uma tecido outra tipo e outra tecelagem??

    Na verdade eu ja melhorei o que eu tinha, consigo cadastrar, apagar e ate modificar,
    o problema é quando eu vou cadastrar eu acabo sobrescrevendo o dado anterior se eu não mudar o campo Codigo (ou ID).
    Queria criar um botão cadastrar e na hora que for um cadastro ele mesmo inserir um novo ID.
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

  4. #4
    Membro ingresso Avatar de hacker_wap
    Data de Ingresso
    Feb 2009
    Posts
    151
    Post Thanks / Like
    Exatamente criei 3 tabelas é assim que costumo trabalhar quando as "categorias" podem ser cadastradas.
    Mais você pode simplesmente salvar o texto das categorias e depois pegar eles sem repetir usando um SELECT DISTINCT ...

    Bom quanto ao campo ID, você pode deixar o campo com auto incremento no banco, ou pegar o ultimo ID e somar 1, a titulo de curiosidade no exemplo que postei eu usei a quantidade de segundos desde 01/01/1970(claro que eu não recomendo isso).
    É melhor não dizer nada e pensarem que é bobo, do que abrir a boca e acabar com as duvidas.

  5. #5
    Veterano ingresso
    Data de Ingresso
    Jan 2011
    Localização
    Pguá ~ PR
    Posts
    2.363
    Post Thanks / Like
    Saudações Acp.
    Aviso:
    1. O tópico foi movido para a área mais adequada, seção de dúvidas.
    2. O link de download que você disponibilizou no seu post inicial é inválido.


    1ª Questão: Essa combobox deverá ser TBDComboBox ou o que?

    Acredito que o componente correto para se utilizar com base no que você quer é o DBLookupComboBox.
    Por que? Considere que você esteja trabalhando com uma tabela principal chamada Estados, e que esta possui uma coluna que é o código do grupo do Estado, e que os atributos de um Estado estão na tabela Cidades. Se estamos consultando a tabela Estados, não é atraente apresentarmos para o usuário o código da Cidade, o ideal seria que o usuário visualizasse as Cidades cadastradas. Um exemplo prático(Veja o vídeo).


    2ª Questão: [...]Para inserir essa nova tecelagem basta escrever na combobox como se fosse uma textbox?

    Utilizando o DBLookupComboBox acredito que não deva funcionar. Funcionaria se você utilizasse um Combobox convencional(Aba Standart), manipulando
    o evento OnEnter. Eu acredito que o melhor modo para fazer isso é utilizar a função InputQuery(Tipo de retorno: booleano) ou a função InputBox(Tipo de retorno: String).


    3ª Questão: Existe uma hierarquia nesses 3 campos: Tipo, Tecelagem e Nome do Tecido, exatamente nessa ordem.Então no tipo A temos as tecelagens A, B e C; no tipo B temos as tecelagens A, D, E e F,[...]. Tanto o tipo B quanto o tipo A tem tem a tecelagem A, mas nem todos tecidos mas a tecelagem A tem os tecidos A, B, C e D, sendo que os tecidos A e B são tipo A e os tecidos C e D são tipo B. Queria pesquisar da seguinte forma: Selecionarei o tipo, e terei as tecelagens relacionadas, depois selecionarei a tecelagem e terei os tecidos relacionados.
    No VB.Net não consegui fazer isso, alem de tudo para cada dado tinha um tipo, ou seja, tinha 10 tecidos básicos no campo tipo aparecia 10 nome "Básico".
    Então gostaria de facilitar a pesquisa usando esse sistema de hierarquia.

    Sinceramente não consegui entender essa pergunta, mas com base no que entendi criei um exemplo(Veja as imagens abaixo).

    Estrutura de relações do banco criado no Access.







    4ª Questão: Como ficaria o sistema de alteração, pois campos como 'Preço' são constantemente modificados.

    Você pode alterar os dados diretamente de um DBGrid, por exemplo.



    Os vídeos a seguir podem ajudar você.
    1. Delphi: Formulário Mestre/Detalhe
    2. ClientDataSet: Estudo do MasterDetail

    Link de download do exemplo: Dropbox - 116Kb
    Senha: invaders

    Última edição por str0p; 20 Oct 2013 às 18:21.

  6. #6
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like
    Então, já foi de grande ajuda as respostas ate aqui.

    Mas então

    Vou facilitar

    Já tenho uma tabela no Access estruturada da seguinte forma

    País | Estado | Cidade | População

    Na coluna país tenho: Brasil e EUA
    Podendo ser cadastrado mais países depois
    (Inclusive é por isso que não crio outras tabelas, pois teria que editar meu programa sempre que inserisse um novo país)

    Se eu selecionar o país Brasil na combobox Estado deverá aparecer somente estados do Brasil: PA, GO, SP, RJ, RS, ...

    Se eu selecionar o estado GO deverá aparecer somente cidades de Goiás: Goiânia, Goiás Velho, Anápolis, Caldas Novas, Pirinópoles, ...

    Isso, se eu arrumar com a estrutura de BD do access já resolve??
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

  7. #7
    Membro ingresso Avatar de hacker_wap
    Data de Ingresso
    Feb 2009
    Posts
    151
    Post Thanks / Like
    Só você estruturar da forma que o r00t disse.
    É melhor não dizer nada e pensarem que é bobo, do que abrir a boca e acabar com as duvidas.

  8. #8
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like
    Se eu tenho uma tabela como eu falei (um pouco mais cheia de informação):
    País | Estado | Cidade | população | n de mulheres | n de homens | n de crianças | n de escolas

    Eu seleciono o País, depois o Estado e depois a Cidade, e então automaticamente aparece nos outros campos as outras informações.

    Eu quero isso independente do datagrid, não quero ter que ficar lendo isso no datagrid

    Como na imagem abaixo.



    So que na imagem os campos são preenchidos automaticamente quando eu seleciono no datagrid.
    Os campos servem para consulta ou cadastro (é melhor de ver nesses campos do que no grid), eu posso preencher e clicar em cadastrar e automaticamente entra no BD.
    So que o exemplo esta em VB.Net que pareceu ser muito problematico.

    E no lugar das textbox tipo, tecelagem e nome do tecido são combobox.

    O BD que tenho já tem dados inseridos, fiz da forma que me falaram, mas quando executo as DBLookUpCombobox aparecem em branco, como se não estivessem sendo preenchidas ou como se não estivesses lincando ao BD.

    https://www.dropbox.com/sh/4diypsz4y...Vwh6XTz/MP_ISW
    Última edição por guedes.acp; 20 Oct 2013 às 20:39.
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

  9. #9
    Membro ingresso Avatar de hacker_wap
    Data de Ingresso
    Feb 2009
    Posts
    151
    Post Thanks / Like
    Acp no seu banco só tem uma tabela, não tem nenhuma estrutura de relacionamento como as citadas, o ideal seria fazer algo semelhante ao que eu e o r00t dissemos.

    Agora se não quiser, pode utilizar a ComboBox convencional e popular manualmente com uma função semelhante a seguinte(fiz ela com base no seu projeto).

    Código:
    procedure TForm1.PopulaCombo(Combo: TComboBox; Campo, Tabela: string);
    begin
      with TAdoQuery.Create(Self) do
        try
        Connection:= ADOConnection1;
        SQL.Text:= Format('SELECT DISTINCT %s FROM %s', [Campo, Tabela]);
        Open;
    
    
        Combo.Clear;
        while Not Eof do
        begin
          Combo.Items.Add(Fields[0].AsString);
          Next;
        end;
        finally
          Free;
        end;
    end;
    e toda forma que quiser atualizar o conteúdo da combo chame ela da seguinte forma.
    PopulaCombo(Combo, Campo, Tabela);
    exemplo:
    Código:
    PopulaCombo(ComboBox2, 'Tecelagem', 'Malhas');
    É melhor não dizer nada e pensarem que é bobo, do que abrir a boca e acabar com as duvidas.

  10. #10
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like
    Wap

    nesse exemplo que você criou, não entendi o comando dos botões.
    Você não criou outra form para captar os novos registros??

    Quando você clica em novo, como é que aparece aquela form??

    Desculpa a ignorância mas é que não estou bem familiarisado com delphi ainda.

    https://dl.dropboxusercontent.com/u/...s/AcpGuedes.7z
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

Tags para este Tópico

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •