Fórum Exemplo básico com IBX! #40980

16/12/2003

0

Para aqueles iniciantes q querem um exemplo como configurar os componentes IBX para acessar uma tabela editar, etc... segue um pequeno e básico exemplo mostrando ´passo-a-passo´ ::


crie um banco de dados com uma tabela com a seguinte estrutura:


create table teste1 (
  codigo      integer not null,
  nome       varchar(30) not null,
  endereco  varchar(60),
  telefone    varchar(15),
  primary key pk_teste1 (codigo)
);

create index ix_teste1_nome on teste1 (nome);




crie um novo projeto no Delphi e coloque no form::

1 panel (Align=alTop, Caption=´´)
1 IBDatabase (DefaultTransaction = IBTransaction1, LoginPrompt = False)
1 IBTransaction (DefaultDatabase=IBDatabase1)
1 IBDataSet (Database=IBDatabase1, Transaction = IBTransaction1)
1 DataSource (DataSet = IBDataSet1)
1 dbGrid (Align=alClient, DataSource=DataSource1)
1 dbNavigator (no Panel -- DataSource = DataSource1)


dê um duplo-clique no IBDAtabase e configure::

database = caminho do banco criado anteriormente

clique na opção REMOTE e configure tb:

server = localhost
protocol = tcp
username = sysdba (ou outro usuário)
password = masterkey (a senha do seu usuário)
character set = o character set q vc criou o banco

clique OK

configure ainda no seu IBDatabase a propriedade AllowStreemedConnected = FALSE


agora, dê um duplo-clique no IBTransaction e selecione a opção READ COMMITED, clique OK

vamos configurar então o IBDataSet

na propriedade SelectSQL coloque seu select, ex::

SELECT * FROM TESTE1
WHERE NOME STARTING WITH :par1

agora, clique com o botão direito do mouse no IBDataSet1 e selecione no menu ´Dataset Editor...´

no editor do IBDataSet, na lista a esquerda (key fields) selecione apenas o campo CODIGO, na lista da direita, selecione todos os campos.

clique no botão GENERATE SQL -- nesse momento, observe os SQLs gerados, eles são um bom exemplo de como devem ser! E vc pode notar (e controlar) tudo q vai ocorrer em cada operação.

Clique OK para fechar o assistente.

Agora, dê um duplo-clique no IBDataSet e adicione o campos persistentes (botão direito e selecione o menu ´Add all fields)

bom, coloque agora no PANEL1 um Botão e um Edit.

limpe a propriedade Text do Edit e...
...no botão coloque o caption = ´pesquisar´ e o código no OnClick::

  IBDataSet1.Close;
  IBDataSet1.Params[0].AsString := Edit1.Text;
  IBDataSet1.Open;


e no evento onCreate do seu Form coloque::

try
  IBDatabase1.Connected := True;
except
  ShowMessage(´não foi possível realizar a conexão com o BD´);
end;


e no OnClose ou OnDestroy do form coloque::

try
  if IBTransaction1.InTransaction then
    IBTransaction1.Commit;
  IBDatabase1.Connected := False;
except
  ShowMessage(´erro de comunicação com o BD´);
end;



coloque mais 2 botões no PANEL1 com os captions COMMIT e ROLLBACK, e coloque os códigos no OnClick (respectivamente)::

IBDataSet1.Transaction.CommitRetaining;

e

IBDataSet1.Transaction.RollbackRetaining;


PRONTO!!!

Execute o programa, clique no botão Pesquisar (não vai haver nada) inclua uns registros... clique no botão COMMIT, e etc... vai usando ele (incluir, editar, excluir, etc... etc...)!



Bom, é isso! Espero q ajude a todos os iniciantes. 8)


T+


Afarias

Afarias

Responder

Posts

06/01/2004

Sremulador

[b:7ab7d53b6b]Sabemos que você Afarias e muito entendido em IB/FB, se puder me responder umas perguntinhas por favor.

:?: Pra que serve o AllowStreemedConnected;
:?: Como tratar o dead lock.
:?: O fireBird 1.5 RC8 faz o controle do dead lock.
:?: O Qual seria a melhor configuração para o Fbconfig.

