Você está na página 1de 14

Captulo 1: O BDE Administrador e os SQL Links

Interface Explorer
Quando o Delphi precisa acessar um banco de dados, ele o faz atravs dos servios do Borland Database Engine (BDE). O BDE funciona da mesma maneira para ler dados armazenados localmente em arquivos DB e DBF, bem como para os mais sofisticados sistemas client/server. Muitos anos atrs, a Borland percebeu um problema com o acesso a banco de dados em seus softwares. Eles produziram vrios produtos que eram usados para acesso a bancos de dados, mas cada um tinha um mtodo diferente para conectar-se e utilizar os dados. A Borland percebeu que uma abordagem de conectividade de banco de dados unificada forneceria muitas vantagens. Ento decidiram criar um novo software que deveria abstrair toda a funcionalidade de um banco de dados dentro de um engine. H vrios anos atrs, a Borland vendia um Paradox engine para programadores. Era composto pela parte de acesso do DBMS Paradox e foi desenvolvido para ser usado em programas que precisavam ler e gravar informaes em tabelas Paradox (.DB). O BDE substituiu este engine, mas adicionou funcionalidade para conexo com outros tipos de bancos de dados. O BDE tambm est disponvel separadamente do Delphi, caso voc precise de uma performance slida em um ambiente de desenvolvimento que no seja da Borland. Ter todas as aes mais comuns de banco de dados dentro de um pedao de software produz muitos efeitos positivos. Um nico conjunto de drivers permite a melhoria de um driver em particular sem ter que reivindicar a roda cada vez que um novo pacote tem acesso a um banco de dados. Isto significada que o acesso a banco de dados pode ser atualizado sem ter que atualizar um pacote de software inteiro. Se voc instalar uma nova verso do BDE em um sistema com uma verso antiga do Paradox pode imediatamente beneficiar-se dos novos drivers. O conceito de driver unificado ambm salva voc do armazenamento permanente que desaparece quando voc tem muito cdigo redundante. Um sistema com Paradox, Delphi e BDE requer muito menos espao em disco porque o Paradox e o Delphi no necessitam ter seus prprios engines de acesso a banco de dados. Hoje em dia onde cada nova gerao de programas requerem mais espao em disco rgido, cada bit economizado ajuda. Por ltimo, e contudo mais importante, usar um mtodo de acesso a banco de dados comum garante que o cdigo para acessar um tipo particular de banco de dados seja escrito apenas uma vez. Este captulo se concentrar em lhe dar uma introduo aos recursos e capacidades do DBE. Se voc necessita maiores informaes sobre acesso a banco de dados no Delphi, consulte o prximo captulo.

O Utilitrio BDE Administrador

Quando o Delphi se instala, ele cria um cone ou atalho para o utilitrio Database Engine Administrador, ou BDEAdmin.EXE. O Delphi 3 coloca todos os executveis e arquivos de configurao no diretrio Program Files\Borland\Common Files\BDE. Nas verses anteriores do Delphi estes arquivos eram colocados em um diretrio chamado IDAPI (Delphi 1.0), nomeado depois de utilitrio de configurao antigo. IDAPI significa Independent Database Application Programmer Interface, e d este nome para muitos dos arquivos e diretrios no sistema. O BDEAdmin atua como sua interface para o BDE. O utilitrio permite que voc mude muitos aspectos de como o BDE trabalha. O BDE armazena suas informaes de configuraes no Registry do Windows. Depois que voc mudar suas definies no utilitrio BDE Administrator, voc dever gravar suas definies selecionando Object | Apply ou dando um clique sobre o boto Apply.

Pgina Database
Na pgina Database do BDE Administrator esto os aliases para os bancos de dados disponveis. Os bancos do dados so exibidos em uma rvore hierrquica parecida com o Windows Explorer. Para visualizar seus aliases de bancos de dados, simplesmente d um clique sobre o smbolo de mais prximo ao banco de dados. Uma vez exibido, a definio de cada alias pode ser facilmente visualizada ou modificada selecionando o alias para exibi-lo no painel a direita do BDE Administrator.

Aliases de Bancos de Dados


