ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Error Code: -413 Firebird 2.0?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Mai 26, 2017 9:32 am    Assunto: Error Code: -413 Firebird 2.0? Responder com Citação

Porque retorna o erro abaixo sobre este select

Código:
select max(cast(num_caixa as integer)) from valor_inicial_caixa;



SQL Error: conversion error from string "". Error Code: -413. Overflow occured during data type conversion.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Sex Mai 26, 2017 9:38 am    Assunto: Responder com Citação

Esse tópico deveria estar na sessão de banco não?

Qual o valor desse num_caixa? pois aparentemente ele está ultrapassando os limites de um inteiro, se for isso mesmo, altere o tipo da conversão para um LongInt por exemplo
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Mai 26, 2017 9:56 am    Assunto: Responder com Citação

leo_cj escreveu:
Esse tópico deveria estar na sessão de banco não?

Qual o valor desse num_caixa? pois aparentemente ele está ultrapassando os limites de um inteiro, se for isso mesmo, altere o tipo da conversão para um LongInt por exemplo
Errei o local de postagem. Depois eu comento vou ter que fazer o teste de noite. Mais se não me engano ja tinha mudado para longint este cast ai e não resolveu, como não da pra testear agora vou ter que aguardar até de noite.

Valeu pela dica.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Sex Mai 26, 2017 10:02 am    Assunto: Responder com Citação

Opa, sem problemas

Ok, quando testar posta aqui o resultado, e caso ainda ocorra o erro, informe também o valor do num_caixa para o pessoal poder analisar melhor
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sáb Mai 27, 2017 2:25 pm    Assunto: Responder com Citação

leo_cj escreveu:
Opa, sem problemas

Ok, quando testar posta aqui o resultado, e caso ainda ocorra o erro, informe também o valor do num_caixa para o pessoal poder analisar melhor


Peguei o select que esta com problema, é este
Código:
SELECT ( MAX(CAST(coalesce(nrordemserv,'0') as bigint) + 1 ))as n_doc
  FROM ordemserv WHERE CAST(nrordemserv as bigint) <= 999991


Mudei para bigint e continua o problema

Citação:
Overflow occurred during data type conversion.
conversion error from string "".



O campo é este
Citação:
NRORDEMSERV VARCHAR(20),


Pertence a esta função aqui
Código:
function Tfrmcadordserv.FuncMaxOrdemServ(aqry: TZQuery): Integer;
begin
 { with aqry do
  begin
    Close;
    SQL.Clear;
    SQL.Text := ' SELECT ( MAX( CAST(nrordemserv as INTEGER) ) + 1 )  as n_doc '+
                '   FROM ordemserv WHERE CAST(nrordemserv as INTEGER) <= 999991 ';
    Open;
    if FieldByName('n_doc').AsInteger > 999991 then
      begin
        // configura a query de 50.000 a 99.999
        Close;
        SQL.Clear;
        SQL.Text := ' SELECT FIRST 1 ( CAST(o.nrordemserv as INTEGER) + 1 ) as n_doc '+
                    '   FROM ordemserv as o '+
                    '  WHERE  o.nrordemserv > ''50000'' and '+
                    '        substring(o.nrordemserv from 5 for 1) <> '''' and '+
                    '     not exists (select 1 from ordemserv as s '+
                    '     where s.nrordemserv = CAST(CAST(o.nrordemserv as INTEGER) + 1 as varchar(10))) '+
                    '   ORDER BY o.nrordemserv ';
        Open;
        if IsEmpty then
          begin
            // configura a query de 100.000 a 999.999
            Close;
            SQL.Clear;
            SQL.Text := ' SELECT FIRST 1 ( CAST(o.nrordemserv as INTEGER) + 1 ) as n_doc '+
                        '   FROM ordemserv as o '+
                        '  WHERE o.nrordemserv >= ''100000'' and '+
                        '    substring(o.nrordemserv from 6 for 1) <> '''' and '+
                        '    not exists (select 1 from ordemserv as s '+
                        '   where s.nrordemserv = CAST(CAST(o.nrordemserv as INTEGER) + 1 as varchar(10))) '+
                        '    ORDER BY o.nrordemserv ';
            Open;
            if IsEmpty then
                Result := 0 // ou outro valor a retornar quando não encontrou código disponível
            else
                Result := FieldByName('n_doc').AsInteger;
          end
        else
            Result := FieldByName('n_doc').AsInteger;
      end
    else
        Result := FieldByName('n_doc').AsInteger;
  end;
       }
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sáb Mai 27, 2017 4:18 pm    Assunto: Responder com Citação

Ja descobri, tem um que foi gravado com este campo sem valor algum causando este problema. Por isso o retorno esta com string = ""

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Seg Mai 29, 2017 8:37 am    Assunto: Responder com Citação

Que bom que conseguiu descobrir o problema, o campo foi gravado vazio ('') ou null? se for null, você pode utilizar o COALESCE pra transformar o null em 0
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Mai 29, 2017 3:47 pm    Assunto: Responder com Citação

leo_cj escreveu:
Que bom que conseguiu descobrir o problema, o campo foi gravado vazio ('') ou null? se for null, você pode utilizar o COALESCE pra transformar o null em 0
Foi em vazio mesmo emptstr

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB