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 

Erro ao inserir dados no banco

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
jpaulo102
Novato
Novato


Registrado: Terça-Feira, 22 de Agosto de 2017
Mensagens: 17

MensagemEnviada: Ter Set 19, 2017 12:10 pm    Assunto: Erro ao inserir dados no banco Responder com Citação

[FireDAC][Phys][MSSQL]-335. Parameter data type is unknown.
Hint: specify TADParam.DataType or assign TADParam value before Prepare/Execute call. ]

Sem o insert do telefone não da erro

o que poderia ser?

procedure TFrmMensalistas.InsereMensalista;
begin
with dm.qry_clientes do
begin
Active := false;
SQL.Clear;

if(operacao = 'novo') then
begin
MensagemSucesso := ('Dados inseridos com sucesso');
SQL.Add('INSERT INTO CLIENTES(IDCLIENTE,CLI_NOME,CLI_SEXO,CLI_CPF,CLI_DATA_NASC,CLI_DATA_CAD)');
SQL.Add('VALUES(NULL,:CLI_NOME,:CLI_SEXO,:CLI_CPF, :CLI_DATA_NASC,NOW())');
SQL.Add('INSERT INTO TELEFONES(IDTELEFONE,TEL_TIPO,TEL_NUMERO,ID_CLIENTE)');
SQL.Add('VALUES(NULL,:TEL_TIPO,:TEL_NUMERO,:(SELECT LAST_INSERT_ID()))');
ParamByName('CLI_NOME').AsString := EdtNome.Text;
ParamByName('CLI_SEXO').AsString := sexo;
ParamByName('CLI_CPF').AsString := EdtCpf.Text;
ParamByName('CLI_DATA_NASC').AsDateTime := DateNascimento.Date;
ParamByName('TEL_TIPO').AsString := CmbTipoTel.Items[CmbTipoTel.ItemIndex];
ParamByName('TEL_NUMERO').AsString := EdtTelefone.Text;


end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Set 19, 2017 12:47 pm    Assunto: Responder com Citação

Teste assim:
Código:
procedure TFrmMensalistas.InsereMensalista;
begin
  with dm.qry_clientes do
  begin
    Active := false;
    SQL.Clear;

    if (operacao = 'novo') then
    begin
      MensagemSucesso := ('Dados inseridos com sucesso');
      SQL.Add('INSERT INTO CLIENTES(IDCLIENTE,CLI_NOME,CLI_SEXO,CLI_CPF,CLI_DATA_NASC,CLI_DATA_CAD)');
      SQL.Add('VALUES(NULL,:CLI_NOME,:CLI_SEXO,:CLI_CPF, :CLI_DATA_NASC,NOW())');
      SQL.Add('INSERT INTO TELEFONES(IDTELEFONE,TEL_TIPO,TEL_NUMERO,ID_CLIENTE)');
      SQL.Add('VALUES(NULL,:TEL_TIPO,:TEL_NUMERO,:(SELECT LAST_INSERT_ID()))');
      ParamByName('CLI_NOME').AsString := EdtNome.Text;
      ParamByName('CLI_SEXO').AsString := sexo;
      ParamByName('CLI_CPF').AsString := EdtCpf.Text;
      ParamByName('CLI_DATA_NASC').AsDateTime := DateNascimento.Date;
      ParamByName('TEL_TIPO').AsString := CmbTipoTel.Text;
      ParamByName('TEL_NUMERO').AsString := EdtTelefone.Text;
      try
        ExecSQL();
        ShowMessage(MensagemSucesso);
      except
        on E: exception do
        begin
          ShowMessage('Erro na manutenção do banco');
          exit;
        end;
      end;
    end;
  end;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
jpaulo102
Novato
Novato


Registrado: Terça-Feira, 22 de Agosto de 2017
Mensagens: 17

MensagemEnviada: Ter Set 19, 2017 1:35 pm    Assunto: Responder com Citação

