Jump to content
Fórum Script Brasil
  • 0

[resolvido] Como Gravar Dados Em Um Dbcombobox


Guest Francisco Mondadori
 Share

Question

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!!!!

Edited by Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647.1k
×
×
  • Create New...