Os aliases de banco da dados do a voc a habilidade para mudar a maneira que trabalha com seus dados em uma maneira muito poderosa. No mundo das aplicaes de negcios, os bancos de dados so realocados freqentemente quando as organizaes geram novos arquivos e movem suas operaes de bancos de dados para servidores de bancos de dados dedicados. Alguns ambientes de desenvolvimento necessitam que voc recompile sua aplicao toda vez que um banco de dados mude de local, ou para construir uma camada adicional de abstrao dentro do seu cdigo. O BDE automaticamente d a voc esta habilidade atravs do uso dos aliases. Antes de vermos em detalhes como os aliases do BDE trabalham, veremos um pouco alm a natureza de dados e tabelas de bancos de dados.

Banco de Dados vs. Tabelas


Quando Wayne Radcliff projeto a estrutura de arquivo do dBASE nos tempos dos PCsCompatveis, ele usou a extenso DBF (Database File) para descrever isso. Este um termo errado porque banco de dados significa uma coisa especfica que no se aplica a arquivos CBF. Cada arquivo DBF possui uma tabela, uma coleo ordenada de dados. Uma tabela divide informaes entre colunas conhecidas como campos e linhas (Fields and Rows), que relacionados formam um registro. Esse termo Banco de Dados geralmente referese a coleo de tabelas que se relacionam a outras no mesmo caminho. Exceto para aplicaes simples, o banco de dados consiste em mltiplas tabelas relacionadas e cada tabela contm vrios registros e campos.

Creating Pseudo Databases

Agora que voc entendeu que um banco de dados composto por um conjunto de tabelas relacionadas, ns precisamos observar como implementar esse conjunto. Servidores de banco de dados como Interbase e Oracle tm uma estrutura de banco de dados que pode ser composta por mltiplas tabelas. Desenvolvedores de banco de dados muitas vezes precisam utilizar esse tipo de estrutura, mas em ambientes sem servidores geralmente falta um mecanismo para linkar mltiplas tabelas. Voc pode criar seu prprio formato de banco de dados para conter todas as suas tabelas, mas depois voc perder a compatibilidade com outros programas que utilizam banco de dados mais antigos. O BDE possui uma soluo avanada para esse problema. Colocado um grupo de tabelas relacionadas em algum diretrio do DOS, voc pode associar essas tabelas juntas usando o BDE. Basta dar um alias, ou nome ao banco de dados, para o grupo de arquivos em um diretrio particular, o BDE criou um conjunto de tabelas logicamente criadas. O BDE chama um conjunto como este de Pseudo Database. Um PseudoDatabase no possui caractersticas avanadas como encontramos em um Database Server, como preservar integridade referencial. De qualquer modo ele permite a voc utilizar o nome do banco de dados como ponteiro para o local de seus dados. Pseudo-Databases podem ser criados na pgina Database no BDE Administrator: Para criar um novo alias, comece selecionando Object | New no menu principal. Voc ser questionado a selecionar um tipo de driver na caixa de dilogo New Database Alias. O driver Standard fornece acesso s tabelas DB e DBF. D um clique sobre o Ok para retornar pagina Database. Agora, voc precisar entrar com um nome para o alias no painel esquerdo. Voc precisa tambm definir a localizao das tabelas no campo PATH. Certifique-se de gravar a configurao, selecionando Apply quando voc estiver satisfeito com as definies. Agora quando voc precisar pegar dados em uma tabela, voc pode usar o alias ao invs do nome diretrio. At agora, parece que ns simplesmente mudamos um nome - o diretrio, para outro o alias. Isto nos salva de problemas quando chegar a hora de mudarmos a localizao do banco de dados. Ns podemos coloc-lo em um servidor de arquivos de rede, movendo-o para um disco rgido maior, ou at mesmo fazer a mudana para um sistema de banco de dados cliente-servidor. Voc no ter que mudar ou recompilar seus programas aps as tabelas terem sido removidas. Voc precisar criar um novo ponteiro para o alias no BDE. A meta dos aliases do BDE criar um ponteiro para um ponteiro. Qualquer rotina de acesso a banco de dados do Delphi far referncia ao alias de banco de dados, o qual faz referncia s tabelas. Agora, mudando o alias, voc tem uma maneira rpida de achar seus dados quando eles forem movidos de um lugar para outro. Voc dever, sempre que criar uma nova tabela de banco de dados ou acessar uma antiga, tentar referenciar-se a ela pelo alias ao invs do path. O Database Desktop, por exemplo, permite que voc selecione alias como letras de drivers na caixa de dilogo

