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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar