Fórum Select Simples com Problemas #243991

22/07/2004

0

Tenho uma Tabela com esses dados:

MDT_TurNumero Mod_Turma
1 4
3 1
3 2
3 3

Faço uma consulta para pequisar quais os módulos de uma turma passando como parâmetro o número da turma.

//Passagem do Parâmetro - A passagem vem do resultado de uma outra consulta!!

data.IBQModTur.Close;
data.IBQModTur.ParamByName(´turma´).value:=data.IBQTurDTTUR_NUMERO.Value;
data.IBQModTur.Open;

//A consulta no IBQModTur
select * from MODTURMA where MDT_TURNUMERO=:turma

O que está acontecendo: Quando o parâmetro passado é a turma número 3 ele só seleciona a primeira linha, visto que na tabela tem 3 ocorrências com essa turma.

Alguém sabe porque isso?

Valeu a força!!

JR.


Jrjoliv2003

Jrjoliv2003

Responder

Posts

22/07/2004

Josemars

Não entendi muito bem o dado que está sendo mostrado. è três e um ou trinta e um ????


Responder

Gostei + 0

22/07/2004

Jrjoliv2003

É que a mensagem desaorganizou um pouco as informações. É assim:
São 2 colunas. Vou colocar na horizontal.

Turma(1,3,3,3)
Modul (4,1,2,3)

Se consulto com o número da turma 3, a consulta só me retorna o módulo 1 e deveria me retornar os módulos 1,2,3.

Valeu!!

JR.


Responder

Gostei + 0

22/07/2004

Emerson Nascimento

´Quando o parâmetro passado é a turma número 3 ele só seleciona a primeira linha, visto que na tabela tem 3 ocorrências com essa turma´

onde essas informações estão sendo exibidas? numa grade? num componente data-ware? há filtros na sua query?

acho que a instrução está correta.


Responder

Gostei + 0

22/07/2004

Jrjoliv2003

Primeiro eu coloquei data.IBQModTur.RecordCount para ver a quatidade de linhas. Converti e exibia com showmessage().

Depois eu vinculei com uma DBGrid.

A mesma coisa!!!

JR.


Responder

Gostei + 0

22/07/2004

Paulo_amorim

Olá

na passagem de parâmetros, vc tentou colocar ´3´ o invés do campo?
Se com uma constante ele funcionar, o problema não eh na query, e sim no componente dataaware aí...

Até+


Responder

Gostei + 0

22/07/2004

Jrjoliv2003

Vou testar!

Mais tarde te retorno!


Muito Obrigado.

José Roberto.


Responder

Gostei + 0

22/07/2004

Jrjoliv2003

Galera!!! Nada

Já fiz um monte de trocas:

data.IBQTurDTTUR_NUMERO.Value para data.IBQTurDTTUR_NUMERO.AsInteger

Já tirei o DataSource (de repente!!!)

Já usei data.IBQModTur.Params.ParamByName(´turma´).value:=data.IBQTurDTTUR_NUMERO.Value;

Já coloquei número (no caso 3).

Nada não sei mais o q faço!!
E preciso disso para pode terminar a tela.


JR.



:arrow: [color=red:5838d4d532]Mensagem alterada pelo Moderador oTTo. Evite o uso de palavrões.[/color:5838d4d532]


Responder

Gostei + 0

22/07/2004

Otto

tenta isso:

esse campo MDT_TURNUMERO é string ou inteiro?? :?


se for inteiro faça:
with query do begin
  if active then close;
  sql.text := ´select * from MODTURMA where MDT_TURNUMERO=´+Edit1.text;
  Open;
end;//with



se for string faça:
with query do begin
  if active then close;
  sql.text := ´select * from MODTURMA where MDT_TURNUMERO= ´+QuotedStr(edit1.text);
  Open;
end;//with




ver se pega... :wink:


Responder

Gostei + 0

22/07/2004

Jrjoliv2003

É inteiro.

eu fiz, para testar, uma query só com esse código:

select * from ModTurma

quando faço ModTurma.RecordCount e exibo, me retorna apenas 1.

Coloquei no grid e só aparece a 1º linha da tabela consultada.

OBS: Isso q estou fazendo é parte integrante do meu Porjeto Final de curso. Tô na última tela das 23. Tava tudo dando certo. Tô desde Segunda-Feira nessa luta!!! C+&¬$#@

Tá falendo muito a ajuda.

JR.


Responder

Gostei + 0

22/07/2004

Persist

Ué :shock:
eu fiz, para testar, uma query só com esse código: 

select * from ModTurma 

quando faço ModTurma.RecordCount e exibo, me retorna apenas 1. 

Coloquei no grid e só aparece a 1º linha da tabela consultada. 


Então a tabela só tem um registro.


Responder

Gostei + 0

22/07/2004

Jrjoliv2003

Não!

Tem 4 registros: 1 para uma turma 2 e 3 para turma 4. Quando consulto só aparece a primeira linha.


JR.


Responder

Gostei + 0

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

Aceitar