Dúvida com Combobox

22/10/2009

Olá Amigos, Venho solicitar meu primeiro suporte. A duvida é a seguinte: Num certo cadastro, vamos citar cadastro de clientes, há um campo (DbComoboBox) onde seleciono o estado, a partir da seleção um outro campo(combobox) me apresenta as respectivas cidades. Até aí tudo bem... No banco a tabela guarda o ID de ambas tabelas (estado e cidades). Agora, durante a consulta como ficaria o campo cidade? Digo, como o a informação seria apresentada? Será que fui claro? Deu pra entender? Fico no aguardo. Muito obrigado. Levi N.Silva silva_levi@globo.com
Levi Silva

Levi Silva

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo,
  Bem vindo a suporte online.
  Para sua dúvida pelo que entendi, basta você criar um campo lookup, e teu problema seria resolvido.


Att

Wesley
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Caro Wesley, Muito obrigado pela atenção. Desculpe as vezes, sou novo com delphi e estou aprendendo.... Tudo bem crio o campo loockup, mas com relação ao filtro? Lembra-se, após a seleção do Estado apenas as respectivas cidades deste estados serão apresentadas neste novo combobox.... Possa ser também que ainda não tenha entendido, se puder me mostrar um exemplo, agradeço. Se possível é claro.... Obrigado novamente Levi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá meu amigo, me diga uma coisa como é a relação Estado e Cidade ? São duas tabelas ?


Estado
IDEstado
Descricao

Cidade
IDCidade
Descricao
IDEstado


Seria assim ? Se for você pode fazer o Lookup com o IDEstado, e automáticamente você terá o filtro. Agora senão for preciso saber como você esta fazendo.

Forte abraço

Wesley Y
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Olá amigo... Exatamente assim mesmo como disse. Mas apenas criei uma ForeginKey na tabela Cidades... Seria algo mais? Criei uma campo Loockup para Cidade e Outro Estado no ClientDataSet, arrastei pata o Form de cadastro, mas o efeito de filtro não funcionou... Coloquei Primeiro o Campo Estado e depois Cidade. Quando selecionar um estado, trazer no campo Cidades, as respectivas do estado selecionado.... Obrigado. Levi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo, irei preparar um exemplo,e logo te retornarei.

