DBLookupCombobox dando ERRO quando fica sem valor
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.
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
Curtidas 0
Respostas
Carlos Mazzi
15/08/2010
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?
GOSTEI 0
Artur Carlos
15/08/2010
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.
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.
GOSTEI 0
Eriley Barbosa
15/08/2010
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.
GOSTEI 0
Fernando Farah
15/08/2010
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.
GOSTEI 0
Wilson Junior
15/08/2010
ao invés de setar o KeyValue, faça ADOQuery.First, para selecionar o primeiro registro.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Artur Carlos
15/08/2010
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.
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.
GOSTEI 0
Eriley Barbosa
15/08/2010
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;
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;
GOSTEI 0