Erro na realização do insert

02/01/2020

16

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.
Responder

Posts

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
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. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar