Fórum Erro ao Listar um SubGrupo a Partir de Um Grupo #308042
05/01/2006
0
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
Curtir tópico
+ 0Posts
06/01/2006
Caninha51
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
06/01/2006
Aersoftware
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
07/01/2006
Caninha51
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
03/02/2006
Aersoftware
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
04/02/2006
Aersoftware
Allan Elias Ramos :cry:
Gostei + 0
08/02/2006
Aersoftware
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
Clique aqui para fazer login e interagir na Comunidade :)