Save as. Ento quando voc estiver pronto para gravar um novo banco de dados, voc pode selecionar letras de drivers para for-lo a ir para um diretrio em particular ou usar o alias, ao invs disto. Note que conforme voc muda o alias no menu drop-down, o diretrio tambm muda. Voc pode especificar um alias ao invs de um diretrio em qualquer lugar do Delphi quando referenciar-se a uma tabela.

Pgina Configuration
A pgina Configuration do BDE Administrator exibe e permite que voc configure os drivers instalados usados pelo BDE para gerenciar tabelas. Estes drivers so divididos em dois tipos: drivers Native e OBDC. As definies para cada driver aparecero na pgina Definition localizada no painel a direita quando o driver estiver selecionado. Voc pode modificar as definies de um driver simplesmente selecionando o driver e alterando a definio desejada na pgina Definitions. Contudo, voc s pode modificar definies que no tenham rtulos em negrito. Se voc precisar adicionar um novo driver ODBC, selecione ODBC na pgina Configurations e ento selecione Object | New no menu. O outro item exibido na pgina Configuration o objeto System. Dentro deste item, ns podemos configurar as definies de sistema INIT e Format. As definies INIT de sistema so usados pelo BDE para iniciar uma aplicao e so armazenados no Registry do Windows. As definies Formats de sistema so usadas para definir parmetros de Data (Date), Hora (Time) e Nmero (Number). Os parmetros Date que podem ser definidos no BDE Administrator determinam como valores string so convertidos para valores de data. Por exemplo, voc pode decidir quando as datas so armazenadas com ano de quatro dgitos ou dois dgitos, e quando ou no itens de dia e ms so armazenados com um zero extra para valores de um nico dgito. Os parmetros Time que podem ser definidos determinam como valores string sero convertidos para valores hora. Por exemplo, voc pode decidir se eles so armazenados em formato de doze ou vinte e quatro horas e quando so armazenados segundos ou milisegundos. Os parmetros Number que podem ser definidos determinam como valores string so convertidos para valores numricos. Por exemplo, voc pode decidir qual separador Decimal ou Milhar ser utilizado, e com quantas casas decimais sero armazenadas.

Distribuindo o BDE
Quando cria a maioria dos programas, o Delphi ir gerar um executvel stand-alone.

Contudo, a natureza do BDE requer que ele trabalhe independentemente de todos os outros pacotes. O ncleo do BDE formado por um conjunto de DLLs, as quais devem ser distribudas com qualquer programa que acesse as funes do BDE. A Borland permite que voc redistribua o BDE gratuitamente sem custos de licenas.

SQL Links
No incio do captulo, vimos os Native Drivers na pgina Configuration do BDE Administrator. Estes Native Drivers so os SQL Links. Eles so simplesmente arquivos .dll que auxiliam o BDE na conexo com os bancos de dados associados. Voc poder aprender um pouco mais sobre cada um destes SQL Links atravs do sistema de Help do BDE Administrator. Selecione Help | Content no item de menu e BDE configuration topics. Agora selecione BDE configuration settings, depois Driver settings. Vejamos o tpico de help para o InterBase SQL Link. Cada opo descreve o tpico relacionado. Muito embora estes tpicos possam ser extremamente teis no entendimento do link entre o BDE e o banco de dados, utilizar o SQL Monitor pode oferecer informaes mais substanciais para aplicaes cliente/servidor, como veremos no prximo captulo.

Captulo 2: Utilizando o SQL Monitor


Visualizando um Log
O SQL Monitor no Delphi utilizado para rastrear e monitorar o tempo de chamada entre aplicaes cliente e servidores de banco de dados SQL remotos. Ele permite ver chamadas de instrues chave a um servidor remoto atravs de SQL Links ou ODBC. Estas instrues chave podem incluir SELECT, UPDATE, DELETE, etc. Para abrir o SQL Monitor selecione Database | SQL Monitor no menu principal do Delphi. Abriremos a aplicao Order Entry Project e a executaremos para ver o SQL Monitor em ao:

