Fórum DBLookupCombobox dando ERRO quando fica sem valor #383664

15/08/2010

0

Eu adicionei varios LookupCombobox na minha form apartir da field do ADOQuery, a maioria deles esta ligado a uma tabela no access chamada Numeros, que contem 0,1,2,3,4,5 ect. Ou seja quando alguem clica no DBLookupCombobox em questão desce uma lista pra escolher de 1 até 9.

Essa parte funciona bem, o problema é que se você deixa um cambo em branco sem escolher uma opção de 0 a 9, da "You Cannot add or change a record because a related record id required in table".

Tentei setar os DBLookupComoBox.keyValue:= 1 fazendo eles ja deixarem o primeiro elemento que seria "0" ja pre-selecionado. Funcionou , aparece 0 em todos agora mas continua dando o mesmo erro, agindo como se não tive-se nada selecionado, tanto que se eu vou la e clico pra escolher 0 de novo manualmente não da erro.

Alguem sabe como resolver esse problema?

No momento se o usuario não marcar todos os DBLookupComoboBox com algum item da lista o cadastro retorna o erro mencionado acima.
Artur Carlos

Artur Carlos

Responder

Posts

15/08/2010

Carlos Mazzi

Desculpe, mas nao entendi direito ,mas esses campos puxam de uma chave estrangeira e vc esta querendo deixar um campo , chave, em branco , (ou 0 zero) é isso?
Responder

Gostei + 0

15/08/2010

Artur Carlos

Quero que venha um um dos valores ja, tipo ja com '0',  ou então fique em branco.  O problema de ficar em branco é que da o erro que relatei acima, e quando coloquei no codigo pra setar o KeyValue:= 1 que corresponde a '0' da o mesmo erro.

O unico modo de não dar erro é eu escolher um valor para todos os elementos com DBLookupComboBox manualmente na hora do registro, não posso deixar nenhum sem escolher um valor.
Responder

Gostei + 0

16/08/2010

Eriley Barbosa

Faça o tratamento no beforePost da Query para verificar se o campo associado ao DBLookup está nulo, se estiver volte o foco para o campo e aborte a gravação do registro.
Responder

Gostei + 0

16/08/2010

Fernando Farah

Opa ! está meio estranho, que campo é esse que vc puxa no lookup ? se for um foreign key o erro vai persistir pq pode ser uma chave primaria de uma outra tabela, logo nao vai deixar gravar null, melhor coisa é fazer o que o ERILEY disse, teste p. ver se esse campo é vazio.
Responder

Gostei + 0

16/08/2010

Wilson Junior

ao invés de setar o KeyValue, faça ADOQuery.First, para selecionar o primeiro registro.

Espero ter colaborado.
Responder

Gostei + 0

16/08/2010

Artur Carlos

Vlw pessoal, Resolveu quando desativei os relacionamentos do Access, eles que tavam exigindo os dados, ae dava erro quando não colocava nada.

Vo postar em um outro topico também mas to com umas duvidas aqui e vo aproveitar esse pra ja postar caso alguem saiba.
 
Duvidas:

1 - Como faço para restringir(filtrar) uma pesquisa com mais de 1 elemento em SQL no ADOQuery?

Ex: Quero pesquisar casas em X Bairro, Tipo: Casa, De Valor maximo: 100.000, Valor Minimo: 50.000 .

No Casa para ativar cada filtro teria que clicar em um Checkbox em cima da opção.

Ex: Se vc clicar no Checkbox em cima da Label "Valor Minimo" e "Bairro", a busca vai procurar e listar apenas os imoveis de Bairro X e valor Minimo Y.

Sei buscar por 1 elemento de 1 tabela, no caso uso o codigo abaixo para buscar por Bairro.

with DM.ADOQImoveis do
DM.ADOQImoveis.close;
DM.ADOQImoveis.sql.clear;
DM.ADOQImoveis.sql.add('Select * from Clientes where Bairro like :dados order by Nome');
DM.ADOQImoveis.Parameters[0].value := '%'+trim(edtpesquisar.text)+'%';
DM.ADOQImoveis.open;

A minha pergunta é, como filtrar a pesquisa por elementos especificos(Bairro, valor maximo, minimo, ect) de acordo com o Checkbox Escolhidos?

Queria filtrar em tempo de escrita(ou no change) como utilizo no codigo acima, mas um de pesquisar apenas quando clico no botão Pesquisar também ja ajudaria muito.


2- Como salvar imagens em um banco de dados, no caso uso o Access, vale a pena salvar nele? ou algum outro metodo é recomendado?

O que queria é que no programa aparece um  quadro aonde eu fosse adicionando/retirando as todos atravez de um botão as fotos ficasem pequenas em uma lista de rolagem(tipo no formato Large Icons do explorer) e quando eu desse 2 cliques nelas expandissem para a tela toda.

Se alguem puder dar uma ideia ou sugestão do que usar agradeço.
Responder

Gostei + 0

16/08/2010

Eriley Barbosa

with DM.ADOQImoveis do
DM.ADOQImoveis.close;
DM.ADOQImoveis.sql.clear;
DM.ADOQImoveis.sql.add('Select * from Clientes where Bairro like :dados'); if checkbox1.checked then   if (edit1.text <> '') and (edit2.text <> '') then   begin      DM.ADOQImoveis.sql.add('And Valor BETWEEN :Valor1 AND :Valor2');       DM.ADOQImoveis.Parameters[1].value := StrToFloat(edit1.text );       DM.ADOQImoveis.Parameters[2].value := StrToFloat(edit2.text );    end; DM.ADOQImoveis.sql.add('order by Nome');
DM.ADOQImoveis.Parameters[0].value := '%'+trim(edtpesquisar.text)+'%';
DM.ADOQImoveis.open;
Responder

Gostei + 0

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

Aceitar