 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
jpaulo102 Novato

Registrado: Terça-Feira, 22 de Agosto de 2017 Mensagens: 17
|
Enviada: Ter Set 19, 2017 12:10 pm Assunto: Erro ao inserir dados no banco |
|
|
[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 |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Set 19, 2017 12:47 pm Assunto: |
|
|
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 |
|
 |
jpaulo102 Novato

Registrado: Terça-Feira, 22 de Agosto de 2017 Mensagens: 17
|
Enviada: Ter Set 19, 2017 1:35 pm Assunto: |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Set 19, 2017 2:23 pm Assunto: |
|
|
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 |
|
 |
jpaulo102 Novato

Registrado: Terça-Feira, 22 de Agosto de 2017 Mensagens: 17
|
Enviada: Qua Set 20, 2017 12:20 pm Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|