O SQL Monitor nos permite ver a performance de instrues SQL em uma aplicao. Ele exibir as instrues SQL geradas pelo BDE e poderemos utilizar o monitor para ver se as bibliotecas do cliente do banco de dados esto funcionando corretamente. A caixa de dilogo SQL Monitor consiste em duas janelas. A janela superior exibe as

instrues SQL na ordem em que so geradas. Prximo a cada instruo h um nmero de referncia e a estampa da data e hora tambm gerada para cada instruo. Esta informao de tempo til na otimizao da performance de suas instrues e transaes. A janela inferior no SQL Monitor exibe a instruo SQL inteira selecionada na janela superior. As duas janelas podem ser redimensionadas utilizandose a barra divisora localizada entre elas. Existe tambm uma barra de ferramentas nesta caixa de dilogo: O primeiro boto na barra de ferramentas o boto Save Log. Com este comando podemos salvar o Log SQL gerado como um arquivo texto (.TXT) para ser utilizado e referenciado posteriormente. O segundo boto na barra de ferramentas o boto Copy. Este boto copia a instruo SQL selecionada para o clipboard do Windows. O prximo boto utilizado para limpar a janela do SQL Monitor. Prximo ao boto Clear est o boto Pause Trace. Este boto til se voc quiser interromper a gerao de instrues SQL para talvez ver uma instruo especfica. O prximo boto o boto Always on Top. Este boto aloja o SQL Monitor na frente de qualquer outra janela aberta. O ltimo boto na barra de ferramentas o boto Trace Options. Este boto abre a caixa de dilogo Trace Options. O SQL Monitor lhe d a flexibilidade de escolher qualquer combinao de opes que voc queira monitorar. A seo seguinte discutir as opes de Trace Options.

Configurando Opes de Trace Options


Para selecionar as opes de Trace que voc queira monitorar, selecione o comando de menu Options | Trace Options ou d um clique no boto Trace Options. Existem nove categorias que voc pode monitorar com o SQL Monitor: Prepared Query Statements - Instrues a serem enviadas ao servidor Executed Query Statements - Instrues a serem executadas pelo servidor Statement Operations - Qualquer operao efetuada (FETCH, EXECUTE, etc.) Connect/Disconnect - Qualquer operao associada com conexo/ desconexo com um banco de dados. Transactions - Operaes de transao (BEGIN, COMMIT, ROLLBACK) Blob I/O - Operaes em tipos de dados Blob (GET BLOB HANDLE, STORE BLOB, etc.) Miscellaneous - Operaes diversas Vendor Errors - Mensagens de erro retornadas pelo servidor de banco de dados Vendor Calls - Chamadas de funes da API ao servidor

Utilizando diferentes combinaes destas opes, o SQL Monitor pode se tornar uma ferramente importante. Por exemplo, vamos remover todas as opes na caixa de dilogo Trace Options exceto Executes Query Statements e Transactions. Agora vamos executar o form Customer e visualizar as alteraes no SQL Monitor.

Captulo 3: Usando Sessions


Componentes TSession
O sistema para conexo de bancos de dados envolve cinco tipos de componentes: Session, Database, Dataset, DataSource e controles Dataaware. Estes compenentes relacionam-se uns com ou outros como exibido: Tsession

Tdatabase

Table Query Stored Procedure

Data Flow

Datasource

Data Flow

DBGrid DBNavigator DBText DBEdit DBMemo DBImage DBListBox DBComboBox DBCheckBox DBRadioGroup DBLookupListBox DBLookupComboBox DBCtrlGrid

