Mostrando postagens com marcador Bancos de Dados. Mostrar todas as postagens
Mostrando postagens com marcador Bancos de Dados. Mostrar todas as postagens

terça-feira, 16 de setembro de 2008

Criar um campo autoincremento no Interbase

CREATE GENERATOR "GEN_CLI";
SET TERM ^:
CREATE TRIGGER "NEXCLI" for "DADOS"
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
New.Codigo = GEN_ID(GEN_CLI,1);
END

Interbase em rede

Usando o IBX:

Para todos os exemplos abaixo usarei como o nome do servidor onde está instalado o INTERBASE "SERVER_IB" e o banco de dados estará instalado no path "C:\IB_DB\GUESTS.GDB" o caminho c:\ib_db\guests.gdb REFERE-SE A UNIDADE C: DO SERVIDOR E NÃO DAS ESTAÇÕES.
Arquivo Hosts.sam

Procure o arquivo HOSTS.SAM no diretório windows das máquinas clientes , este arquivo deverá ser configurado da seguinte maneira:
Caso o ip do servidor seja 192.198.25.4

então coloque em uma linha do arquivo hosts.sam

192.198.25.4 SERVIDOR

Agora abra o delphi, e no componente TIBDatabase na propriedade DatabaseName coloque a seguinte string de conexão:
SERVER_IB:C:\IB_DB\GUESTS.GDB
Informe na propriedade PARAMS do TIBDATABASE as seguintes strings:
user_name = SYSDBA
password=masterkey ( isto se você não mudou a senha do SYSDBA caso contrário coloque a nova senha.
atribua para FALSE a propriedade LOGIN PROMPT
Coloque um TIBTransaction e na propriedade DefaultTransaction do TIBDatabase atribua ao componente TIBTransaction.
clique no componente TIBTransaction e na propriedade DEFAULTDATABASE coloque o TIBDATABASE.
agora dê um clique duplo no componente TIBTransaction e sete o nível de transação para READ COMMITED e retire o parâmetro no wait ( para não acontecer o dead lock em caso de multiplas edições do registro )
Teste através da propriedade Connected do TIBDATABASE se está ok.

Usando o BDE

Abra o BDE ADMINISTRATOR
no menu OBJECT escolha NEW e escolha o drive INTRBASE. ( se não estiver presente instale novamente o BDE escolhendo uma instalação completa dos drives SQL LINKS )
Na propriedade SERVER NAME coloque SERVER_IB:C:\IB_DB\GUESTS.GDB
Abra o delphi coloque um TDatabase e escolha em ALIASNAME coloque o nome do alias que voce definiu no bde administrador em database name escolha um nome para o componente.
Os objetos ttable , tquery usarão o nome do TDatabase e não o alias name.


Usando o IB OBJECTS ( IBO )

Database=SERVER_IB:C:\IB_DB\GUESTS.GDB UserName=SYSDBA Password=masterkey
use o TIBODataBase para fazer a conexão.

Conectando a um servidor LINUX

A entrada no arquivo HOSTS.SAM é a mesma ex:

10.0.0.2 SERVER_LINUX #SERVIDOR LINUX

Apenas você terá que mudar o path do arquivo GDB. A string é case sensitive o Linux não usa letras de drives para conexão ex:

SERVER_LINUX:/var/ib_db/guests.gdb

Criar Banco de Dados no Interbase

CREATE DATABASE "c:\meus documentos\biblioteca.gdb"
USER "SYSDBA" PASSWORD "masterkey";

CONNECT "c:\meus documentos\biblioteca.gdb"
USER "SYSDBA" PASSWORD "masterkey";

CREATE DOMAIN DALUNO_ID INTEGER NOT NULL;
CREATE DOMAIN DLIVRO_ID INTEGER NOT NULL;
CREATE DOMAIN DEMPRESTIMO_ID INTEGER NOT NULL;
CREATE DOMAIN DITENS_ID INTEGER;

CREATE TABLE ALUNO
(ALUNO_ID DALUNO_ID,
NOME VARCHAR(20) NOT NULL,
ENDERECO VARCHAR(30) NOT NULL,
TELEFONE VARCHAR(15),
TURMA CHAR(3),
CONSTRAINT ALUNO_CHAVE_PRIM PRIMARY KEY (ALUNO_ID));

CREATE TABLE LIVRO
(LIVRO_ID DLIVRO_ID,
TITULO VARCHAR(20) NOT NULL,
ASSUNTO VARCHAR(10),
CONSTRAINT LIVRO_CHAVE_PRIM PRIMARY KEY (LIVRO_ID));

CREATE TABLE EMPRESTIMO
(EMPRESTIMO_ID DEMPRESTIMO_ID,
ALUNO_ID DALUNO_ID,
DATA_EMPRESTIMO DATE DEFAULT 'NOW' NOT NULL,
DATA_DEVOLUCAO DATE,
DEVOLVIDO CHAR(3) DEFAULT 'NAO',
CONSTRAINT EMPRESTIMO_CHAVE_PRIM PRIMARY KEY (EMPRESTIMO_ID),
CONSTRAINT EMPRESTIMO_CHAVE_EST FOREIGN KEY (ALUNO_ID) REFERENCES ALUNO);

CREATE TABLE ITENS
(LIVRO_ID DLIVRO_ID,
EMPRESTIMO_ID DEMPRESTIMO_ID,
ITENS_ID DITENS_ID,
CONSTRAINT ITENS_CHAVE_PRIM PRIMARY KEY (LIVRO_ID, EMPRESTIMO_ID));

EXIT;

terça-feira, 9 de setembro de 2008

Executar Pack em Tabelas Paradox

procedure ParadoxPack(Table : TTable);
var
TBDesc : CRTblDesc;
hDb: hDbiDb;
TablePath: array[0..dbiMaxPathLen] of char;
begin
FillChar(TBDesc,Sizeof(TBDesc),0);
with TBDesc do
begin
StrPCopy(szTblName,Table.TableName);
StrPCopy(szTblType,szParadox);
bPack := True;
end;
hDb := nil;
Check(DbiGetDirectory(Table.DBHandle, True, TablePath));
Table.Close;
Check(DbiOpenDatabase(nil,'STANDARD',dbiReadWrite,dbiOpenExcl,nil,0,nil,nil,hDb));
Check(DbiSetDirectory(hDb, TablePath));
Check(DBIDoRestructure(hDb,1,@TBDesc,nil,nil,nil,False));
Table.Open;
end;

quarta-feira, 3 de setembro de 2008

Zerar Generator no Interbase

SET GENERATOR NOMEDESUAGENERATOR TO 0;