Att,

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo, veja o link ( http://www.rwsolution.com.br/Chamado_DBLookUP.rar ), tem um exemplo para você fazer um mestre detalhe, veja se isso te ajuda.

Att,

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo,
   COnsegui analisar o exemplo ? Estamos aguardando para fecharmos o chamado.

Att,

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá meu caro, o chamado foi modificado para concluído, porém estamos a disposição, caso exista alguma dúvida.

Att,

Wesley Y
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Olá Wesley, desculpe, estive de férias estes últimos vinte dias, retornando hoje... Tentei baixar o arquivo no link que vc deixou, mas não estou conseguindo baixar. Teria como enviar novamente? Se preferir no meu e-mail, pode ser? lenasi@hotmail.com Muito Obrigado Levi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá  amigo, infelizmente não podemos mandar arquivos via e-mail, com os clientes da DevMedia, somente pelo sistema de consultoria. Teste o link novamente  http://www.rwsolution.com.br/Chamado_DBLookUP.rar

Um abraço

Wesley Y
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Ok, deu certo, Obrigado. Vou testar e assim que tiver uma posição lhe aviso.
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Caro Wesley. Perfeito, conforme seu exemplo é isso mesmo que preciso. Tentei implementar na minha aplicação, mas depois de várias tentativas, retorno a sua ajuda. É o seguinte: No meu cadastro, estou utilizando DbLoockupCombobox para estado e Cidades, campos criado no TClientDataSet direcionados de um DataModule a parte(onde abro todas as tabelas),ok?. Dúvidas: No seu exemplo o ClientDataset está no mesmo formulário. Como faço para utilizar o Evento AfterScrool do meu ClientDataSet que é utilizado em outros cadastro? vai influenciar alguma coisa? Fui bem claro? Deu pra entender? Obrigado mais uma vez. Se possível enviei outro exemplo, mas com campos combobox No aguardo. Levi N.Silva
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Segue o código: procedure TFrmFunCadastro.DBLookupComboBox2DropDown(Sender: TObject); begin inherited; with DsMunicipios do begin TClientDataSet(DsMunicipios).Open; // Neste caso, quando chegar nesta linha da Access violation... TClientDataSet(DsMunicipios).Filtered := False; //Desativa o Filtro TClientDataSet(DsMunicipios).Filter := 'ESTADO_ID = 1'; //+ //Intrução de seleção TClientDataSet(DsMunicipios).Filtered := True; //Ativa o Filtro TClientDataSet(DsMunicipios).Close; end; end;
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá meu cara, na hora que for postar um código, espera a pagina carregar, senão o código vem todo embaralhado, rsrs, sacou ?

TFrmFunCadastro.DBLookupComboBox2DropDown(Sender: TObject);
begin
  inherited;
  with DsMunicipios do
  begin TClientDataSet(DsMunicipios).Open; // Neste caso, quando chegar nesta linha da Access violation...
    TClientDataSet(DsMunicipios).Filtered := False; //Desativa o Filtro
    TClientDataSet(DsMunicipios).Filter := 'ESTADO_ID = 1'; //+ //Intrução de seleção
    TClientDataSet(DsMunicipios).Filtered := True; //Ativa o Filtro
    TClientDataSet(DsMunicipios).Close;
  end;
end;

Esta dando accessviolation pois você esta passando um DSMunicipio, não seria um CDSMunicipio não ?, você sabe o que esta acontecendo quando digo TClientDataSet(DataSet) ??

Um abraço

Wesley Y
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Olá Amigo, entendi sim... Vacilo meu... Está quase dando certo, falta pouco... A questão que está pegando agora, é como pegar o ID relacionado ao Item selecionado do DbLoockupComboBox? Veja Código: TClientDataSet(DsMunicipios.Dataset).Filter := 'ESTADO_ID = ' + DbEdEstadoID.Text; O ComboboxUF me mostrar a descrição (SP,RJ) como vou compara no filtro se na tabela TCidade gravo o Estado_ID?
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Vixi, não saquei como postar o código... Não entendi, Esperar a página carregar..
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá meu amigo, para pegar o ID você tem que ir na propriededade keyFied.

Veja exemplo :
   Edit1.text := DBLookupComboBox1.KeyField;


Um abraço

Wesley Y
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Wesley, bom dia. Obrigado. Outra coisa, Estou utilizando o evento OnDorpDown, está correto? Como estou utilizando o ComboBox, preciso que faça o filtro somente quando selecionar algum item no combo.
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Wesley bom dia, A comando que me passou não funcionou... Coloquei até num ShowMessage pra ver o resultado pra ter certeza mesmo e não trouxe nada... DBLookupComboBox1.KeyField; Estou no aguardo para finalizarmos este suporte. Falta pouco. Obrigado Levi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo,
   No DBLookupComboBox não seria o melhor lugar para se fazer isso não meu amigo, faça na tabela ou melhor no CDS, no afterscrool do campo que contem o ID e descricao que você quer pegar. Não tem como você me mandar um exemplo pequeno com os teus fontes, dai poderia te ajudar melhor.


Um abraço

Wesley Y
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Weslwey,

Montei no seu projeto que vc me envio, um pequeno cadstro de funcionario com os campos loockuComboBox, da forma que estou utilizando no meu sistema.A diferença é que o CDSFuncionario está num UDM a parte.

http://www.4shared.com/file/155443418/b52bcf07/ChamadoDBLookUP.html
Baixar o arquivo do projeto


No meu projeto tentei colocar um DataSorce ligado a este CDSFuncionario, mas no DataSet deste DS, o mesmo não foi listado, mesmo dando Use Unit...

Será que esta forma de carregar os estados e cidades para um combo no cadastro de funcionarios fiz corretamente? Existe outra forma melhor?

Obrigado. Levi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo,
  Desculpe a demora, porém não me conformei com o seu problema, estava intrigado com isso, veja a solução.

Adicione um Button, e um Memo, e um OpenDialog(para localizar os arquivos), e crie uma função chamada Explode

function TForm1.Explode(str, separador: string): TStringList;
var
  p: integer;
begin
  Result := TStringList.Create;

  p := Pos(separador, str);
  while (p > 0) do
  begin
    Result.Add(Copy(str, 1, p-1));
    Delete(str, 1, p + Length(separador) - 1);
    p := Pos(separador, str);
  end;

  if (str <> '') then
    Result.Add(str);
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
  I : Integer;
begin
  if OpenDialog1.Execute then
  begin
    Lista:= TStringList.Create;
    Lista.LoadFromFile(OpenDialog1.FileName);
    For I := 0 to Pred(Lista.Count) do
        Memo1.Lines.AddStrings(Explode(Lista.Strings[I],'#9'));
  end;
end;


Teste o exemplo e me diga o resultado.

Um abraço

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo, peço desculpas pois o último post não era para você.

Lamento,

Um abraço

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo, em resposta ao seu chamado, notei que seu cdsfuncionario não tem o IDFunci,
selecione FieldDefs do cdsFuncionario, e adicione um Field IDFuncionario e DataType = ftInteger. Feito isso botão direito no cdsfuncionario e cleardata, e depois createDataset, e veja senão funcionará agora, aqui listo a cidade e a uf, sem problema nenhum.

Fico no aguardo.

Att,

Wesley Y
GOSTEI 0
Levi Silva

Levi Silva

22/10/2009

Olá amigo Wesley, novamente eu aqui... peço desculpas mas trabalho numa empresa onde viajo muito e estas duas semanas passadas estive viajando... Bom, retorno esta semana, continuando com este suporte que ainda não finalizei... No último Post vc me informa que não indentificou o IDFunc, ok? Mas existe sim, é o FUNCCAD_ID... A questão anterior foi que ao selecionar o item no DbLoockupComboBox o ID o qual mencionou não veio junto como precisava... Na verdade precisaria entender melhor esta questão... Vc ainda tem o exemplo que lhe enviei? Mais uma vez obrigado. No Aguardo. Levi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

22/10/2009

Olá amigo realmente o seu IDFuncionario esta com problema, porém pelo que andei lendo nos teus chamados, o que você queria inicialmente era filtrar as cidades de uma determinada UF, certo ? Se sim temos que fechar este chamado para esclarecer outra dúvida.
  E ao meu ver isso já esta pronto, agora o que você quer fazer com o CdsFuncionario ?

Um abraço

Wesley Y
GOSTEI 0
POSTAR