BOTAO INSERIR - HELP

DOUGLASBRAGA 25/10/2011 00:10:16
#387644
Boa noite Pessoal...
ZEROCAL, estou anexando o meu projeto + banco de dados.
Apenas recaptulando:
- Estou usando Visual Basic 2008 + Firebird.
- Meu projeto roda e exibe em 3 textbox o codigo, o nome e o endereço que estao no banco de dados.
- Quando o projeto esta rodando, eu consigo alterar o conteudo dos textbox e ao clicar no botao, os dados sao alterados no banco de dados.
- O que eu qro é que o projeto rode, e que ao preencher os 3 textbox o projeto cadastre um novo [Ô]cliente[Ô], codigo, nome e endereço.
Obrigado pela atenção pessoal!
PROFESSOR 25/10/2011 01:18:51
#387648
As gravações via iDataAdapter não são muito aconselháveis, pois vão processar todos os registros, ao menos para validadar o Status (modified, inserted etc). Assim, demoram mais tempo e requerem a carga das estruturas (da.FillSchema) e a definição do método de Update. O uso dos iCommand é mais seguro, de fato.

Não ví o projeto, mas o ALTAIR148 passou basicamente o que devia. Só [Ô]comeu[Ô] um pedacinho.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
con = New FbConnection([Ô]Server=localhost;User=SYSDBA;Passwor d=masterkey;Database=C:    este\bd.gdb[Ô])
Dim command As New FbCommand([Ô]nsert into cliente (codigo, nome, endereco)values(@codigo, @nome, @endereco)[Ô], con)
command.Parameters.AddWithValue([Ô]@codigo[Ô], CInt(Texcodigo.Text))
command.Parameters.AddWithValue([Ô]@nome[Ô], Texnome.Text)
command.Parameters.AddWithValue([Ô]@endereco[Ô], Texendereco.Text)

con.Open

command.ExecuteNonQuery()
command.Dispose()

con.Close

End Sub


Em todos os casos, verifique também se a tabela de fato contém um PrimaryKey exclusivo. Sempre que eu vejo uma instrução SQL onde o código que identifica o registro é [Ô]lançado manualmente[Ô], passa um calafrio pela espinha, pois nesses casos, a garantia da exclusividade deixa de ser do mecanismo de dados, e, como se dizia há alguns anos atrás, passa á ser [Ô]la garantia soy yo[Ô]...

A melhor opção para as PrimaryKey, independente do banco de dados, são campos de auto-geração, pois garantem que um lapso do usuário ou do aplicativo não vão gerar um valor inaceitável para uma PrimaryKey, como [Ô]0[Ô] ou [Ô]-[Ô] (o sinal de menos também é numerico, afinal de contas...).

MAS, contudo, porém, todavia, como se sabe, o Firebird não sabe o que é IDENTITY, você diz isso á ele e ele retruca: [Ô]é de comer ou de beber?[Ô]. E ele não é vilão sozinho: O Oracle, até há alguns anos atrás, não fazia questão disso e só começou á apresentar scripts de modelo para gerar seus [Ô]proto-autonumeradores[Ô] (são a mesma coisa que estaremos fazendo mais adiante) há poucos anos, após a .Net virar moda.

Assim, sempre há uma saída. Se for de seu interesse, é claro.

Você sempre poderá [Ô]simular[Ô] um IDENTITY (ou AUTOINCREASEFIELD, ô nome pomposo...) como nos passos do exemplo abaixo:

A - Criação da tabela:

CREATE TABLE TabelaExemplo (
ID INTEGER NOT NULL,
NOME VARCHAR(50)
);
ALTER TABLE TabelaExemplo ADD CONSTRAINT pk_tbExemplo PRIMARY KEY (ID);



B - Criar a entidade [Ô]auto-numerador[Ô] (o primeiro valor da seqüencia será 1):

CREATE GENERATOR gr_TabelaExemplo;
SET GENERATOR gr_TabelaExemplo TO 1;


C - Vincular o [Ô]auto-numerador[Ô] á tabela por meio de gatilho (o incremento da seqüência será de 1 em 1):

CREATE TRIGGER tbExemploAutoId_BI0 FOR tabelaExeplo
ACTIVE BEFORE INSERT POSITION 0
AS
begin
IF(NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(gr_TabelaExemplo, 1);
end


Depois desses três passos, não é mais necessário (e aliás, é incorreto), informar o campo ID nas inclusões da tabela tabelaExemplo. Uma instrução típica passa á ser: [Ô]INSERT INTO tabelaExemplo (NOME) VALUES (@NOME)[Ô]

E se sua base precisar comportar alguns milhões de registros, não se intimide: Troque o INTEGER (inteiro de 32 bits) por BIGINT (inteiro de 64 bits). O gatilho vai continuar processando o que deve, como deve, na hora que deve.
DOUGLASBRAGA 28/10/2011 15:28:04
#388038
Olá pessoal, estive fora por alguns dias mas já estou de volta!
Obrigado pela atenção de todos mas ainda estou com o mesmo problema, continuo sem conseguir cadastrar no banco de dados.
Sou iniciante, e não consigo fazer funcionar!
Se alguém tiver um exemplo pratico, porem fácil de apenas um cadastro entre Visual Basic 2008 e Firebird eu agradeceria!!!
GUIMORAES 28/10/2011 18:07:56
#388046
Resposta escolhida
Olá Amigo
Fiz um exemplo correndo aki, mas está ai.
Dentro da pasta tem o driver para comunicação com o firebird.

Abraços
DOUGLASBRAGA 30/10/2011 10:29:52
#388130
Obrigado GUIMORAES123 com sua ajuda aprendi a cadastrar!
Página 2 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas