Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Valdiney F. Lima

DbLoopUpComboBox

Recommended Posts

Seguinte.Eu tenho um formulário onde tenho um DBLookupComBox que recebe um valor que indexado.Componentes no Form1:DBLookupComboBox1 + DataSource1 + ZQuery1 + ZConnection1Todos ligados de forma a SQL enviar os dados para o DBLookupComboBox1. TUDO FUNCIONA!Eu tive que fazer uma alteração no meu sistema, devido a problemas de conexão com servidor externo. Então o que eu estou fazendo, quando formulário é aberto... No evento OnShow, eu faço a conexão com o banco de dados depois a pesquisa SQL e em seguida eu me desconecto do servidor...Só que ao desconectar é apagado todo o conteudo do DBLookupComboBox1... Teria como não acontecer isso?Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom cara, se você desativar a Table, Query ou o que seja, ele vai sumir...uma solução para você... seria fazer na munheca mesmo...While e etc... e preencher uma combobox normal!!!e fazer tudo na raça!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom cara, se você desativar a Table, Query ou o que seja, ele vai sumir...uma solução para você... seria fazer na munheca mesmo...While e etc... e preencher uma combobox normal!!!e fazer tudo na raça!!!

Puts hugo...Fazer no while não é o problema. Mas lembra, uma vez eu perguntei aqui sobre como colocar o combo com um valor indexado...Por isso eu tive que usar o DBLookupComboBox1...

Compartilhar este post


Link para o post
Compartilhar em outros sites

como seria isso que você quer fazer???

Vou passar todo o processo pra você entender...

 

 

Todo o código abaixo está no evento OnShow

 

 

 

 

 

procedure TfrmCadastrarImoveis.FormShow(Sender: TObject);var	x1, x2, y1, y2, pulo: integer;	sql01: string;	concluido : boolean;begin  // Conecta ao servidor  if conecta(True) then  begin  // preenchendo a ComboBox: Tipo de imóvel  ZQuery2.Active := false;  ZQuery2.Open;  ZQuery2.Active := true;  DBLookupComboBox1.KeyField := 'id';  DBLookupComboBox1.ListField := 'descricao';  // preenchendo a ComboBox: Estado  ZQuery3.Active := false;  ZQuery3.Open;  ZQuery3.Active := true;  DBLookupComboBox2.KeyField := 'id';  DBLookupComboBox2.ListField := 'uf';  // Dependencia  // preenchendo as dependencias do imovel  ZQuery1.Active := false;  ZQuery1.SQL.Clear();  sql01 := 'select *from tb_imovel_dependencias';  ZQuery1.SQL.Add( sql01 );  ZQuery1.Open;  ZQuery1.Active := true;  x1 := 1;  y1 := 1;  ZQuery1.First;  while not ZQuery1.EOF do  begin	CheckBoxDependencia( ZQuery1.FieldByName('descricao').Value, ZQuery1.FieldByName('id').Value, y1, x1);	if (y1 = 4) then	begin	  y1 := 1;	  inc(x1);	end else begin	inc(y1);	end;	ZQuery1.Next;  end; // fim do while  // Detalhes  ZQuery1.Active := false;  ZQuery1.SQL.Clear();  sql01 := 'select *from tb_imovel_dados';  ZQuery1.SQL.Add( sql01 );  ZQuery1.Open;  ZQuery1.Active := true;  x1 := 1;  y1 := 1;  ZQuery1.First;  while not ZQuery1.EOF do  begin	CheckBoxDetalhes( ZQuery1.FieldByName('descricao').Value, ZQuery1.FieldByName('id').Value, y1, x1);	if (y1 = 4) then	begin	  y1 := 1;	  inc(x1);	end else begin	inc(y1);	end;	ZQuery1.Next;  end; // fim do while  // Preenchendo a ComboBox COMODO  ZQuery1.Active := false;  ZQuery1.SQL.Clear();  sql01 := 'select *from tb_imovel_comodos';  ZQuery1.SQL.Add( sql01 );  ZQuery1.Open;  ZQuery1.Active := true;  ZQuery1.First;  while not ZQuery1.Eof do  begin	ComboBox2.Items.Add( ZQuery1.FieldByName('descricao').Value );	ZQuery1.Next;  end;  // Preenchendo a ComboBox PISO  ZQuery1.Active := false;  ZQuery1.SQL.Clear();  sql01 := 'select *from tb_imovel_piso';  ZQuery1.SQL.Add( sql01 );  ZQuery1.Open;  ZQuery1.Active := true;  ZQuery1.First;  while not ZQuery1.Eof do  begin	ComboBox3.Items.Add( ZQuery1.FieldByName('descricao').Value );	ZQuery1.Next;  end;  end;  [b]Aqui eu desconecto do servidor[/b]  conecta(false);end;

 

