[resolvido] Como Gravar Dados Em Um Dbcombobox - Delphi, Kylix - Fórum Script Brasil
[resolvido] Como Gravar Dados Em Um Dbcombobox
Asked by Guest Francisco Mondadori,
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
if dbcombobox.Items.Strings[i] = aux then    //compara se já existe cadastrado no dbcombobox
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!!!!
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:
aux:=Dbcombobox.Text;
max:=dbcombobox.Items.Count;
if dbcombobox.Items.Strings[i] = aux then
logradouro.Items.add(aux);
query1.post; // gravado o item adicionado no dbcombo em um novo registro
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.
Guest Francisco Carlos
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???
Mostrei para voce como fazer isso no post anterior mas se é um table que esta usando pode fazer assim:
Table1.last;   // vai para o ultimo registro da tabela
Table1.append; // adiciona um registro vazio
Table1.edit;  //  edita o registro
Table1.post; // grava o item adicionado no dbcombo
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:
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?
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.
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;
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:
Sobre a outra parte, como disse, não estava certo então, vale o que você diz.
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.
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
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
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.