Obrigado.
[/b:7ab7d53b6b]


Responder

Gostei + 0

07/01/2004

Afarias

| Pra que serve o AllowStreemedConnected

Vc pode colocar esta propriedade para FALSE (recomendo) para q quando vc compilar seu executável e a propriedade Connected estiver TRUE (por esquecimento por exemplo) -- o IBDatabase não tente conectar-se automaticamente com o banco definido em tempo de projeto quando a aplicação for executada.

Evita muitos problemas de erros quando da distribuição da aplicação.


| Como tratar o dead lock.

1º -- Cuidando bem das transações e mantendo-as curtas.

No mais, com Try/Except


| O fireBird 1.5 RC8 faz o controle do dead lock.

Não entendi... O FB 1.5 permite sim o bloqueio explícito de registros (SELECET FOR UPDATE / WITH LOCK) -- é isso?? -- vc pode dar uma olhada sobre isso nas notas de versão do FB 1.5 -- mas muito cuidado ao usar esta funcionalidade.


| O Qual seria a melhor configuração para o Fbconfig.

??firebird.conf?? A padrão! :D ´cada caso é um caso´ -- não há uma configuração definitiva.


T+


Responder

Gostei + 0

19/01/2004

Marbravo

agora, clique com o botão direito do mouse no IBDataSet1 e selecione no menu ´Dataset Editor...´


Eu uso delphi5 e não achei esse item no menu.

É possivel fazer esse exemplo no delphi5?


Responder

Gostei + 0

21/01/2004

Afarias

|Eu uso delphi5 e não achei esse item no menu.
|É possivel fazer esse exemplo no delphi5?

SIM é possível... (aliais, é o Delphi q eu uso)

Atualize seu IBX::

http://codecentral.borland.com/codecentral/ccweb.exe/author?authorid=102

a última atualização para D5 é a 5.04 ::

http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18961


T+


Responder

Gostei + 0

28/01/2004

Marshall Mathers

Esse exemplo funciona com FB 1.5 ??? Usando o IBX? Se sim... me ajude por favor, olhe o meu problema:
[url]http://delphiforum.icft.com.br/forum/viewtopic.php?t=34152[/url]


Responder

Gostei + 0

02/02/2004

Poletto

Para aqueles iniciantes q querem um exemplo como configurar os componentes IBX para acessar uma tabela editar, etc... segue um pequeno e básico exemplo mostrando ´passo-a-passo´ ::


Complementando o q você escreveu. É possível, se for, como faço, a partir do Delphi, através da linha de comando, CRIAR UM BANCO DE DADOS DO ZERO.
Exemplo:
Servidor : severprincipal
Protocolo: TCP
UserName: SYSDBA
Password: masterkey

Quero criar o Banco de Dados chamado BASETOTAL.GDB, porém preciso verificar se ele já não foi criado antes.

Tipo: IF NOT EXISTSDB(´serverprincipal:BASETOTAL.GDB´) THEN
CREATE DATABASE serverprincipal:BASETOTAL.GDB

E continuando...
IF NOT EXISTSTB(´serverprincipal:BASETOTAL.GDB.NOTAS´) THEN
CREATE TABLE serverprincipal.BASETOTAL.GDB.NOTAS (
.............) etc.. etc...

Os comandos acima não existem ainda...
Mas solicito que me ajude nesse sentido. Acredito que outros também se beneficiarão com isso.

Obrigado.


Responder

Gostei + 0

02/02/2004

Afarias

|como faço, a partir do Delphi, através da linha de comando, CRIAR UM
|BANCO DE DADOS DO ZERO.

vc pode rodar um script com CREATE DATABASE usando o IBScript por exempo, ou ainda usar um IBDatabase como segue::

with IBDatabase1 do
begin
  SQLDialect := 3;
  DatabaseName := ´severprincipal:caminho\BASETOTAL.GDB´;
  Params.Clear;
  Params.Add(´USER ´´SYSDBA´´´);
  Params.Add(´PASSWORD ´´masterkey´´´);
  Params.Add(´PAGE_SIZE 4096´);
  Params.Add(´DEFAULT CHARACTER SET ISO8859_1´);
  try
    CreateDatabase;
  except
    {tratamento de erro}
  end;