Antes de comearmos a falar em detalhes sobre o componente TSession, discutiremos alguns dos segredos do uso de tabelas Paradox em um ambiente rede. Existe um driver Paradox instalado com a configurao do BDE. Este driver contm uma opo chamada NetDir que especifica a localizao do arquivo de controle de rede, PDOXUSR.NET. Este arquivo necessrio para permitir que vrias aplicaes e usurios compartilhem dados das mesmas tabelas Paradox em um drive de rede. Todas as aplicaes que acessam estas tabelas devem especificar o mesmo diretrio para este arquivo de controle de rede. A configurao para NetDir usada por todas as aplicaes Delphi que acessam tabelas DB. A verdade que esta configurao que existe bem limitada, especialmente na combinao de mltiplas aplicaes, banco de dados, e seus ambientes. Isto mais um fator para desenvolvedores que necessitam instalar aplicaes em mquinas que j possuem esta configurao definida. O componente TSession alivia o problema da configurao deste valor em vrias mquinas. Ele contm vrias propriedades para controlar o comportamento da sua

aplicao. A propriedade que ir ajudar-nos nesta situao NetFileDir (discutida em detalhes mais tarde neste captulo). Ele contm uma string que especifica o diretrio para o arquivo PDOXUSRS.NET e toma precedncia sobre a configurao BDE. Outra vantagem no uso deste componente que ele encapsula as configuraes na aplicao ao invs de for-las a basear-se em alguma coisa externa. A principal funo do componente TSession gerenciar grupos de conexo de banco de dados com uma aplicao. O componente TSession isola um conjunto de operaes de acesso a banco de dados, tais como conexes de banco de dados, sem a necessidade de iniciar outra instncia da aplicao. Embora mais de um componente TSession possa ser usado em uma aplicao de banco de dados, normalmente um suficiente. Na Figura 3.1, o componente TSession um componente necessrio para a conexo a um banco de dados. Contudo, voc pode provavelmente escrever vrias aplicaes de banco de dados sem nunca usar um componente TSession. Na verdade, voc estava usando o componente TSession e no sabia disso. Sempre que a unit DB.PAS for usada em uma aplicao, o Delphi automaticamente cria um componente padro TSession acessvel globalmente e chamado Session. Para criar um exemplo que exibir como o componente TSession est sendo criado automaticamente pelo Delphi, crie uma nova aplicao e coloque apenas um componente TDatabase no form. No manipulador de evento OnCreate do form, coloque o seguinte cdigo: Session.NetFileDir Techniques\; := C:\Borland Courseware\Delphi 3 CS

Agora coloque um breakpoint nesta linha e execute a aplicao. Lembre-se que ns no colocamos um componente TSession manualmente no form. Quando a aplicao parar, execute a linha de cdigo e ento acesse a caixa de dilogo Watch List usando o comando de menu View | Watches. Adicione o seguinte watch ao Watch List: Session.NetFileDir

Uma vez que o Delphi criou um componente TSession chamado Session, qualquer propriedade ou evento associado com este componente TSession padro podem ser implementados em tempo de execuo. Em nosso exemplo, definimos o NetFile Dir do componente TSession padro como C:\Borland Courseware\Delphi 3 CS Techniques\. Na prxima sesso, discutiremos o uso das propriedades NetFileDir e PrivateDir.

Propriedades do TSession
Nesta sesso, discutiremos certas propriedades que fazem do componente TSession um link vital na conexo de banco de dados. As propriedades que veremos so as seguintes: PrivateDir, NetFileDir, KeepConnections, SQLHourGlass, ConfigMode e TraceFlags.

PrivateDir
A propriedade PrivateDir define o diretrio no qual sero armazenadas os arquivos de tabelas temporrias geradas pelo BDE. Ordinariamente, este valor s definido em tempo de execuo para que o disco rgido local do usurio possa ser usado para armazenar os arquivos temporrios. Contudo, ele uma propriedade Published e pode ser definida em tempo de desenvolvimento. Uma razo importante para usar a propriedade PrivateDir para aumentar a performance da aplicao. Definindo PrivateDir para armazenar os arquivos de tabelas temporrias localmente pode reduzir o trfego de rede, com isso aumentando substancialmente a performance da aplicao. Ela tambm evita que tabelas temporrias de vrios usurios interfiram em tabelas de outros. Se nenhum valor for especificado para PrivateDir, o BDE automaticamente armazena os arquivos temporrios no diretrio atual do momento em que o BDE for iniciado.

