Fórum Gravar código e posteriormente Listar descricao do ComboBox . #459068

21/10/2013

0

Bom dia Pessoal, preciso de uma grande ajuda!!! Eu tenho um dbcombobox onde tenho 2 ítens (1 - F - Serviços e 2 - M1 - Conjugada), quero gravar somente 1 e 2 no banco... e quando abrir a tela posteriormente, mostrar a descrição completa no combobox (1 - F - Serviços) para quando gravar 1 e (2 - M1 - Conjugada) para quando gravar 2...
Então são duas perguntas:
1 - como gravar um código no banco ao invés de uma descrição do ítem (pensei em gravar somente a posição 1, mas não sei como farei).
2 - Como recuperar a descrição completa de acordo com o número gravado no banco.

Obrigado!

Fábio Matsuda

Fábio Matsuda

Responder

Posts

21/10/2013

Deivison Melo

Você pode usar o componente: "dblookupcombobox" do Delphi ou caso queira continuar utilizando o componente atual, recomendo o uso do comando Copy para buscar apenas a posição desejada.

Segue os exemplos:

[b]Usando DBLookUpComboBox[/b]

link 01:
[url]http://bloggersdelphi.blogspot.com.br/2009/06/usando-dblookupconbobox.html[/url]

link 02:
[url]http://www.eteavare.com.br/apostilas/informatica/mauro/dblookupcombobox.pdf[/url]



[b]Função Copy[/b]

A função Copy(str : string, i, j : integer) : string copia caracteres de uma dada string.
onde :
str é a string de onde se deseja copiar os caracteres.
i é posição de onde vai começar a cópia.
j é quantidade de caracteres a copiar.

exemplo :
s : string;
s := Copy('Clube delphi', 3, 7);
após a execução dessa linha a variável s conteria : 'ube del'

já a função Pos(str, subStr : string) : integer retorna a posição inicial de uma determinada sequência de caracteres dentro de uma string.
onde :
str é a string de onde se deseja verificar.
subStr é a sequência de caracteres que se deseja encontrar dentro de str.

exemplo:
i : integer;
i := Pos('Clube delphi', 'delphi');
após a execução dessa linha i receberia 7, pois a substring 'delphi' tem seu primeiro caracter na posição 7.

caso subStr não for encontrada em str, a função str retorna -1.

obs.: em pascal a posição inicial em tipos de dados strings é 1.


Créditos: [url]http://forum.devmedia.com.br/viewtopic.php?t=5756[/url]

Abração e bons códigos!

Qualquer anormalidade estou à disposição!

Responder

Gostei + 0

22/10/2013

Fábio Matsuda

Bom dia. Obrigado por responder...

Então, eu consegui gravar, fiz o seguinte:
DmTable.qryTribAIDFSERIE.AsString := Copy(DBComboSerie.Items[DBComboSerie.ItemIndex],1,1);

Porém, ao abrir a tela ou- navegar, o combo só mostra 1 ou 2, eu gostaria que ele mostrasse a descrição completa... 1 - F - Serviços ou 2 - M1 - Conjugada...

Eu criei o seguinte código para buscar a descrição, mas não funcionou: DBComboSerie.Items[DBComboSerie.ItemIndex] := DmTable.qryTribAIDFSERIE.AsString;
este código mostra no dbcombo exatamente o que eu gravei.

Posso usar o componente dbLookUp, mas este também não tem uma opção 'values' onde mostro o que gravar na table. Observação, eu não tenho uma tabela com os itens, estes estão descritos somente no meu componente, por isto, não creio que o lookup vá resolver.
Responder

Gostei + 0

22/10/2013

Alessandro Yamasaki

O TDblookupcombobox tem a propriedade
- ListField aonde será colocado o seu campo descritivo;
- KeyField aonde será colocará o seu campo codigo.

Responder

Gostei + 0

22/10/2013

Fábio Matsuda

Obrigado Alessandro!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar