Locate nao acha nada, erro estranho... porque?
Olá amigos, tenhos um [b:4689a41c5d]IBDataSet[/b:4689a41c5d], e trago meus registros com o seguinte SQL:
Beleza... passo todos os parâmetros, e me retorna algo em torno de 600 registros... tudo certinho, já verifiquei, quando tento dar este locate fala que não acha:
Já vi lá... o IDALUNO vem no select, e já existe no DataSet do TbBoletim, e o TbNotaIDALUNO.ASInteger, traz um valor que está no select acima...
Por que nao quer funcionar? to fazendo algo de errado?
[]s
select bn.*, b.idaluno from boletim_notas bn left join boletim b on (b.idboletim = bn.idboletim) where (b.idturma = :pturma) and (b.ano = :pano) and (bn.iddisciplina = :pdisc)
Beleza... passo todos os parâmetros, e me retorna algo em torno de 600 registros... tudo certinho, já verifiquei, quando tento dar este locate fala que não acha:
if not TbBoletim.Locate(´IDALUNO´, TbNotaIDALUNO.AsInteger, [loCaseInsensitive]) then showmessage(´erro´);
Já vi lá... o IDALUNO vem no select, e já existe no DataSet do TbBoletim, e o TbNotaIDALUNO.ASInteger, traz um valor que está no select acima...
Por que nao quer funcionar? to fazendo algo de errado?
[]s
Titanius
Curtidas 0
Respostas
Marco Salles
14/08/2006
sem compromisso é so para começar a brincadeira
tente assim:
tente assim:
if not TbBoletim.Locate(´IDALUNO´, TbNotaIDALUNO.AsString, [loCaseInsensitive]) then showmessage(´erro´);
GOSTEI 0
Titanius
14/08/2006
Olá Marco,
Infelizmente não funcionou... :(
O campo em si, é integer...
[]s
Infelizmente não funcionou... :(
O campo em si, é integer...
[]s
GOSTEI 0
Siam
14/08/2006
Talvez seja pq o segundo parâmetro do locate requeira um Variant.
Tente colocar: TbNotaIDALUNO.Value
Tente colocar: TbNotaIDALUNO.Value
GOSTEI 0
Acacio
14/08/2006
Tire a opção loCaseInsensitive deixa assim, pois é um inteiro e essa opção é para campos do tipo caracter.
if not TbBoletim.Locate(´IDALUNO´, TbNotaIDALUNO.Asinteger, []) then
showmessage(´erro´);
if not TbBoletim.Locate(´IDALUNO´, TbNotaIDALUNO.Asinteger, []) then
showmessage(´erro´);
GOSTEI 0
Titanius
14/08/2006
Até agora nada...
Tentei o Value e nada, tentei tirar o loCaseInsensitive e nada...
To achando estranho, alguem tem mais alguma ideia?
[]s
Tentei o Value e nada, tentei tirar o loCaseInsensitive e nada...
To achando estranho, alguem tem mais alguma ideia?
[]s
GOSTEI 0
Marco Salles
14/08/2006
sinceramente , todas as respostas apresentadas , no meu entendimento deveria funcionar... So resta saber qual o valor exato de TbNotaIDALUNO.Asinteger nop momento antes de realizar a pesquisa
Coloque isto antes
e certifique que este valor esta mesmo na base a ser pesquisada...
Coloque isto antes
showmessage(TbNotaIDALUNO.AsString); if not TbBoletim.Locate(´IDALUNO´, TbNotaIDALUNO.Asinteger, []) then showmessage(´erro´);
e certifique que este valor esta mesmo na base a ser pesquisada...
GOSTEI 0
Jurandi
14/08/2006
Para LOCATE funcionar o valor a ser consultado deve ser to tipo VARARRAY.
if not TbBoletim.Locate(´IDALUNO´, VarArrayOf([TbNotaIDALUNO.Asinteger, []])) then
showmessage(´erro´);
Não esqueça de decarar a unit VARIANTS.
[]´ s
if not TbBoletim.Locate(´IDALUNO´, VarArrayOf([TbNotaIDALUNO.Asinteger, []])) then
showmessage(´erro´);
Não esqueça de decarar a unit VARIANTS.
[]´ s
GOSTEI 0
Marco Salles
14/08/2006
Para LOCATE funcionar o valor a ser consultado deve ser to tipo VARARRAY.
ate aonde eu sei , voce precisa usar um Array de Valores , quando for pesquisar vários campos simultaneamentes.
Ate mesmo o a Biblia de cantu usa o Locate [b:7070fcc3df]sem o VarArrayOf [/b:7070fcc3df], quando se pesquisa valores em apenas um Campo
GOSTEI 0