NetFileDir
NetFileDir define o diretrio no qual o arquivo de controle de rede do BDE, PDOXUSRS.NET, estar contido. Como PrivateDir, voc pode definir NetFileDir em tempo de desenvolvimento. Voc tambm pode definir ou mudar NetFileDir no cdigo em tempo de execuo.s cdigo a seguir define o NetFileDir do session padro para o diretrio no qual sua aplicao est sendo executada. Session.NetFileDir := ExtractFilePath(ParamStr(0)); Uma nota importante que NetFileDir s pode ser mudada quando todos os arquivos Paradox na aplicao estiverem fechados. Tambm, se NetFileDir for mudada em tempo de execuo, tenha certeza que ela aponte para um diretrio que seja compartilhado pelos usurios da rede. Outra nota que as propriedades NetFileDir e PrivateDir no podem apontar para o mesmo diretrio.

KeepConnections
A propriedade KeepConnections uma propriedade do tipo Boolean que realiza uma tarefa interessante. KeepConnections especificam quando ou no um componente TDatabase temporrio, criado no contexto de uma sesso, mantm uma conexo de servidor de banco de dados mesmo se no houverem datasets abertos associados com o componente database.

Isto simplesmente significa que se um componente TDatabase for criado em tempo de execuo, a propriedade KeepConnections dever especificar quando o banco de dados permanece ativo, se no houverem datasets conectados ao TDatabase. A configurao padro para a propriedade KeepConnections do TSession True. Se KeepConnections for definido como False e todos os datasets associados com um determinado database estiverem fechados, o componente TDatabase ir derrubar a conexo e liberar os recursos de sistema alocados para ela. Se isto ocorrer, o componente TDatabase deve ser re-conectado antes que qualquer dataset associado com o TDatabase possa ser aberto. O componente TDatabase tambm tem uma propriedade KeepConnections que ser discutida no captulo sobre TDatabase.

SQLHourGlass
A propriedade SQLHourGlass indica simplesmente quando ou no o cursor do mouse deve mudar para uma ampulheta durante operaes do BDE. Se SQLHourGlass estiver definido como True, o cursor de ampulheta aparecer quando o BDE estiver em progresso. Se SQLHourGlass estiver definido como False, o cursor permanecer o mesmo durante operaes do BDE.

ConfigMode
A propriedade CofigMode especifica como o Borland Database Engine (BDE) deve manipular aliases para a sesso. Voc pode ter notado que ConfigMode no uma propriedade disponvel no Object Inspector e s pode ser definida em tempo de execuo. Isto graas ao fato de que ConfigMode s funciona com os aliases criados usando os mtodos AddAlias ou AddStandardAlias dentro do contexto de uma sesso. Existem trs ConfigModes disponveis. Os trs modos so os seguintes: Modo cfm Virtual (Padro) Definio Todos os aliases no arquivo de configurao do BDE, os armazenados permanentemente no BDE e aliases locais a sesso esto disponveis a sesso. Apenas os aliases do arquivo de configurao do BDE, ou aqueles que so adicionados ao armazenamento persistente esto disponveis para a sesso. Apenas os aliases criados dentro desta sesso esto disponveis para a sesso.

cfmPersistent

CfmSession

TraceFlags
A ltima propriedade do componente TSession que discutiremos TraceFlags. A propriedade TraceFlags usada para especificar quais operaes do banco de dados o SQL Monitor dever analisar para o componente TSession. Se dermos uma olhada na caixa de dilogo Trace Options no SQL Monitor, veremos todas as opes disponveis para TraceFlags.

Uma vez que TraceFlags no uma propriedade disponvel no Object Inspector, a nica maneira de definir estas opes de trace em tempo de execuo. O Delphi tornou isto simples criando um conjunto (set) chamado TraceFlags. O cdigo a seguir demonstra como definir Trace Options para Executed Query Statements e Transactions. Session1.TraceFlags := [tfQExecute, tfTransact]; A tabela a seguir lista os valores associados com a propriedade Trace Flags: Valores tfQPrepare tfQ Execute tfError tfStmt tfConnect tfTransact tfBlob tfMisc tfVendor tfDataIn tfDataOut Definio Monitora instrues de Prepare. Monitora instrues de ExecSQL. Monitora mensagens de erro do servidor. Tais mensagens podem incluir um cdigo de erro. Monitora todas as instrues SQL. Monitora operaes de conexo de desconexo de banco de dados, incluindo alocao e liberao de handles de conexo. Monitora instrues de transaes, tais como StartTransaction, Commit e Rollback. Monitora operaes em tipos de dados blob. Monitora qualquer instruo no coberta pelas outras opes de flag. Monitora chamadas diretas a funes de API do servidor de banco de dados. Monitora dados recebidos de um servidor. Monitora dados enviados para um servidor.

