auto incremento com params

Delphi

08/04/2005

Amigos, tenho esta tabela

CREATE TABLE "SENHA" 
(
  "ID"INTEGER NOT NULL,
  "CODIGO"VARCHAR(7),
  "TEMPO"TIME,
  "USUARIO"VARCHAR(12),
  "DATA"DATE,
  "HORA"TIME,
  "VENDEDOR"VARCHAR(20),
  "CODVENDEDOR"CHAR(4),
  "VALOR"NUMERIC(10, 2),
 PRIMARY KEY ("ID")
);

////O generator

CREATE GENERATOR "GENSENHA";

////A trigger

SET TERM ^ ;

CREATE TRIGGER "TRIGSENHA" FOR "SENHA" 
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (new.id is null) then new.id = gen_id (gensenha,1);
end
 ^

COMMIT WORK ^
SET TERM ;^


para dar um insert na tabela estou usando este código

with dm.qsenha do
begin
  close;
  sql.Clear;
  sql.add(´insert into senha (CODIGO, CODVENDEDOR, DATA, HORA, ID, TEMPO, USUARIO, VALOR, VENDEDOR)´);
  sql.Add(´values (:CODIGO, :CODVENDEDOR, :DATA, :HORA, :ID, :TEMPO, :USUARIO, :VALOR, :VENDEDOR)´);
  params[0].asstring := label6.Caption;
  params[1].asstring := frmshservidor.coduser;
  params[2].asdate := date;
  params[3].AsTime := time;
  params[4].asinteger := 0;
  params[5].astime := strtotime(copy(combobox1.text,1,5));
  params[6].asstring := label5.Caption;
  params[7].asfloat := strtofloat(val);
  params[8].asstring := frmshservidor.usuario;
  execsql;
  dm.IBTransaction1.CommitRetaining;

No params[4].asinteger, coloquei o valor 0, mas não sei o que devo fazer, pois não consigo inserir sem receber a mensagem de erro de violação de chave integ_16.

A pergunta é, como posso inserir dados desta forma, utilizando params, sendo que a tabela tem este campo auto-incremento? tenho que alterar alguma coisa na query?

Já tentei de várias formas e não consegui.
Obrigado pela atenção

Sanses


Sanses

Sanses

Curtidas 0

Respostas

Fabiobb

Fabiobb

08/04/2005

Tudo bem ?
Pode ser que sua pergunta tenha sido respondida.
Estou respondendo pq tem pessoas que sabem mais não auxiliam outra pessoa.
É o seguinte, pra funcionar essa inclusão não adicione o campo id no sql.
Quando tu passa o valor zero não é mesma que nulo.
Simplesmente não passa o nome do campo e a cláusula.


GOSTEI 0
Fabiobb

Fabiobb

08/04/2005

Tudo bem ? Pode ser que sua pergunta tenha sido respondida. Estou respondendo pq tem pessoas que sabem mais não auxiliam outra pessoa. É o seguinte, pra funcionar essa inclusão não adicione o campo id no sql. Quando tu passa o valor zero não é mesma coisa que nulo. Simplesmente não passa o nome do campo no sql e o valor no params.



GOSTEI 0
POSTAR