Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Como Gravar Dados Em Um Dbcombobox


Guest Francisco Mondadori

Pergunta

Guest Francisco Mondadori

Ola! Preciso de ajuda para resolver uma funcionalidade em meu sistema eu quero gravar dados digitados em um dbcombobox pelo usuario para depois reutilizar essa informação. Ex: Rua, Cidade etc...

Fonte que só funciona em tempo de execução:

flag:=1;      //controle dos dados já incluidos 
    aux:=Dbcombobox.Text;           // variavel que armezena o conteudo do dbcombobox
    max:=dbcombobox.Items.Count;       //pega a quantidade de linhas do dbcombobox
    for i:= 1 to max do
    begin
      if dbcombobox.Items.Strings[i] = aux then    //compara se já existe cadastrado no dbcombobox
         flag:=0;
    end;
    if flag = 1 then      // se flag = 1 significa informação nova digitada no dbcombobox
        logradouro.Items.add(aux);       // adiciona novo item no dbcombobox

Só o que acontece ele funciona perfeitamente ate o usuario fechar o sistema ou seja só em tempo de execução.

Aguardo uma ajuda!!!!

Editado por Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Amigo, um dbcombo não grava dados na sua tabela, esses dados são virtuais até que o programa seja encerrado, ai volta tudo como estava antes. se voce quer que os dados ou itens adicionados no dbcombo sejam gravados voce pode fazer isto .... supondo que voce esteja usando uma query:

flag:=1;      
    aux:=Dbcombobox.Text;          
    max:=dbcombobox.Items.Count;      
    for i:= 1 to max do
    begin
      if dbcombobox.Items.Strings[i] = aux then    
         flag:=0;
    end;
    if flag = 1 then
        begin 
             query1.last;
             query1.append; 
             query1.edit;     
             logradouro.Items.add(aux);
             query1.post; // gravado o item adicionado no dbcombo em um novo registro
        end;

Entretanto vale lembrar que somente um campo esta sendo adicionado e gravado na sua tabela em função do dbcombobox, os demais voce tera que fazer algum tratamento para não ficarem vazios.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Francisco Carlos
Amigo, um dbcombo não grava dados na sua tabela, esses dados são virtuais até que o programa seja encerrado, ai volta tudo como estava antes. se voce quer que os dados ou itens adicionados no dbcombo sejam gravados voce pode fazer isto .... supondo que voce esteja usando uma query:

flag:=1;      
    aux:=Dbcombobox.Text;          
    max:=dbcombobox.Items.Count;      
    for i:= 1 to max do
    begin
      if dbcombobox.Items.Strings[i] = aux then    
         flag:=0;
    end;
    if flag = 1 then
        begin 
             query1.last;
             query1.append; 
             query1.edit;     
             logradouro.Items.add(aux);
             query1.post; // gravado o item adicionado no dbcombo em um novo registro
        end;

Entretanto vale lembrar que somente um campo esta sendo adicionado e gravado na sua tabela em função do dbcombobox, os demais voce tera que fazer algum tratamento para não ficarem vazios.

Obrigado pela ajuda e atenção. Só que é seguinte eu estou gravando os dados em uma table, funciona perfeitamente. Mas a minha duvida é sobre esse tratamento como adicionar novos items que vão sendo armazenados em um dBcombo. Porque eu não consigo incluir novas Lines no DbCombo em tempo de execução do sistema. É possível realizar isso???

Aguardo uma ajuda...

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Mostrei para voce como fazer isso no post anterior mas se é um table que esta usando pode fazer assim:

flag:=1;      
    aux:=Dbcombobox.Text;          
    max:=dbcombobox.Items.Count;      
    for i:= 1 to max do
    begin
      if dbcombobox.Items.Strings[i] = aux then    
         flag:=0;
    end;
    if flag = 1 then
        begin 
             Table1.last;   // vai para o ultimo registro da tabela
             Table1.append; // adiciona um registro vazio
             Table1.edit;  //  edita o registro   
             logradouro.Items.add(aux);
             Table1.post; // grava o item adicionado no dbcombo
        end;

Link para o comentário
Compartilhar em outros sites

  • 0

Jonas, não sei ao certo se você tem algum motivo para o uso deste método, mas a questão é que no caso do uso do Append, um registro em branco será adicionado ao final da tabela, bem como ela estará automaticamente no modo Inserção.

