| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
danielms.roda Novato

Registrado: Segunda-Feira, 21 de Fevereiro de 2011 Mensagens: 83
|
Enviada: Seg Out 22, 2012 8:16 am Assunto: Problema insert no TSQLDataset[RESOLVIDO] |
|
|
Bom dia galera
Estou tendo dificuldades ao passar para o CommandText do TSQLDataset a sintaxe de insert. Ao executar o comando pelo delphi ele me retorna um erro dizendo q a primeira coluna q passo para o insert, não existe. Se executado no banco de dados, nesse caso Firebird, o comando executa sem nenhum problema. Alguem poderia me ajudar? agradeço desde já
Editado pela última vez por danielms.roda em Seg Out 22, 2012 3:40 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Out 22, 2012 9:38 am Assunto: |
|
|
Bom dia,
Acho melhor você postar a instrução SQL e o código utilizados.
Editado pela última vez por imex em Dom Out 01, 2023 5:17 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
danielms.roda Novato

Registrado: Segunda-Feira, 21 de Fevereiro de 2011 Mensagens: 83
|
Enviada: Seg Out 22, 2012 2:39 pm Assunto: |
|
|
| imex escreveu: | Bom dia,
Acho melhor você postar a instrução SQL e o código utilizados.
|
A função na qual executo o método de inserção é a seguinte:
| Código: | class function TUsuarioODA.Insert(aUsuario: TUsuario): Boolean;
begin
with TSQLDataSet.Create(nil) do
try
SQLConnection := DMMyFinance.SQLConnectionMyFinance;
CommandText := 'insert into users (senha, login, nome, cpf, rg, data_nasc)' +
'values (:senha, :login, :nome, :cpf, :rg, :data_nasc)';
Params[0].AsString := aUsuario.Login;
Params[1].AsString := aUsuario.Senha;
Params[2].AsString := aUsuario.Nome;
Params[3].AsString := aUsuario.CPF;
Params[4].AsString := aUsuario.RG;
Params[5].AsDate := aUsuario.DataNasc;
Result := ExecSQL(True) > 0;
finally
Free;
end;
end; |
e é aqui que chamo essa função:
| Código: | procedure TfrmCadastroUsuario.FrameCadastro1btnSalvarClick(Sender: TObject);
begin
if Validate then
if TMensagens.MsgPergunta('Deseja realmente salvar as alterações feitas?') then
begin
SetValues;
if TUsuarioODA.FindByCode(FUsuario) then
begin
if TUsuarioODA.Save(FUsuario) then
TMensagens.MsgAviso('Dados alterados com sucesso!');
end
else
if TUsuarioOda.Insert(FUsuario) then
TMensagens.MsgAviso('Registro inserido com sucesso!');
BloquearEdicao(True);
BloquearBotoes(oInactive);
end;
end; |
Ao executar o sql, fala que a primeira coluna(neste caso coluna LOGIN) não existe, porém executo a query pelo banco e funciona |
|
| Voltar ao Topo |
|
 |
danielms.roda Novato

Registrado: Segunda-Feira, 21 de Fevereiro de 2011 Mensagens: 83
|
Enviada: Seg Out 22, 2012 3:14 pm Assunto: |
|
|
| Consegui resolver, no ExecSQL, mudei o parametro para false e funcionou |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Out 22, 2012 3:22 pm Assunto: |
|
|
| Que bom que resolveu, mas só um detalhe... parece que a ordem dos parâmetros Login e Senha está invertida (Senha e Login na instrução SQL, Login e Senha no código que atribui os valores). |
|
| Voltar ao Topo |
|
 |
danielms.roda Novato

Registrado: Segunda-Feira, 21 de Fevereiro de 2011 Mensagens: 83
|
Enviada: Seg Out 22, 2012 3:23 pm Assunto: |
|
|
| imex escreveu: | | Que bom que resolveu, mas só um detalhe... parece que a ordem dos parâmetros Login e Senha está invertida (Senha e Login na instrução SQL, Login e Senha no código que atribui os valores). |
é verdade, devo ter me confudido na hora de codificar, obrigado!  |
|
| Voltar ao Topo |
|
 |
|