Insert utilizando TSQLQuery

03/02/2006

0

Pessoal, estou com um problema com o seguinte código:

    SQLQuery.SQL.Add(´INSERT INTO PRONTUARIO VALUES(´);
    SQLQuery.SQL.Add(´:CODIGOSAME,´);
    SQLQuery.SQL.Add(´:NOME,´);
    SQLQuery.SQL.Add(´:DATANASCIMENTO,´);
    SQLQuery.SQL.Add(´:SEXO,´);
    SQLQuery.SQL.Add(´:ESTADOCIVIL,´);
    SQLQuery.SQL.Add(´:PARENTESCO,´);
    SQLQuery.SQL.Add(´:CPF,´);
    SQLQuery.SQL.Add(´:TIPOPRONTUARIO,´);
    SQLQuery.SQL.Add(´:MOTIVO,´);
    SQLQuery.SQL.Add(´:DATASAME,´);
    SQLQuery.SQL.Add(´:DATAULTIMAALTERACAO)´);
    if _CODIGOSAME = ´´ then
      SQLQuery.ParamByName(´CODIGOSAME´).Value := null
    else
      SQLQuery.ParamByName(´CODIGOSAME´).Value := _CODIGOSAME;
    if _NOME = ´´ then
      SQLQuery.ParamByName(´NOME´).Value := null
    else
      SQLQuery.ParamByName(´NOME´).Value := _NOME;
    if _DATANASCIMENTO = 0 then
      SQLQuery.ParamByName(´DATANASCIMENTO´).Value := null
    else
      SQLQuery.ParamByName(´DATANASCIMENTO´).Value := _DATANASCIMENTO;
    if _SEXO = ´´ then
      SQLQuery.ParamByName(´SEXO´).Value := null
    else
      SQLQuery.ParamByName(´SEXO´).Value := _SEXO;
    if _ESTADOCIVIL = 0 then
      SQLQuery.ParamByName(´ESTADOCIVIL´).Value := null
    else
      SQLQuery.ParamByName(´ESTADOCIVIL´).Value := _ESTADOCIVIL;
    if _PARENTESCO = 0 then
      SQLQuery.ParamByName(´PARENTESCO´).Value := null
    else
      SQLQuery.ParamByName(´PARENTESCO´).Value := _PARENTESCO;
    if _CPF = ´´ then
      SQLQuery.ParamByName(´CPF´).Value := null
    else
      SQLQuery.ParamByName(´CPF´).Value := _CPF;
    if _TIPOPRONTUARIO = ´´ then
      SQLQuery.ParamByName(´TIPOPRONTUARIO´).Value := null
    else
      SQLQuery.ParamByName(´TIPOPRONTUARIO´).Value := _TIPOPRONTUARIO;
    if _MOTIVO = 0 then
      SQLQuery.ParamByName(´MOTIVO´).Value := null
    else
      SQLQuery.ParamByName(´MOTIVO´).Value := _MOTIVO;
    if _DATASAME = 0 then
      SQLQuery.ParamByName(´DATASAME´).Value := null
    else
      SQLQuery.ParamByName(´DATASAME´).Value := _DATASAME;
    if _DATAULTIMAALTERACAO = 0 then
      SQLQuery.ParamByName(´DATAULTIMAALTERACAO´).Value := null
    else
      SQLQuery.ParamByName(´DATAULTIMAALTERACAO´).Value := _DATAULTIMAALTERACAO;

    try
      SQLQuery.ExecSQL;
      Result := True;
    except
      Result := False;
    end;


Acontece que está dando erro quando vai executar a instrução SQLQuery.ExecSQL, o erro diz ´unassigned code´. Alguém pode me dizer o que pode ser? A SQLQuery é da palheta dbExpress.


Ricobv

Ricobv

Responder

Posts

04/02/2006

Cesarpir

Amigo ricobv eu tive este problema tb quando fiz uma vez da mesma forma, o meu erro estava na configuração dos parametros principalmente no campo tipo data, eu tinha configurado errado o parametro do tipo data tem que ser ftDate, tente isso, outra coisa, para teste tá, vc poderia ao invés de:
SQLQuery.ParamByName(´NOME´).Value

por

SQLQuery.ParamByName(´NOME´).asString
SQLQuery.ParamByName(´DATANASCIMENTO´).asDate

ou seja troque cada um pelo seu tipo, não use .Value;

Espero que ajude
Uso Delphi 7, DBExpress e Firebird 1.5

César


Responder

08/02/2006

Ricobv

Valeu a ajuda, cara, vou tentar fazer isso... :D


Responder

30/01/2009

Woinch

Aproveitando esse tópico. Estou com o mesmo problema, mas em oracle. O problema está em campos do tipo data. Estou utilizando .AsDate e o insert direto no SQLQuery como é feito acima.

O seguinte erro aparece para mim: ´ORA-01843: not a valid month´.

Não queria utilizar TO_DATE no insert, pois essa mesma aplicação deve funcionar tanto em Oracle como em Firebird e SQLServer. Se com a query ´select *´ e os comandos insert e post do DataSet funciona corretamente, porque com ´insert into´ na query e ExecSQL está me apresentando esse erro? Tem algum comando que eu possa utilizar para ´preparar´ essa query?

Muito obrigado.


Responder

09/08/2009

Steve_narancic

SQLQuery.ParamByName(´NOME´).asString SQLQuery.ParamByName(´DATANASCIMENTO´).asDate ou seja troque cada um pelo seu tipo, não use .Value;


Fiz desta maneira e da erro! could not convert null to ...


Responder

11/08/2009

Emerson Nascimento

com campos do tipo data/hora, tentem [b:12b1b92828].AsSQLTimeStamp[/b:12b1b92828].

com campos cujo valor é nulo, tentem [b:12b1b92828].AsVariant := null[/b:12b1b92828] ou [b:12b1b92828].Clear[/b:12b1b92828] ou ainda, manupile a instrução de modo a não listar esses campos.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar