Erro ao Listar um SubGrupo a Partir de Um Grupo
E aí pessoal, tudo bem? Espero que sim.
Estou com um probleminha. Tenho um Form onde tenho 2 campos LookUp. Um me lista Grupos e o outro me lista SubGrupos linkados a esses grupos. Até aí tudo bem, consigo fazer normal, mas quando seleciono um SubGrupo, o program tem que listar todas revistas (que estão em outra tabela) que tenham aquele grupo e subgrupo selecionado. E aí da o erro, ele dá uma mensagem dizendo que não pode converter um campo Null pra Integer. Só que nenhum desses campos está nulo. É obrigado ter um código ali.
O código que da o erro é esse:
É exatamente quando entra no Command Text que dá esse erro.
Outra dúvida rapida. Esse formulário é pra exibir as revistas que estão na TbRevistas. Só que estou exibindo elas seguindo o critério de Grupos e SubGrupos, por isso eu tenho esses 2 LookUps. Mas quando eu abro esse formulário, ele já me lista todas revistas da tabela. Como eu faço pra deixar esse formulário limpo, sem nenhuma informação (inclusive nos LookUps) pra, somente quando selecionado o Grupo e SubGrupo, me listas as informações?
Grato pela ajuda.. Abraços..
Allan Elias Ramos :wink:
Estou com um probleminha. Tenho um Form onde tenho 2 campos LookUp. Um me lista Grupos e o outro me lista SubGrupos linkados a esses grupos. Até aí tudo bem, consigo fazer normal, mas quando seleciono um SubGrupo, o program tem que listar todas revistas (que estão em outra tabela) que tenham aquele grupo e subgrupo selecionado. E aí da o erro, ele dá uma mensagem dizendo que não pode converter um campo Null pra Integer. Só que nenhum desses campos está nulo. É obrigado ter um código ali.
O código que da o erro é esse:
if DmDados.ClientRevNacionais.RecordCount <> 0 then begin if LkUpListaSubGrupos.Text <> ´´ then begin DmDados.ClientRevNacionais.Close; with DmDados.SqlRevNacionais do begin Close; CommandText := ´Select * From TBREVNACIONAIS Where FKCOD_GRUPO =´ +IntToStr(LkUpListaGrupos.KeyValue) + ´And FKCOD_SUBGRUPO= ´ +IntToStr(LkUpListaSubGrupos.KeyValue) + ´Order By NOMENUMERO´; Open; end; DmDados.ClientRevNacionais.Open; StbVerNacionais.Panels[0].Text := ´Total de Revistas: ´+ IntToStr(DmDados.ClientRevNacionais.RecordCount); Botoes; end; end;
É exatamente quando entra no Command Text que dá esse erro.
Outra dúvida rapida. Esse formulário é pra exibir as revistas que estão na TbRevistas. Só que estou exibindo elas seguindo o critério de Grupos e SubGrupos, por isso eu tenho esses 2 LookUps. Mas quando eu abro esse formulário, ele já me lista todas revistas da tabela. Como eu faço pra deixar esse formulário limpo, sem nenhuma informação (inclusive nos LookUps) pra, somente quando selecionado o Grupo e SubGrupo, me listas as informações?
Grato pela ajuda.. Abraços..
Allan Elias Ramos :wink:
Aersoftware
Curtidas 0
Respostas
Caninha51
05/01/2006
Dê um espaço antes do AND e do ORDER.
if DmDados.ClientRevNacionais.RecordCount <> 0 then begin if LkUpListaSubGrupos.Text <> ´´ then begin DmDados.ClientRevNacionais.Close; with DmDados.SqlRevNacionais do begin Close; CommandText := ´Select * From TBREVNACIONAIS Where FKCOD_GRUPO =´ +IntToStr(LkUpListaGrupos.KeyValue) + ´ And FKCOD_SUBGRUPO= ´ +IntToStr(LkUpListaSubGrupos.KeyValue) + ´ Order By NOMENUMERO´; Open; end; DmDados.ClientRevNacionais.Open; StbVerNacionais.Panels[0].Text := ´Total de Revistas: ´+ IntToStr(DmDados.ClientRevNacionais.RecordCount); Botoes; end; end;
GOSTEI 0
Aersoftware
05/01/2006
Não adiantou. O estranho também é que, deu esse erro logo no primeiro registro e agora quando abro o form de visualização, o LookUp de Grupos já vem marcado com o Grupo da 1ª revista. Era pra ele ficar sem nada.
Ah, acho que me esqueci de dizer, eu to usando um Form pra vizualização outro pra cadastro. Quando clico em Novo, ele abre o form de cadastro e só fecha se eu clicar em Salvar ou Cancelar.
Allan Elias Ramos :cry:
Ah, acho que me esqueci de dizer, eu to usando um Form pra vizualização outro pra cadastro. Quando clico em Novo, ele abre o form de cadastro e só fecha se eu clicar em Salvar ou Cancelar.
Allan Elias Ramos :cry:
GOSTEI 0
Caninha51
05/01/2006
o LookUp de Grupos já vem marcado com o Grupo da 1ª revista. Era pra ele ficar sem nada.
Joga zero pro KeyValue do lookup.
O problema eh q em algum momento o KeyValue tah null.
Ai quando ele vai converter null de inteiro pra string dar pau.
Tenta fazer um typecast pra ver se rola...
if DmDados.ClientRevNacionais.RecordCount <> 0 then begin if LkUpListaSubGrupos.Text <> ´´ then begin DmDados.ClientRevNacionais.Close; with DmDados.SqlRevNacionais do begin Close; CommandText := ´Select * From TBREVNACIONAIS Where FKCOD_GRUPO =´ +IntToStr(Integer(LkUpListaGrupos.KeyValue)) + ´And FKCOD_SUBGRUPO= ´ +IntToStr(Integer(LkUpListaSubGrupos.KeyValue)) + ´Order By NOMENUMERO´; Open; end; DmDados.ClientRevNacionais.Open; StbVerNacionais.Panels[0].Text := ´Total de Revistas: ´+ IntToStr(DmDados.ClientRevNacionais.RecordCount); Botoes; end; end;
flw
GOSTEI 0
Aersoftware
05/01/2006
Oi pessoal, demorei um pouco, mas voltei..
Ainda não consegui fazer funcionar.. eu apaguei todo o código e refiz, mas nao consigo tirar esse erro. Pra se ter uma idéia, ta assim:
[b:5566ca4016]No On Activate pra listar todos Grupos Nacionais:[/b:5566ca4016]
[b:5566ca4016]No OnActivate pra não listar nenhuma revista enquanto não tiver Grupo e SubGrupo selecionado:[/b:5566ca4016]
[b:5566ca4016]No OnLkUpGruposClose, pra listar todos SubGrupos daquele Grupo selecionado:[/b:5566ca4016]
Esses 3 acima funcionam, e fazem perfeitamente seu papel. Até estranho pq este último pega o KeyValue de um LookUp e funciona, agora esse próximo:
[b:5566ca4016]No OnLkUpListaSubGruposClose pra listar as revistas:[/b:5566ca4016]
Fiz uns testes há pouco e descobri que esse erro se dá quando ele pega o código pelo KeyValue do LookUp, pq se eu tirar essa parte e colocar um valor específiico pra cada um (como por exemplo 1), ele me lista certinho as revistas.
Não sei, sinceramente pq ele ´acha´ que tem um campo nulo, onde não tem.. :cry:
Allan Elias Ramos :cry:
Ainda não consegui fazer funcionar.. eu apaguei todo o código e refiz, mas nao consigo tirar esse erro. Pra se ter uma idéia, ta assim:
[b:5566ca4016]No On Activate pra listar todos Grupos Nacionais:[/b:5566ca4016]
DmDados.ClientGrupos.Close; with DmDados.SqlGrupos do begin close; CommandText := ´Select * from TBGRUPOS where TIPOGRUPO =´ +quotedstr(´Nacionais´) +´order by NOMEGRUPO´; open; end; DmDados.ClientGrupos.Open;
[b:5566ca4016]No OnActivate pra não listar nenhuma revista enquanto não tiver Grupo e SubGrupo selecionado:[/b:5566ca4016]
DmDados.ClientRevNacionais.Close; with DmDados.SqlRevNacionais do begin close; CommandText := ´Select * from TBREVNACIONAIS where FKCOD_GRUPO =0´ +´and FKCOD_SUBGRUPO=0´ +´order by NOMENUMERO´; open; end; DmDados.ClientRevNacionais.Open;
[b:5566ca4016]No OnLkUpGruposClose, pra listar todos SubGrupos daquele Grupo selecionado:[/b:5566ca4016]
if LkUpListaGrupos.Text <> ´´ then begin DmDados.ClientSubGrupos.Close; with DmDados.SqlSubGrupos do begin close; CommandText := ´Select * from TBSUBGRUPOS where FKCOD_GRUPO =´ +IntToStr(LkUpListaGrupos.KeyValue) +´order by NOMESUBGRUPO´; open; end; DmDados.ClientSubGrupos.Open; end; LkUpListaSubGrupos.Enabled := True;
Esses 3 acima funcionam, e fazem perfeitamente seu papel. Até estranho pq este último pega o KeyValue de um LookUp e funciona, agora esse próximo:
[b:5566ca4016]No OnLkUpListaSubGruposClose pra listar as revistas:[/b:5566ca4016]
if LkUpListaSubGrupos.Text <> ´´ then begin DmDados.ClientRevNacionais.Close; with DmDados.SqlRevNacionais do begin close; CommandText := ´Select * from TBREVNACIONAIS where FKCOD_GRUPO =´ +IntToStr(LkUpListaGrupos.KeyValue) +´and FKCOD_SUBGRUPO =´ +IntToStr(LkUpListaSubGrupos.KeyValue) +´order by NOMENUMERO´; open; end; DmDados.ClientRevNacionais.Open; end;
Fiz uns testes há pouco e descobri que esse erro se dá quando ele pega o código pelo KeyValue do LookUp, pq se eu tirar essa parte e colocar um valor específiico pra cada um (como por exemplo 1), ele me lista certinho as revistas.
Não sei, sinceramente pq ele ´acha´ que tem um campo nulo, onde não tem.. :cry:
Allan Elias Ramos :cry:
GOSTEI 0
Aersoftware
05/01/2006
Esqueci de dizer, estou usando o Delphi 2005 com Firebird. Eu tinha esse código feito pelo Delphi 7. Será que tem algo a ver isso?
Allan Elias Ramos :cry:
Allan Elias Ramos :cry:
GOSTEI 0
Aersoftware
05/01/2006
Eu tive pensando..
Tem alguma coisa errada aí, além do erro obvio. Pois ele diz que não pode converter um tipo Nulo em Inteiro. Além de não ter campo Nulo, o IntToStr não é pra transformar um tipo Inteiro em String?
Allan Elias Ramos
Tem alguma coisa errada aí, além do erro obvio. Pois ele diz que não pode converter um tipo Nulo em Inteiro. Além de não ter campo Nulo, o IntToStr não é pra transformar um tipo Inteiro em String?
Allan Elias Ramos
GOSTEI 0