natanbh1 escreveu:
Teste assim:
Código:
procedure TFrmMensalistas.InsereMensalista;
begin
  with dm.qry_clientes do
  begin
    Active := false;
    SQL.Clear;

    if (operacao = 'novo') then
    begin
      MensagemSucesso := ('Dados inseridos com sucesso');
      SQL.Add('INSERT INTO CLIENTES(IDCLIENTE,CLI_NOME,CLI_SEXO,CLI_CPF,CLI_DATA_NASC,CLI_DATA_CAD)');
      SQL.Add('VALUES(NULL,:CLI_NOME,:CLI_SEXO,:CLI_CPF, :CLI_DATA_NASC,NOW())');
      SQL.Add('INSERT INTO TELEFONES(IDTELEFONE,TEL_TIPO,TEL_NUMERO,ID_CLIENTE)');
      SQL.Add('VALUES(NULL,:TEL_TIPO,:TEL_NUMERO,:(SELECT LAST_INSERT_ID()))');
      ParamByName('CLI_NOME').AsString := EdtNome.Text;
      ParamByName('CLI_SEXO').AsString := sexo;
      ParamByName('CLI_CPF').AsString := EdtCpf.Text;
      ParamByName('CLI_DATA_NASC').AsDateTime := DateNascimento.Date;
      ParamByName('TEL_TIPO').AsString := CmbTipoTel.Text;
      ParamByName('TEL_NUMERO').AsString := EdtTelefone.Text;
      try
        ExecSQL();
        ShowMessage(MensagemSucesso);
      except
        on E: exception do
        begin
          ShowMessage('Erro na manutenção do banco');
          exit;
        end;
      end;
    end;
  end;
end;


Continua com o mesmo erro, não sei mais aonde eu mexo kkk
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Set 19, 2017 2:23 pm    Assunto: Responder com Citação

Boa tarde,

jpaulo102, acho que você vai ter que executar um Insert primeiro para depois limpar esse primeiro Insert e executar o segundo o Insert.
Ou então utilizar 2 componentes do tipo query, um para cada Insert.

Espero que ajude


Editado pela última vez por imex em Ter Out 03, 2023 6:17 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
jpaulo102
Novato
Novato


Registrado: Terça-Feira, 22 de Agosto de 2017
Mensagens: 17

MensagemEnviada: Qua Set 20, 2017 12:20 pm    Assunto: Responder com Citação

imex escreveu:
Boa tarde,

jpaulo102, acho que você vai ter que executar um Insert primeiro para depois limpar esse primeiro Insert e executar o segundo o Insert.
Ou então utilizar 2 componentes do tipo query, um para cada Insert.

Espero que ajude


Obrigado!!! RESOLVIDO


Código:
procedure TFrmMensalistas.InsereMensalista;
var MensagemSucesso: String;
begin


    if (operacao = 'novo') then
    begin
      with dm.qry_clientes do
      begin
        Active := false;
        SQL.Clear;
        MensagemSucesso := ('Dados inseridos com sucesso');
        SQL.Add('INSERT INTO CLIENTES(IDCLIENTE,CLI_NOME,CLI_SEXO,CLI_CPF,CLI_DATA_NASC,CLI_DATA_CAD)');
        SQL.Add('VALUES(NULL,:CLI_NOME,:CLI_SEXO,:CLI_CPF, :CLI_DATA_NASC,NOW())');
        ParamByName('CLI_NOME').AsString := EdtNome.Text;
        ParamByName('CLI_SEXO').AsString := sexo;
        ParamByName('CLI_CPF').AsString := EdtCpf.Text;
        ParamByName('CLI_DATA_NASC').AsDateTime := DateNascimento.Date;
        try
          ExecSQL();
        except
          on E: exception do
          begin
            ShowMessage('Erro na manutenção do banco');
            exit;
          end;
        end;
      end;

      with dm.qry_telefones do
      begin
        Active := false;
        SQL.Clear;
        SQL.Add('INSERT INTO TELEFONES(IDTELEFONE,TEL_TIPO,TEL_NUMERO,ID_CLIENTE)');
        SQL.Add('VALUES(NULL,:TEL_TIPO,:TEL_NUMERO,(SELECT LAST_INSERT_ID()))');
        ParamByName('TEL_TIPO').AsString := CmbTipoTel.Items[CmbTipoTel.ItemIndex];
        ParamByName('TEL_NUMERO').AsString := EdtTelefone.Text;
        try
          ExecSQL();
          ShowMessage(MensagemSucesso);
        except
          on E: exception do
          begin
            ShowMessage('Erro na manutenção do banco');
            exit;
          end;
        end;
      end;


    end;


  end;
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 -> Delphi 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