Erro na realização do insert

02/01/2020

0

Bom dia!

Estou com problemas para realizar o insert numa tabela chamada contas, entretanto eu tenho relacionamento com a tabela empresa.

Na tabela empresa eu tenho o seguintes campos:

Id_empresa Nome_Empresa Inscricao_Estadual.

255 AMG Ltda 08522255

Já na tabela de contas eu possuo o seguintes campos:

Id_contas Id_Empresa Valor Inscricao_Estadual Ano_Mes Ano_Mes_Conta ICMS TOTAL_RECOLHIDO

Porém para realizar o insert eu tenho que verificar se a inscrição estadual que estou inserido existe na tabela de empresa, se existir eu insiro, caso não existe retorna o erro de inserção. Eu não sei se existe a possibilidade de fazer no select as que não existir não inserir e no final mostrar essas inscrições estadual que não tenha vinculo com nenhuma empresa no banco de dados. Como poderia ser tratado o erro que estou recebendo e essa validação?

INSERT INTO Contas(
id_Conta,
id_empresa,
valor,
inscricao_estadual,
ano_mes,
ano_mes_Conta,
icms,
total_recolhido)
VALUES(
365545,
''''25.300,38'''',
''''08522255'''',
(SELECT emp.id_empresa FROM EMPRESA emp where emp.Inscricao_Estadual = ''''08522255''''),
''''199810'''',
''''199910'''',
''''38.011,71'''',
''''38.011,71'''');
Retorna o seguinte erro:

Relatório de erros -
ORA-01722: número inválido
Se alguém puder me ajudar, fico agradecido.
Robson

Robson

Responder

Posts

15/01/2020

Anderson Gonçalves

Fala boy,

Seguinte...

Faz uma consulta antes de fazer o insert

With ADOQuery1 do
begin
close;
sql.clear;
sql.add('Select InscricaoEstadual from Tabela');
sql.add('where InscricaoEstadual = :Inscricao');
parameters.parambyname('inscricao').value := Edti1.text; // O componente que contém a informação a ser checada
open;
if ADOQuery1.Recordcount = 0 then // Checando se ele encontrou algum registro com esse numero (Se = 0 não encontrou);
begin
ShowMessage('Nenhum registro encontrado com esse número');
exit;
end
else
begin
// Aqui você coloca o comando insert em outra query claro... porque ele encontrou a inscrição estadual informada.
end;
end;

espero ter ajudado.
Responder

15/01/2020

Mauricio Espido

Cheque os tipos de campos da tabela que você está tentando fazer o insert antes de executar. Geralmente pode ser limitação de caractere ou alguma letra onde deve ser somente número.
Responder

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

Aceitar