19 Comentários

  1. Renato

    Felipe, obrigado pelo vídeo. Fiquei com a seguinte dúvida:
    caso eu já tenha a informação gravada no banco e queira retornar esta informação para a tela, como eu faria para que o DBLookUpComboBox exiba esta informação? Fiz da seguinte forma, porém o campo permanece em branco:

    IBQProd.Close;
    IBQProd.SQL.Clear;
    IBQProd.SQL.Add(‘select * from Produtos where CDPRO = :CDPRO’);
    IBQProd.ParamByName(‘CDPRO’).AsInteger:=StrToInt(CodProduto.Text);
    IBQProd.Open;
    cbSetor.KeyValue:=IBQProd.FieldByName(‘SETOR’).Value;

    Se puder me ajudar, agradeço muito.
    Obrigado.
    Abraço.


  2. Fala Renato!
    De nada, eu que agradeço pela visita. 🙂

    Cara, está certo o jeito como está fazendo. Se o seu IBQProd estiver retornando o “Setor” corretamente na sua consulta, pelo seu código teria que estar funcionando sim (contanto que o seu DBLookUpComboBox esteja ligado na sua tabela de setores). Você pode testar o seguinte também: IBQProd.FieldByName(‘SETOR’).AsString. Faz essa “conversão” pra String ao invés do Value. Não sei se é da versão do Delphi ou a falta de alguma biblioteca, mas em alguns casos o DBLookUpComboBox só reconhece o KeyValue quando o valor passado é do tipo String. Qualquer coisa é só escrever.
    Abraços!

  3. Renato

    Obrigado pela atenção, Felipe. O problema é que a informação que estava alimentando o LookUp não era do mesmo tamanho que a que vinha da outra tabela. Tinha uns espaços. daí fiz o ajuste e funcionou certinho. Obrigado mais uma vez pelo vídeo. Abraço.

  4. Fábio Machado

    Obrigado amigo!

    Estou voltando a mexer com Delphi, depois de mais de 15 anos parado. Já viu, né…
    Aproveitando a oportunidade: o pessoal critica bastante o Paradox. É mesmo ruim? Vc sabe onde encontro material didático para me orientar na migração para um sistema melhor?

    Abraço


  5. Oi Fábio, tudo bem? Obrigado pela visita!
    Seja bem-vindo novamente, programar em Delphi é sempre muito interessante. O Paradox é um banco de dados bem antigo que segurou a peteca durante muitos anos. Conheço alguns sistemas que ainda utilizam Paradox. É um banco de dados relacional baseado em tabelas, mas tem alguns pontos fracos relevantes. O fato de não ser um banco de dados Cliente/Servidor e a alta taxa de corrupção de índices são um deles. Já que você está retornando ao Delphi, recomendo utilizar o Firebird ou MySQL por exemplo. Aqui no blog eu ensino muita coisa sobre Delphi + Firebird. E no Google tem muito material também. Dá uma olhada em fóruns, é só se cadastrar e tirar suas dúvidas, a comunidade Delphi é muito solícita. Espero que tenha ajudado. Um forte abraço!

  6. Helton Garido

    Bom dia meu caro Felipe Machado, estou com um problema com o DBLookupComboBox ele só lista uma linha, gostaria que ele lista mais linhas, ele só lista as linhas quando eu clico nas setas de direção aí sim quando eu clico é que aparece as linhas.

    Eu já queria que aparecesse as linhas ao clicar de primeira..


  7. Oi Helton, bom dia! Qual tipo de DataSet você está utilizando? Verifica se a tabela está sendo aberta por completo, alguns DataSets guardam em memória e só carregam os registros quando necessário. Você pode testar dando um DataSet.FetchAll ou DataSet.Last. Verifique também a propriedade “DropDownRows” do DBLookupComboBox. Abraços!


  8. Amigo uma dúvida. Vamos supor que eu tenha feito tudo isso em um cadastro de um cliente e agora eu preciso editar esse cadastro, de que forma eu carrego o que eu escolhi no dia em que eu cadastrei. No caso se eu coloquei uma profissão e depois quero alterar ela, na DBlookupcombobox vem listada as profissões da tabela profissões, só que na alteração precisa vir a opção que eu escolhi no dia em que eu cadastrei.


  9. Amigo já vou deixar a resposta do que eu mesmo perguntei…rsrsrssrs Acabei quebrando um pouco a cabeça aqui e consegui. Vou deixar o exemplo de no caso precisar carregar um cadastro que já tenha sido feito.

    DblookupCombobox.Keyvalue := suatabela.fieldbyname(‘campo’).asstring;

    E no onEnter do DBLookUpcombobox você faz uma consulta para carregar todos os dados do seu listfield
    Se precisar deixar ele parado em alguma posição, pode usar também a propriedade ListFieldIndex e colocar o numero da posição.

    Espero ter ajuda caso alguém precisar…. Abraços


  10. Oi Jeferson, se o DBLookupComboBox estiver ligado no campo profissão do seu dataset ele será carregado automaticamente, mas se estiver usando o DBLookupComboBox apenas como lista você terá que passar a profissão no campo KeyValue do DBLookupComboBox. Abraços!

  11. NELSON MOURA

    Ola.
    Como saber se o usuário não escolheu nenhum item do DbLookUpCombobox?
    tipo Se nenhum item selecionado….
    ShowMessage(‘Por favor, escolha a cidade’);
    Eu prefiro que o combo seja apresentado sem nenhuma escolha, a fim de não induzir o usuário a conformar algo por acidente.

    Grato
    Nelson


  12. Olá Nelson, desculpe a demora, tive uns problemas particulares e me afastei um pouco. Acredito que já tenha encontrado a solução, mas vou responder assim mesmo para poder ajudar a outras pessoas também.

    Basta você fazer da seguinte forma:

    if DbLookUpCombobox.Text=” then
    begin
    ShowMessage(‘Por favor, escolha a cidade’);
    DbLookUpCombobox.Setfocus;
    Exit;
    end;

    Abraços!

  13. Lucas Ariel Neves Dias

    Olá, Felipe.
    Muito obrigado pelos seus artigos, estão me ajudando bastante a aprender Delphi.
    Estou tendo dúvidas em criar um ComboBox relacionado de Estados e Cidades.
    Por exemplo, eu seleciono o Estado, e no outro combobox aparece apenas as cidades desse estado…
    Agradeço.
    Lucas.


  14. Fala Lucas, obrigado pela visita!

    Você vai ter que programar no evento OnChange do seu ComboBox de Estados (UF). Para mostrar as cidades você pode usar um outro ComboBox ou um DBLookUpComboBox. O importante é no OnChange do ComboBox de UFs você abrir o DataSet de cidades. O SQL tem que pedir uma UF como parâmetro.

    Ex.: SELECT NOME FROM MUNICIPIOS WHERE UF=:UF

    E no OnChange você passa o valor do ComboBox:

    DataSet.Close;
    DataSet.ParamByName(‘UF’).AsSttring:=ComboBox.Text;
    DataSet.Open;

    Se estiver utilizando DBLookUpComboBox não precisa varrer a tabela de municípios, case esteja utilizando ComboBox para os municípios, você terá que varrer o DataSet e alimentar os Items do ComboBox.

    Abraços!

  15. Sérgio Lopes Ferreira

    Olá! Boa tarde, Felipe!

    Sou autodidata em Delphi….vi seu artigo e gostei….mas tenho uma dúvida: Estou criando um pequeno programinha, para deixar em uma fila de espera , exames e consultas…
    Então, uma determinada pessoa tem dois exames e uma consulta a ser agendada com um especialista….como faço , usando um dblookupcombobox, permitir que o usuario do programa possa fazer seleção múltipla e estas sejam gravadas em seus respectivos campos no banco de dados?
    Criei uma tabela de especialidades e uma de exames, alem de uma tabela que contem todos dos dados do paciente e as informações pertinentes à minha dúvida…
    Você pode , por gentileza, me ajudar?

    Valeu! Obrigado!

    Sérgio


  16. Boa noite Sérgio, obrigado pela visita e desculpe a demora em responder. Caso já tenha solucionado vou deixar aqui minha dica para ajudar a outros programadores.

    Você já tem meio caminho andado, o que falta agora é criar uma tabela de relacionamento entre Exames X Pacientes. Como um paciente pode ter vários exames, você terá que criar uma tabela para intermediar e controlar esse relacionamento. Nessa tabela você terá que criar os campos chaves tanto de Exames como Pacientes. Desta forma você poderá agendar quanto exames forem necessários para qualquer paciente. Se você quiser fazer uma seleção múltipla, terá que utilizar outro componentes ao invés do DbLookUpComboBox, sugiro utilizar um dbGrid com checkbox. Assim você vai ticando os exames e ao salvar irá alimentar a tabela de relacionamento.

    Abraços!

  17. Fausto Alencar

    Bom dia.
    Tenho um relatório e, no filtro, tenho dois DBLookUpComboBox, um para o inicio dos itens de consulta e outro para o final.
    Eu gostaria de passar para o DBLookUpComboBox as letras “A” no primeiro e “Z” para o ultimo, porem o DBLookUpComboBox não tem a propriedade text, correto? Qual a forma de passar um texto para ele?


  18. Oi Fausto, como o DBLookUpComboBox fica ligado num dataset, você pode dar um First e um Last na tabela que ele está conectado para posicionar na primeira e na última posição respectivamente.

    Abraços!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *