Dúvida com Combobox
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
Curtidas 0
Respostas
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
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
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
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
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
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
22/10/2009
Olá amigo, irei preparar um exemplo,e logo te retornarei.
Att,
Wesley Y
Att,
Wesley Y
GOSTEI 0
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
Att,
Wesley Y
GOSTEI 0
Wesley Yamazack
22/10/2009
Olá amigo,
COnsegui analisar o exemplo ? Estamos aguardando para fecharmos o chamado.
Att,
Wesley Y
COnsegui analisar o exemplo ? Estamos aguardando para fecharmos o chamado.
Att,
Wesley Y
GOSTEI 0
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
Att,
Wesley Y
GOSTEI 0
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
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
Um abraço
Wesley Y
GOSTEI 0
Levi Silva
22/10/2009
Ok, deu certo, Obrigado.
Vou testar e assim que tiver uma posição lhe aviso.
GOSTEI 0
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
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
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
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
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
22/10/2009
Vixi, não saquei como postar o código... Não entendi, Esperar a página carregar..
GOSTEI 0
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
Veja exemplo :
Edit1.text := DBLookupComboBox1.KeyField;
Um abraço
Wesley Y
GOSTEI 0
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
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
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
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
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
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
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
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
22/10/2009
Olá amigo, peço desculpas pois o último post não era para você.
Lamento,
Um abraço
Wesley Y
Lamento,
Um abraço
Wesley Y
GOSTEI 0
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
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
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
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
E ao meu ver isso já esta pronto, agora o que você quer fazer com o CdsFuncionario ?
Um abraço
Wesley Y
GOSTEI 0