Então, é desnecessário o uso de Last e após do Edit, ficando assim:

...
    if flag = 1 then
        begin
             Table1.append; // adiciona um registro vazio
             logradouro.Items.add(aux);
             Table1.post; // grava o item adicionado no dbcombo
        end;

outra coisa, que não estou certo, mas não deveria ser atribuído o valor em AUX para o campo da tabela que acabou de ter um registro em branco criado?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus ... se voce não fizer desta maneira, ou seja, mandar o ponteiro do registro para o final e adicionar um novo ele vai ficar na posição em que o cursor estiver no dbgrid, supondo que seja um novo item o ideal é manda-lo para o final da lista.

outra coisa, que não estou certo, mas não deveria ser atribuído o valor em AUX para o campo da tabela que acabou de ter um registro em branco criado?

quanto ao AUX se voce reparou ele já esta atrelado a um campo que esta definido no dbcombo. Existem outras maneiras de fazer isso... passei a maneira mais simples;

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus ... se voce não fizer desta maneira, ou seja, mandar o ponteiro do registro para o final e adicionar um novo ele vai ficar na posição em que o cursor estiver no dbgrid, supondo que seja um novo item o ideal é manda-lo para o final da lista.
Isso é meio relativo.

Sempre que utilizei, em edição no grid, Append sempre incluiu um novo item no final do dataset (movendo para o final do grid também) - é o help também diz que para dataset indexado, a inserção ocorre na posição do cursor. Mas tem componentes em que isso realmente não ocorre, ou seja, a inclusão vai para o final do grid.

O help sobre Append diz o seguinte:

Adds a new, empty record to the end of the dataset.

Sobre a outra parte, como disse, não estava certo então, vale o que você diz.

Link para o comentário
Compartilhar em outros sites

  • 0

Falou bem ... sempre que se utiliza no dbgrid, o append adiciona um novo registro no final da tabela... acho que no caso dele, como esta usando somente o dbcombo existe essa necessidade, se não o registro vai ser sobreescrito sobre outro.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Francisco --

Bom Galera foi mau eu não complementei todos os detalhes de minha rotina:

1 A tabela já esta em modo de edição com o Edit;

2 Após esse algoritmo é salvo os dados da Tabela com o Post;

3 Eu não usei os comandos Last e Append;

4 O registro é salvo mais não fica armazenado na propriedade Items do DbcomboBox a não ser que eu adicione manualmente via ambiente de programação;

5 Eu não quero adicionar novos items em ambiente de programação;

6 Será que tem jeito

Link para o comentário
Compartilhar em outros sites

  • 0

Se voce estiver usando Table ou Query e estiver usando a propriedade DataSourde e Dataset do dbcombobox é evidente que na proriedade items não sera armazenado nada, e quando voce usa logradouro.Items.add(aux), apos o comando post o registro fica gravado na tabela e automaticamente fará parte do dbcombobox... e como voce diz

4 O registro é salvo mais não fica armazenado na propriedade Items do DbcomboBox a não ser que eu adicione manualmente via ambiente de programação;

realmente não fica armazenado na propriedade Items do DbcomboBox e nem vai ficar a não ser que voce use especificamente esta propriedade. Voce pode estar fazendo confusão com isso.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Francisco Mondadori
Se voce estiver usando Table ou Query e estiver usando a propriedade DataSourde e Dataset do dbcombobox é evidente que na proriedade items não sera armazenado nada, e quando voce usa logradouro.Items.add(aux), apos o comando post o registro fica gravado na tabela e automaticamente fará parte do dbcombobox... e como voce diz

4 O registro é salvo mais não fica armazenado na propriedade Items do DbcomboBox a não ser que eu adicione manualmente via ambiente de programação;

realmente não fica armazenado na propriedade Items do DbcomboBox e nem vai ficar a não ser que voce use especificamente esta propriedade. Voce pode estar fazendo confusão com isso.

Bom esta solucionado criei um arquivo que armazena todo o conteudo digitado no DBComboBox e quando o usuario vai inserir um novo registro carrego todos esses dados deste arquivo na propriedade itens do DbComboBox.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Johelson Gomes
Bom esta solucionado criei um arquivo que armazena todo o conteudo digitado no DBComboBox e quando o usuario vai inserir um novo registro carrego todos esses dados deste arquivo na propriedade itens do DbComboBox.

Você pode explicar como fez? Pois estou com o mesmo problema!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...