Array
(
)

Não consigo inserir registro com ASP.NET E BDP

Tpoeta
   - 21 nov 2005

Faz alguns dias que estou tentando desenvolver uma aplicação com ASP.NET e BDP no D2005 e INTERBASE 7.5, mas estou apanhando um monte.

Tenho uma tabela onde registro os pacientes de um hospital com os seguintes campos:

CODIGO - NOME - OLHO - CONVENIO - DATA - REOP

Estou com dois problemas, meu campo DATA chega no DBWebGrid assim 17/11/2005 00:00:00, mas eu inseri direto os dados no banco somente a data e no refresh do BdpDataAdapter ele chega normal, pq aparece assim no DBWebGrid e o que eu faço que não apareça?

Outra coisa é que não estou conseguindo inserir registro no banco de dados, aparece a seguinte mensagem:


Citação:
Errors
Falha ao ativar restrições. Uma ou mais linhas contêm valores que violam as restrições non-null, unique ou foreign-key.
Não há linha na posição 7.


Meu campo CODIGO é a chave primaria da tabela, onde tenho um GENERATOR em conjunto com um TRIGGER do seguinte modo:

#Código


SET SQL DIALECT 3;

SET NAMES NONE;

CREATE GENERATOR GEN_PACIENTES_ID;

SET TERM ^ ;




CREATE TRIGGER PACIENTES_BI FOR PACIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.CODIGO IS NULL) THEN
NEW.CODIGO = GEN_ID(GEN_PACIENTES_ID,1);
END
^


SET TERM ; ^


Ou seja, quando nenhum valor for dado a um campo, ele tem q ser dado um autoincremento, faço isso pelo IBExpert e funciona direitinho.

Os demais campos são todos NOT NULL, exceto REOP. E preencho todos os campos como manda o figurino em minha aplicação. Meu INSERT no BDPDATAADAPTER é:

#Código
INSERT INTO PACIENTES (NOME, OLHO, CONVENIO, DATA, REOP) VALUES (?, ?, ?, ?, ?)


Já tentei usando DBWebTextBox e já tentei com TextBox normais passando os valores por parametro e o erro sempre é o mesmo.

Já fiz alguns exemplos de umas revistas e nada também.

Alguém está passando por isso? Ou sabe como me ajudar?

Desde já, grato.


Sanses
   - 23 nov 2005

Abra o property buides e faça um databind personalizado para esta coluna que apresenta a data, assim logo na primeira vez que a página for aberta, já apresentará os dados como queres....

Abra o collections e veja se seus parametros estão configurados corretamente. Se todos os dados estão sendo enviados corretamente, algum parametro não foi criado ou não está recebendo o valor passado.

[]´s
Sanses


Tpoeta
   - 23 nov 2005

Desculpe amigo, mas vc poderia ser mais claro, não sei como fazer esse tal ´DataBind´, será que você pode me explicar...

Sobre os parametros, tudo está correto, fiz até um teste, tirei um autoincremento do campo código de minha tabela e coloquei o código na mão em minha inserções e tudo funcionou direitinho. Acredito que o erro está na comunição do Interbase com o autoincremento.

Farei um novo teste, usarei a mesma tabela, usando autoincremento numa aplicação Win32, do jeito que estou acostumado e verei as diferenças que darão.


Sanses
   - 24 nov 2005

Olá

1 - DataBind:
Clique em property builder > selecione columns > desmarque a caixa: Create columns automatically.
Em seguida, adicione as colunas da tabela manualmente do campo AVAILABLE COLUMNS para SELECT COLUMNS.
No campo data, coloque em DATA FORMATTING EXPRESSION a espressão: {0:d}
Compile novamente e veja se funciona.

2 - Quando estiver criando a sentença SQL use ? para parametros, mas depois configure no dataadapter @parametro. Não insira o campo de autonueração na inserção.

[]´s
Sanses