end;



|Tipo: IF NOT EXISTSDB(´serverprincipal:BASETOTAL.GDB´) THEN
|CREATE DATABASE serverprincipal:BASETOTAL.GDB

isso não existe. vc pode simplesmente tentar conectar-se com o banco de dados e capturar a exceção (que será gerada caso o banco não exista)


|IF NOT EXISTSTB(´serverprincipal:BASETOTAL.GDB.NOTAS´) THEN
|CREATE TABLE serverprincipal.BASETOTAL.GDB.NOTAS (

Para criar tabelas e outros objetos do banco de dados, utilize um componente de script, como o IBScript


T+


Responder

Gostei + 0

02/02/2004

Poletto

Brigadão....
Valeu Muito....


Responder

Gostei + 0

07/04/2004

Maicon Loffi

Amigo Afarias!

Pra que serve o AllowStreemedConnected

Vc pode colocar esta propriedade para FALSE (recomendo) para q quando vc compilar seu executável e a propriedade Connected estiver TRUE (por esquecimento por exemplo) -- o IBDatabase não tente conectar-se automaticamente com o banco definido em tempo de projeto quando a aplicação for executada.

Coloquei esta propriedade pra false, agora quando executo o sistema, as tabelas que estão no DataModule, e teriam que ficar ativas (True), elas não ficam, tenho que dar uma Active (True) para cada tabela, ou seja, elas ficam fechadas ao entrar no sistema.


Responder

Gostei + 0

07/04/2004

Dart

Desculpe a minha ignorancia mas não consegui atualixar o comp ibx Da um erro dclib50. alguma coisa o que pode ser. uso Delphi 5

Como instalar?

Valeu


Responder

Gostei + 0

08/04/2004

Dart

Opa

Não Consigo Atualizar o meu IBX No Delphi 5 da um erro.
e apaga os componentes IBX anteriores.


Como Resolvaer

Valeu

Dart


Responder

Gostei + 0

14/04/2004

Mahdak

tudo bem isso tudo eu ja assimilei, mas tem uma coisinha bem simples que nao sei como fazer...
Criar um banco em tempo de execução apertando no botao do meu programa, se alguem pudesse me ajudar ficarei grato!!!

[]´s :shock:


Responder

Gostei + 0

29/04/2004

Afarias

|Pra que serve o AllowStreemedConnected

Para q o valor da propriedade Connected (ajustada em Design Time no Inspector) seja aplicada quando a aplicação for executada.

Em geral, é melhor deixar o AllowStreemedConnected como FALSE e, conectar no banco (e, de tabela abrir as tabelas) via código, ex:

IBDatabase1.Connected := True;
Query1.Open;

etc...


|Não Consigo Atualizar o meu IBX No Delphi 5 da um erro.

Para atualizar o IBX é necessário ter a atualização (Update Pack 1) do Delphi 5 aplicada.


|Criar um banco em tempo de execução apertando no botao do meu
|programa, se alguem pudesse me ajudar ficarei grato!!!

Vc pode usar o método CreateDatabase do IBDatabase::

with IBDatabase1 do
begin
DatabaseName := ´caminho_do_database´;
Params.Add(´USER ´SYSDBA´);
Params.Add(´PASS ´masterkey´);
Params.Add(´PAGE_SIZE 4096´);
Params.Add(´DEFAULT CHARACTER SET ISO8859_1´);
CreateDatabase;
end;



T+


Responder

Gostei + 0

19/05/2004

Dart

ola

para que serve character set ?


Responder

Gostei + 0

24/05/2004

Eliene

|Não Consigo Atualizar o meu IBX No Delphi 5 da um erro.

Para atualizar o IBX é necessário ter a atualização (Update Pack 1) do Delphi 5 aplicada.

:?: Não sei onde posso encontrar este (Update Pack 1). Seria o SP1 citado no download da atualização ? Onde posso encontrá-lo ? Baixei a atualização e rodei a atualização. Os componentes existentes na palheta do Interbase sumiram. Por Favor me ajude...


Responder

Gostei + 0

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

Aceitar