Could not convert variant of type (null) into type double?
o meu ClientDataSet está com esse codigo dentro do CommandText..
quando faço uma pesquisa que não é retornado nada ele apresenta esse erro, o que pode ser...?
select FILIAIS.codigo as COD_FILIAL, FILIAIS.nome_filial as NOME_FILIAL, LOC.CODIGO as LOCACAO, LOC.cliente as CLIENTE, LOC.locatario as LOCATARIO, LOC.data as SAIDA, LOC.dataretorno as RETORNO, DET.COD_FILME as FILME, DET.NOME_FILME as TITULO, DET.valor_filme as VALOR from LOCACAO LOC left join DETLOCACAO DET on (DET.LOCACAO=LOC.CODIGO) left join filiais on (loc.cod_filial = FILIAIS.codigo) where DET.DEVOLVIDO =´N´
quando faço uma pesquisa que não é retornado nada ele apresenta esse erro, o que pode ser...?

Paullsoftware
Curtidas 0
Respostas

Tnaires
18/08/2006
Olá
O q vc faz depois que chama um Open? Talvez seu programa esteja usando o valor de um dos campos da consulta sem verificar a propriedade IsEmpty do DataSet.
O q vc faz depois que chama um Open? Talvez seu programa esteja usando o valor de um dos campos da consulta sem verificar a propriedade IsEmpty do DataSet.
GOSTEI 0

Paullsoftware
18/08/2006
Olá
O q vc faz depois que chama um Open? Talvez seu programa esteja usando o valor de um dos campos da consulta sem verificar a propriedade IsEmpty do DataSet.
nada...
antes do open eu inclemento o código para fazer uma busca na tabela assim:
aux := ´ select FILIAIS.codigo as COD_FILIAL, FILIAIS.nome_filial as NOME_FILIAL, LOC.CODIGO as LOCACAO, LOC.cliente as CLIENTE, LOC.locatario as LOCATARIO, LOC.data as SAIDA, LOC.dataretorno as RETORNO, DET.COD_FILME as FILME, DET.NOME_FILME as TITULO, DET.valor_filme as VALOR from LOCACAO LOC left join DETLOCACAO DET on (DET.LOCACAO=LOC.CODIGO) left join filiais on (loc.cod_filial = FILIAIS.codigo) where DET.DEVOLVIDO =´´N´´ and LOC.CLIENTE =:PCLIENTE ´; Params.ParamByName(´PCLIENTE´).AsString := Edit1.Text; Open;
o erro ocorre quando a consulta não retorna nenhum registro, eu queria substituir o erro por uma mensagem, tipo: ´A consulta não retornou nenhum registro´ aos invés do erro!
como faço isso?
GOSTEI 0

Tnaires
18/08/2006
o erro ocorre quando a consulta não retorna nenhum registro, eu queria substituir o erro por uma mensagem, tipo: ´A consulta não retornou nenhum registro´ aos invés do erro!
como faço isso?
Use try / except
Mas é estranho ocorrer um erro só pq a consulta não retornou nenhum registro... Quando vc executa essa consulta no banco, ocorre algum erro?
GOSTEI 0

Paullsoftware
18/08/2006
[quote:5af99cbb07=´paullsoftware´]
o erro ocorre quando a consulta não retorna nenhum registro, eu queria substituir o erro por uma mensagem, tipo: ´A consulta não retornou nenhum registro´ aos invés do erro!
como faço isso?
Use try / except
Mas é estranho ocorrer um erro só pq a consulta não retornou nenhum registro... Quando vc executa essa consulta no banco, ocorre algum erro?[/quote:5af99cbb07]
não...
simplesmente não retorna nada, mais quando executo pela aplicação retorna esse erro, não fiz nada a mais, não existe campos temporários, nada, simplesmente os campos trazidos da tabela...
apropósito, já estou usando o código dentro do try except... :cry:
GOSTEI 0

Paullsoftware
18/08/2006
Acabei de encontrar o erro...
Eu criei uma view para fazer a consulta e testar, e usei um outro dataset daí funcionou perfeitamente, quando voltei para aplicação e abri o [b:f896100bf2]Fields Editor[/b:f896100bf2] percebi que estava usando o evento OnGetText do Field Codigo e fui dar uma olhada, eu sempre uso esse evento, mais nesse expecifico estava assim:
onde o correte seria:
valeu pela ajuda :wink:
Eu criei uma view para fazer a consulta e testar, e usei um outro dataset daí funcionou perfeitamente, quando voltei para aplicação e abri o [b:f896100bf2]Fields Editor[/b:f896100bf2] percebi que estava usando o evento OnGetText do Field Codigo e fui dar uma olhada, eu sempre uso esse evento, mais nesse expecifico estava assim:
Text := FormatFloat(´00000´,Sender.Value);
onde o correte seria:
if not Sender.IsNull then //quando não for nulo formatar para Text := FormatFloat(´00000´,Sender.Value);
valeu pela ajuda :wink:
GOSTEI 0

Tnaires
18/08/2006
Blz!!
Abraços
Abraços
GOSTEI 0