Uma coisa importante a que se notar: se voc definir Trace Options em tempo de execuo, as opes no aparecero marcadas no SQL Monitor, mesmo depois que a linha de cdigo onde a propriedade TraceFlags for definida tiver sido executada. Contudo, os resultados no SQL Monitor iro demonstrar claramente que aquelas opes esto sendo realizadas.

Os Manipuladores de Evento de TSession


O TSession s tem dois eventos associados a ele. Eles so OnPassword e OnStartUp. No discutiremos o manipulador de evento OnPassword uma vez que s lida com tabelas Paradox. Contudo, veremos detalhadamente o m manipulador de evento OnStartUp.

OnStartUp
Quando um componente TSession ativado, vrias aes interessantes ocorrem, muitas das quais no possumos controle. Uma ao que podemos usar o evento OnStartUp. O evento OnStartUp disparado quando a propriedade Active do seu componente TSession correspondente for definida como True. Isto pode ser muito til em aplicaes Client/Server. Para o momento, podemos incluir alguma funcionalidade

que ocorra antes do evento OnLogin do TDatabase na nossa aplicao. Se ambos os componentes TSession e TDatabase no estiverem ativos e a propriedade Connected do componente TDatabase tiver sido de repente definida como True, o manipulador de evento OnStartUp do TSession ser disparado, inicialmente.

Mtodos TSession
O ultimo tpico a discutir neste captulo so os Mtodos do TSession. Embora no vejamos cada mtodo disponvel no TSession, falaremos rapidamente sobre os mtodos mais usados do TSession. Alguns dos mtodos que veremos so: AddAlias, DeleteAlias, IsAlias, ModifyAlias e SaveCofigFile.

AddAlias
O mtodo AddAlias adiciona um alias BDE em tempo de execuo para um servidor de banco de dados SQL que est associado com a sesso atual. O mtodo AddAlias requer trs parmetros. Estes trs parmetros so Nome, Driver e um String List de parmetros para o alias. importante notar que este alias s estar disponvel para o TSession especfico. Qualquer dos componentes no conectados ao TSession que cria o novo alias no ser capaz de usar o alias. Vamos ver um pedao de cdigo que demonstra como usar o mtodo AddAlias. Colocaremos este cdigo no evento OnCreate de um form em uma nova aplicao. Procedure TfrmAddAlias.FormCreate(Sender: Tobject); var AliasInfo: TStringList; begin AliasInfo := TStringList.Create; try with AliasInfo do begin Add(SERVER NAME=C:\Delphi Training Class\Sample Data\ORDERENTRY.GDB); Add(USER NAME=SYSDBA); end;// with..do Session1.AddAlias(DelphiServerData, INTRBASE, AliasInfo); finally AliasInfo.Free end;// try..finally end; Neste exemplo, novo alias recebe o nome de DelphiServerData. O Driver usado foi INTRBASE. Os parmetros do alias foram armazenados em um TStringList chamado AliasInfo. SERVER NAME e USER NAME para o banco de dados foram colocados nesta varivel AliasInfo. Voc v algum problema que possa estar associado com este exemplo? Um problema que o alias nunca destrudo.

Se no destruirmos este alias, toda vez que este form for criado, uma exceo ocorrer. Existem vrias maneiras de resolver este problema. Uma maneira deletar o alias no BDE Administrator ou no SQL Explorer. Outra maneira seria usar o mtodo DeleteAlias. Uma importante observao que o mtodo AddAlias no grava o novo alias no arquivo de configurao do BDE. Se voc quiser que o novo alias seja gravado no arquivo de configurao do BDE, o mtodo SaveConfigFile tem que ser chamado. O mesmo ser discutido mais tarde neste captulo.