O código segue acima...

 

O fato é que eu preciso do DBLookupComboBox... pois quando eu for enviar os dados para o banco, eu preciso saber o ID da descrição que foi selecionada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma das formas que poderia fazer é colocar um StringGrid vinculado com todos estes itens, ou seja, iria carregar todos os registros em um ComboBox, e tb carregar no StringGrig, nele teria 3 colunas:Codigo - Descrição - TabelaSendo que quando for fazer a consulta, você pega o item selecionado no Combo e procura na StringGrid conforme a tabela, retornando assim o Codigo, é uma das formas que se poderia fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas no caso ele não poderia usar o ID do Combo, visto que pode ter cadastrado um item e depois excluído, podendo ficar fora da numeração sequencial inicial.

Ë exatamente isso que você disse mesmo Márcio. Por isso não posso fazer da maneira do o Hugo disse.Mas eu não entendi muito bem o outro exemplo que você disse no post anterior...

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso você carrega os Combo desejados e tb o StringGrid, no stringgrid ficaria algo do tipo quando carregado:Codigo - Descrição - Tabela1 - 1 Dormitório - tb_imovel_comodos2 - 3 Dormitórios - tb_imovel_comodos3 - 5 Dormitórios - tb_imovel_comodos1 - Piso - tb_imovel_piso3 - Parque - tb_imovel_piso2 - Sei lá - tb_imovel_pisoDigamos que foi selecionado no combo de comodos o item de 3 Dormitórios, no caso iria fazer uma localização sobre o StringGrid, buscando pela descrição "3 Dormitórios" e ainda levando em consideração a tabela "tb_imovel_comodos", resultando assim no Código -> 2, isso acontecendo com o Piso e demais itens...

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso você carrega os Combo desejados e tb o StringGrid, no stringgrid ficaria algo do tipo quando carregado:Codigo - Descrição - Tabela1 - 1 Dormitório - tb_imovel_comodos2 - 3 Dormitórios - tb_imovel_comodos3 - 5 Dormitórios - tb_imovel_comodos1 - Piso - tb_imovel_piso3 - Parque - tb_imovel_piso2 - Sei lá - tb_imovel_pisoDigamos que foi selecionado no combo de comodos o item de 3 Dormitórios, no caso iria fazer uma localização sobre o StringGrid, buscando pela descrição "3 Dormitórios" e ainda levando em consideração a tabela "tb_imovel_comodos", resultando assim no Código -> 2, isso acontecendo com o Piso e demais itens...

É f*** fazer isso toda vez que eu tiver um como hein! Imagina só... Tudo que eu pegue é por referencia de ID...Não teria nenhuma forma de manter os dados na Query como se fosse um cache?Não havendo esta possibilidade... Eu não tenho nem ideia de como fazer esse recurso técnico(gambiarra) que você passou...Você tem algum exemplo?Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valdiney...só uma pergunta...pq você ñ pode ficar conectado ao banco direto???flw aew!

O server tem uma espécie de timeout que me derruba por inatividade por 10 segundos...Infelizmente não tem como alterar esse tempo e nem dar privilégios para o root.Uma DROGA!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valdiney...Bom, acredito que você deva dar mais informações, como por exemplo...Qual o Servidor??? É Remoto???Qual o Banco que está utilizando????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisaria rever isto com quem lhe fornece o servidor, pois vai que você têm uma consulta sendo rodada ou um relatório ? E demora mais de 10 segundos, ou têm inativadade, vai dar erro sempre...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisaria rever isto com quem lhe fornece o servidor, pois vai que você têm uma consulta sendo rodada ou um relatório ? E demora mais de 10 segundos, ou têm inativadade, vai dar erro sempre...

Bom se exite uma consulta sendo rodada a mesma não esta inativa. Então ela não desconecta.O f*** é que se eu colocar o programa rodando no meu banco de dados local não da problema. Eu setei o timeout do mysql para 8 horas e mesmo assim continuo sendo desconectado.Estou achando que possa ser algo com o componente Zeos. Tentei utilizar o dbEpress mas não consegui.Tem algum exemplo de como utilizar o dbExpress com o Mysql?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Zeos não têm nenhuma propriedade de TimeOut ? No Caso o ADO têm uma propriedade chamada CommandTimeOut no qual especifíca o tempo... no Zeos não tem nada do tipo ?

O Zeos não tem... Mas eu baixei um outro componente Mdac Mysql e nele tem o timeout... mas não deu certo também não!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.