DeleteAlias
Como aprendemos na sesso anterior, podemos criar um alias em tempo de execuo. Tambm possvel apagar um alias em tempo de execuo. O mtodo usado para fazer isto DeleteAlias. O mtodo DeleteAlias aceita uma string que designa qual alias deve ser apagado. Este mtodo no apaga o alias do arquivo de configurao do BDE. Se voc quiser apagar completamente um alias, primeiro chame o mtodo DeleteAlias seguido pelo SaveConfigFile. Para o prximo exemplo, estaremos usando o form com o cdigo criado na sesso sobre AddAlias. Depois de adicionar um boto ao form, colocaremos o mtodo DeleteAlias dentro do manipulador de evento OnClick. Quando o usurio der um clique sobre o boto, o alias que criamos ser apagado. Procedure TfrmAddAlias.btnDeleteAliasClick(Sender: Tobject); begin Session1.DeleteAlias(DelphiServerData); end; Depois da aplicao ter sido executada e o mtodo DeleteAlias tiver sido executado, veremos que o alias DelphiServerData foi apagado.

IsAlias
Existem tantas instncias quando voc est criando e apagando um alias, que voc precisa saber se um alias em especfico vlido. O mtodo IsAlias permite resolver este problema. O mtodo IsAlias aceita uma string e retorna um valor Boolean baseado nesta string. O valor da string que passado ao mtodo ISAlias o alias que voc est tentando verificar. Se o mtodo IsAlias retorna um valor True, o alias vlido. Se o mtodo IsAlias retorna False, o alias ento foi apagado ou nunca mais foi criado. Para demonstrar o mtodo IsAlias, usaremos o manipulador de evento btnDeleteAliasClick que criamos anteriormente. No manipulador de evento, iremos adicionar uma instruo if..then que verifica se o alias DelphiServerData vlido. Se ele for um alias vlido, iremos ento apag-lo. O cdigo dever parecer com o seguinte: procedure TfrmAddAlias.btnDeleteAliasClick(Sender: Tobject);

begin if (Session1.IsAlias(DelphiServerData)) then begin Session1.DeleteAlias(DelphiServerData); end; end;

ModifyAlias
Existem situaes nas quais os parmetros de alias precisam ser mudados em tempo de execuo. Ao invs de apagar o alias e criar um novo alias com parmetros diferentes, o Delphi nos d uma alternativa mais fcil. Podemos usar o mtodo ModifyAlias para adicionar ou mudar os parmetros para um alias especfico do BDE. Para fazer isto, chamamos o mtodo ModifyAlias e passamos a ele o nome do alias e lista de mudanas. O nome do alias simplesmente uma string - a lista de mudanas do tipo TString. Para outro exemplo, criaremos um novo boto no form que modificar o alias DelphiServer Data. A modificao ser feita no parmetro USER NAME. Procedure TfrmAddAlias.btnModifyAliasClick(Sender: Tobject); var AliasInfo: TStringList; begin AliasInfo := TStringList.Create; try AliasInfo.Add(USER NAME=CWILLIAMS); Session1.ModifyAlias(DelphiServerData, AliasInfo); finally AliasInfo.Free; end;// try..finially end;

SaveConfigFile

SaveConfigFile um mtodo poderoso, mas perigoso. O seu propsito transferir quaisquer mudanas na configurao do BDE, atualmente na memria, para o arquivo de configurao do BDE. Como temos visto com outros mtodos (AddAlias, DeleteAlias, etc.), mudanas podem ser feitas nos aliases, contudo, estas mudanas no so feitas permanentemente. Quaisquer mudanas feitas com o mtodo SaveConfigFile sero permanentemente gravadas no arquivo de configurao do BDE. Voc deve ser bem cuidadoso quando usar este mtodo. Se voc usar o mtodo DeleteAlias e chamar o SaveConfigFile logo em seguida, o alias ser apagado permanentemente. O cdigo a seguir demonstra a sintaxe necessria no uso do mtodo SaveConfigFile. Session1.SaveConfigFile;

Comentario: S feitas