Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Dicas] Banco de Dados Delphi


soureidosnoob
 Compartilhar

Posts Recomendados

Dicas de Delphi - Banco de Dados

 

Solucionando problemas de arredondamentos

 

Criando tabelas via SQL

 

Salvar imagem em tabela Paradox

 

Evitar a biblioteca midas.dll

 

Copiar qualquer texto para o Clipboard

 

Avaliar de expressão matemática

 

Rolagem automática em ListBox

 

Obter data/hora do próprio EXE

 

Mostrar aviso em forma de hint

 

Sons no alto-falante do micro

 

Acessar tabela DB/DBF no diretório do EXE

 

Ordenar datas pelo mês em Paradox?

 

Excluir todas as ocorrências de um caractere de uma string

 

Fazer pesquisa incremental apenas com DBGrid

 

Consulta SQL que usa a data do sistema

 

Obter nomes dos campos de uma tabela

 

Obter path de um Alias do BDE

 

Copiar todos os registros de uma tabela para o Clipboard

 

Copiar um registro de uma tabela para o Clipboard

 

Mudar a cor de um DBEdit dentro de um DBCtrlGrid de acordo com uma condição

 

Fazer pesquisa incremental com DBGrid e Edit

 

Limpar um campo tipo data via programação

 

Implementar um campo auto-incremental via programação

 

Exibir a caixa de diálogo padrão de solicitação de senha do banco de dados

 

Usar o evento OnGetText de um TField

 

Verificar, via programação, se Local Share do BDE está TRUE

 

Resolver "Internal error near: IBCheck" do Interbase 5.1.1 Server no NT

 

Excluir todos os registros de uma tabela

 

Mudar a coluna ativa em um DBGrid via programação

 

Obter o número do registro atual

 

Trabalhar com Filter de forma mais prática

 

Obter a quantidade de registros total e visível de uma tabela

 

Gravar fisicamente com Paradox

 

Criar uma tabela (DB, DBF) através do seu programa

 

Criar um Alias temporário através do seu programa

 

Inicio

 

Solucionando problemas de arredondamentos

 

Como sempre observo longas discussões sobre este tema, resolvi apresentar minha experiência nesta área.

 

Eu tive muitos problemas com arredondamentos há muito tempo, especialmente quando comecei a implantar sistemas para uso com ECF (emissor de cupom fiscal). Acontecia do programa apresentar um total de venda diferente do valor impresso pelo ECF. Então fui estudando a questão com carinho e cheguei a algumas conclusões que resolveram meus problemas.

 

O modo de arredondamento do Firebird é igual ao modo das calculadoras financeiras. Já no Delphi o arredondamento leva em consideração se a parte inteira é par ou ímpar quando a parte decimal termina em 5. Os ECFs também calculam como no Firebird. Para resolver as diferenças entre Delphi e Firebird escrevi a função abaixo (a conversão para string resolve alguns problemas de arredondamento do Delphi):

 

É necessário se cadastrar para acessar o conteúdo.

 

Algumas vezes o Delphi gera uns problemas de arredondamento quando você faz vários cálculos (especialmente multiplicação e divisão) sem aplicar o arredondamento em cada etapa do cálculo. Isto ocorre devido ao modo que o Delphi armazena um valor de ponto flutuante numa variável. Procure fazer o arredondamento a cada etapa do cálculo, exceto se este arredondamento passo-a-passo for prejudicar o resultado do cálculo.

 

Sempre que possível use o tipo Currency para variáveis que receberão números reais com até 4 casas decimais. Lembre-se também de usar AsCurrency ao acessar valores de campos de DataSets.

 

Use no Firebird campos do tipo NUMERIC(x,y) para armazenar valores financeiros e quantidades, mas tome o cuidado de criar o banco de dados com o dialeto 3, pois no dialeto 1 o tipo NUMERIC poderá ser convertido para DOUBLE PRECISION internamente.

Exemplos:

 

Quantidade NUMERIC(9,3)

Quantidade NUMERIC(18,3)

Preco NUMERIC(9,2)

Preco NUMERIC(18,2)

Preco NUMERIC(18,4)

Desconto NUMERIC(4,2)

 

Crie campos calculados no banco (COMPUTED BY) já com os devidos ajustes de arredondamento. No Firebird existem alguns problemas de arredondamento também, mas geralmente se resolve com CASTs. Veja alguns exemplos:

Itens de venda:

 

É necessário se cadastrar para acessar o conteúdo.

 

Contas a receber/recebidas:

 

É necessário se cadastrar para acessar o conteúdo.

 

Enfim, use CASTs no Firebird sempre que fizer cálculos envolvendo multiplicação e divisão para que o resultado tenha de fato as casas decimais desejadas.

 

Com estas técnicas acima resolvi completamente os problemas que eu tinha com relação aos arredondamentos, tanto no Delphi quanto no Interbase ou Firebird.

 

Inicio

 

Criando tabelas via SQL

 

Inclua na seção uses: dbTables

 

- Coloque um TButton no form;

- Escreve no OnClick do Button como abaixo:

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

Este exemplo foi testado com banco de dados Paradox, porém deverá funcionar em vários outros bancos de dados com pouca ou nenhuma alteração.

Inicio

 

 

Salvar imagem em Tabela Paradox

 

O exemplo abaixo demonstra como salvar imagens Bitmap em

tabelas Paradox.

 

1. Crie uma tabela Paradox com um campo do tipo Binary (B).

 

2. Coloque no form um Table e ligue-o com a tabela Paradox

recém criada.

 

3. Coloque também um OpenDialog.

 

4. Para carregar a imagem de um arquivo bitmap para a tabela

faça assim:

 

É necessário se cadastrar para acessar o conteúdo.

 

Para mostrar no form a imagem que foi salva na tabela

siga o exemplo:

 

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

O exemplo acima pinta a imagem diretamente no Canvas do Form1. Uma alternativa mais elegante seria usar um objeto TImage para mostrar a imagem. Para salvar em outros bancos de dados a técnica usava será semelhante.

Inicio

 

Evitar a biblioteca midas.dll

 

Até a versão 5 do Delphi, se usarmos o componente

TClientDataSet teremos, invariavelmente, que distribuir

juntamente com nosso aplicativo, a biblioteca midas.dll.

 

Porém a partir do Delphi 6 este inconveniente pode ser

evitado. Para isto adicione no uses de seu aplicativo a

unit MidasLib. Pode fazer isto na seção uses do form

principal ou em qualquer outra unit.

 

 

Observações

 

É importante lembrar que a distribuição do arquivo midas.dll está sugeito ao pagamento de licenças para a Borland. Entre em contato com a Borland para saber mais detalhes.

 

Inicio

 

Copiar qualquer texto para o Clipboard

Inclua na seção uses: Clipbrd

 

O objeto global Clipboard pode ser usado para fazer a

transferência de dados entre a Área de Transferência e seu

aplicativo. Veja o exemplo:

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

Alguns componentes possuem métodos tais como CopyToClipboard() que podem ser usados para copiar dados para a área de transferência de forma bastante simples.

 

 

Inicio

 

Avaliar de expressão matemática

 

Muitas pessoas procuram um parser (avaliador) de expressões

matemática. Em resposta a tanta procura estou colocando abaixo

duas possíveis soluções:

 

1. Pegue em nosso download o arquivo Formula.zip. Ele contém

um componente (não profissional) que fiz para avaliar

fórmulas matemáticas simples.

 

2. Pegue o componente TMathParser no endereço:

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

Se você conhece outro componente queira por gentileza nos informar o endereço da página para download.

Inicio

 

Rolagem automática em ListBox

 

Inclua na seção uses: Windows, Messages

 

Para rolar o conteúdo de um ListBox automaticamente basta

enviar uma mensagem WM_VSCROLL para a janela do componente.

No primeiro parâmetro da mensagem devemos passar o tipo de

rolagem que deverá ser feita, ou seja:

 

SB_LINEDOWN - Uma linha para baixo.

SB_LINEUP - Uma linha para cima.

SB_PAGEDOWN - Uma página para baixo.

SB_PAGEUP - Uma página para cima.

SB_TOP - Topo da lista.

SB_BOTTOM - Fim da lista.

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

A mensagem WM_VSCROLL aceita outros parâmetros. Pesquise no Help da API do Windows por WM_VSCROLL para obter mais informações.

 

Inicio

 

Obter data/hora do próprio EXE

 

Inclua na seção uses: SysUtils

 

Eis uma função que pega a data e hora do próprio EXE.

 

É necessário se cadastrar para acessar o conteúdo.

Inicio

 

Mostrar aviso em forma de hint

 

Inclua na seção uses: Controls

 

Nos tempos do Clipper era comum mostrar uma mensagem,

aguardar alguns segundos e depois ocultá-la. Para quem ainda

gosta deste estilo apresento uma dica interessante. A rotina

abaixo mostra a mensagem de aviso em forma de "Hint", aguarda

o tempo especificado e finalmente retira a mensagem da tela.

 

É necessário se cadastrar para acessar o conteúdo.

 

Exemplo de uso:

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

Usei este recurso por dois motivos. Primeiro para lembrar os velhos tempos do Clipper (legal!) e em segundo lugar para mostrar um breve exemplo que pode ser ampliado para melhorar as mensagens de dicas (hint) de aplicações feitas em Delphi.

Inicio

 

Sons no alto-falante do micro

 

Inclua na seção uses: Windows

 

Desde que migrei de Clipper para Delphi não uso este recurso

em minhas aplicações. Primeiro porque o Windows oferece sons

mais sofisticados e em segundo lugar porque eu realmente não

sabia como fazer (verdade!). Recentemente, em uma visita ao

news da borland encontrei as rotinas abaixo e achei muito

interessantes. Então resolvi disponibilizá-las aqui.

 

É necessário se cadastrar para acessar o conteúdo.

Se você não entendeu as rotinas, eis um resumo:

 

Sound:

Inicia um som com uma determinada freqüência (hertz).

 

NoSound:

Interrompe o som iniciado por Sound.

 

DoBeep:

Esta rotina verifica se o sistema operacional é o Windows NT.

Se for, chama a API Windows.Beep. Caso contrário chama Sound,

aguarda e, chama NoSound.

 

 

Observações

 

Pelo menos no meu caso, a maioria dos usuários não possuem computadores munidos de caixas de som. Para estes casos as rotinas acima seriam a solução se o som for indispensável.

 

 

Início

 

Acessar tabela DB/DBF no diretório do EXE

 

Inclua na seção uses: SysUtils

 

Problema:

 

Gostaria de acessar tabelas DB/DBF que estão no diretório do

EXE sem ter que criar um alias no BDE. Como fazer?

 

Solução:

No evento BeforeOpen do Table coloque o código abaixo:

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

Este procedimento não dispensa o BDE, mas apenas a criação do Alias.

 

 

 

Início

 

Ordenar datas pelo mês em Paradox?

 

Problema:

 

Gostaria de organizar uma lista dos clientes ordenados

por mês a partir da data de nascimento.

 

Solução:

 

Use o componente TQuery com a instrução SQL abaixo:

 

É necessário se cadastrar para acessar o conteúdo.

 

 

 

Início

 

Excluir todas as ocorrências de um caractere de uma string

 

 

Inclua na seção uses: SysUtils

 

Problema:

 

Em determinados casos gostaria de poder eliminar alguns

caracteres indesejados que os usuários podem digitar, tais

como pontos, aspas, etc. Como fazer isto?

 

Solução:

 

Na função abaixo, o primeiro parâmetro é o caractere a ser

eliminado e o segundo parâmetro é a string, donde o caractere

será eliminado.

 

É necessário se cadastrar para acessar o conteúdo.

 

=== Exemplo de uso ===

 

- Coloque um Edit e um Button.

- Programe o OnClick do botão conforme abaixo:

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

Para eliminar vários caracteres poderíamos escrever uma função que fizesse toda a tarefa numa única chamada.

 

 

Início

 

Fazer pesquisa incremental apenas com DBGrid

 

Problema:

 

Gostaria de fazer um formulário de pesquisa que, ao digitar

algo sobre o DBGrid, o registro correspondendo fosse

localizado.

 

Solução:

 

- Coloque no form: TTable, TDataSource, TDBGrid e TLabel.

 

- Ajuste as propriedades do Table1:

DatabaseName =

TableName =

Active = true

 

- Ajuste as propriedades do DataSource1:

DataSet = Table1

 

- Ajuste as propriedades do DBGrid1:

DataSource = DataSource1

Options -> dgEditing = false

ReadOnly = true

 

* Pode também ajustar a propriedades Columns para escolher

as colunas que serão exibidas.

 

- Na seção private da unit declare:

private

FTexto: string;

 

- No evento OnCreate do form coloque:

É necessário se cadastrar para acessar o conteúdo.

- No evento OnKeyPress do DBGrid1:

 

É necessário se cadastrar para acessar o conteúdo.

Observações

 

No nosso exemplo estamos pesquisando através do campo "Nome". Para esta pesquisa precisamos de um índice com este campo.

 

 

Início

 

Consulta SQL que usa a data do sistema

 

Problema:

 

Preciso fazer uma consulta com SQL que me retorne todos

os registros em que o valor de um campo do tipo data seja

igual ou anterior à dada do sistema. Como fazer?

 

Solução:

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

Este exemplo foi testado com tabelas Paradox, mas deve funcionar na maioria dos bancos de dados com pouca ou nenhuma alteração.

 

 

 

Início

 

Obter nomes dos campos de uma tabela

 

Inclua na seção uses: dbTables, Classes, Forms

 

A função abaixo obtém os nomes de todos os campos de uma

tabela do banco de dados.

 

É necessário se cadastrar para acessar o conteúdo.

 

=== Exemplo de uso ===

 

- Coloque um TMemo e um TButton no Form;

- Coloque o código abaixo no evento OnClick do Button:

 

É necessário se cadastrar para acessar o conteúdo.

 

 

Início

 

 

Obter path de um Alias do BDE

 

Inclua na seção uses: BDE

 

{ A função abaixo retorna o path (caminho) de um Alias do

BDE }

 

É necessário se cadastrar para acessar o conteúdo.

 

Dica enviada por: Angelo Ricardo Miquelin Neto.

 

 

Observações

 

Se a unit em que essa rotina for colocada utilizar as units DB e DBTABLES, as chamadas a DbiInit() e DbiExit() poderão ser omitidas.

 

 

 

Início

Copiar todos os registros de uma tabela para o Clipboard

Inclua na seção uses: Clipbrd

 

Problema:

 

Gostaria de colocar em minha aplicação o recurso de copiar

todos os registros de uma tabela para a área de transferência,

permitindo ao usuário colar estes dados em outro

aplicativo (ex: MS-Word). Isto é possível?

 

Solução:

 

Sim. Siga os passos abaixo:

 

- Crie seu form normalmente, colocando DataSource, Table e

demais componentes;

- Coloque um botão e no evento OnClick deste botão coloque

o código abaixo:

 

É necessário se cadastrar para acessar o conteúdo.

Para testar:

- Execute este aplicativo;

- Clique no botão;

- Vá em outro aplicativo (ex: MS-Word) e mande colar (Ctrl+V).

 

 

Observações

 

CUIDADO! Não use este recurso com tabelas grandes, pois poderá usar memória demasiadamente. No teste que fiz, o tamanho da string S atingiu 20K e funcionou normalmente. Mas isto pode variar de uma máquina para outra.

 

 

 

Início

 

Copiar um registro de uma tabela para o Clipboard

 

Inclua na seção uses: Clipbrd

 

Problema:

 

Gostaria de colocar em minha aplicação o recurso de copiar

um registro de uma tabela para a área de transferência,

permitindo ao usuário colar estes dados em outro

aplicativo (ex: MS-Word). Isto é possível?

 

Solução:

 

Sim. Siga os passos abaixo:

 

- Crie seu form normalmente, colocando DataSource, Table e

demais componentes;

- Coloque um botão e no evento OnClick deste botão coloque

o código abaixo:

 

É necessário se cadastrar para acessar o conteúdo.

 

Para testar:

- Execute este aplicativo;

- Clique no botão;

- Vá em outro aplicativo (ex: MS-Word) e mande colar (Ctrl+V).

 

Início

 

 

Mudar a cor de um DBEdit dentro de um DBCtrlGrid de acordo com uma condição

 

Problema:

 

Uso um DBCtrlGrid e gostaria que, quando o valor de um

determinado campo for negativo, o DBEdit ligado a este

campo seja exibido em vermelho e, caso contrário,

em azul. Isto é possível?

 

Solução:

 

- Monte o form normalmente colocando DataSource, Table,

DBCtrlGrid e os DBEdit's, DBText's, etc.

 

- Escreva no manipulador do evento OnPaintPanel do

DBCtrlGrid conforme abaixo:

 

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

Neste exemplo mudamos a cor da fonte do componente DBEdit, Porém, pode-se também mudar a cor do próprio componente (DBEdit1.Color).

 

 

 

Início

 

Fazer pesquisa incremental com DBGrid e Edit

 

Problema:

 

Gostaria de montar um formulário de pesquisa com um DBGrid e

um Edit de modo que, enquanto o usuário digita um nome do

Edit, o registro vai sendo localizado no DBGrid. Como fazer?

 

- Crie um índice na tabela com campo a ser usado na pesquisa.

 

Coloque no Form:

 

- Um DataSource

- Um Table

- Um DBGrid

- Um Edit

 

Altere as seguintes propriedades:

 

- DataSource1.DataSet = Table1

- Table1.DatabaseName = 'NomeDoAlias'

- Table1.TableName = 'NomeDaTabela'

- Table1.IndexFieldNames = 'NomeDoCampo'

- Table1.Active = true

- DBGrid1.DataSource = DataSource1

 

Escreva a instrução abaixo no evento OnChange do Edit:

 

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

Este exemplo considera que o campo seja tipo string. Para outros tipos de campos pode ocorrer erro dependendo dos valores digitados no Edit1.

 

 

Início

 

Limpar um campo tipo data via programação

 

É necessário se cadastrar para acessar o conteúdo.

 

{ ou }

 

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

Podemos usar este recurso para limpar também campos numéricos, string, etc.

 

 

Início

Implementar um campo auto-incremental via programação

 

Inclua na seção uses: dbTables

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

A função acima incrementa o campo somente se estiver vazio. Assim podemos dar ao usuário a opção de digitar neste campo ou deixá-lo vazio para que seja auto-incrementado. Existem várias outras formas de implementar este recurso.

 

 

Início

 

Exibir a caixa de diálogo padrão de solicitação de senha do banco de dados

Inclua na seção uses: DbPwDlg

 

{ Coloque um botão no form e escreve seu evento OnClick

como abaixo }

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

As senhas adicionadas nesta caixa de diálogo são adicionadas na sessão (TSession) atual. Isto é útil quando colocamos senha em tabelas Paradox, ou mesmo quando trabalhamos com banco de dados Client Servidor, e queremos que o usuário digite a senha de acesso. Se não fizermos desta forma, nem adicionarmos via programação as senhas necessárias, esta caixa de diálogo será mostrada quando o programa tentar abrir uma tabela com senha. A grande vantagem aqui é que podemos traduzir os Caption's dos componentes.

 

Início

Usar o evento OnGetText de um TField

 

{ Problema:

 

Tenho um sistema de contas a receber, onde um campo chamado

"Tipo" contém um número inteiro que indica o tipo do

documento conforme abaixo:

 

1 - Promissória

2 - Duplicata

3 - Boleto

 

Gostaria que, ao exibir os dados (num DBGrid por exemplo),

fosse exibido o nome e não o número, ou seja, "Promissória"

em vez de "1".

 

Solução:

 

Isto pode ser feito de várias formas, mas aqui vou mostrar

como resolver usando o evento OnGetText do TField. Vejamos:

 

- Adicione todos os campos no Field Editor;

- Clique no campo "Tipo";

- Vá ao Object Inspector e dê um duplo-click

no evento OnGetText;

- Neste evento, digite o código abaixo:

}

 

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

Ao exibir será exibido os nomes. Mas ao digitar continue com os 1, 2, 3, etc. Para usar este recurso em relatórios, acesse a propriedade DisplayText em vez de AsString para obter o valor do campo.

 

 

Início

 

Verificar, via programação, se Local Share do BDE está TRUE

 

Inclua na seção uses: Registry, SysUtils, Windows

 

{ Esta função retorna true se Local Share estiver "TRUE".

Caso contrário, retorna false. }

 

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

A função acima faz a verificação no registro do Windows. Por isto está sujeita a falha caso o BDE coloque as configurações em outro local (é o caso do BDE salvar as configurações no formato do Windows 3.x). O ideal seria usar uma API do BDE, mas até o momento não conheço uma que retorne esta informação. Caso alguém saiba, queira por gentileza nos informar.

 

 

 

Início

 

Excluir todos os registros de uma tabela

 

p

É necessário se cadastrar para acessar o conteúdo.

{ Chame-a como nos exemplos abaixo: }

É necessário se cadastrar para acessar o conteúdo.

 

Observações

 

Se houver um filtro ou range ativo, somente os registros filtrados serão excluídos. Portanto é diferente de Table1.EmptyTable. Esta função poderá ser chamada no evento BeforeDelete do Table (ou Query) principal em um formulário mestre-detalhe para excluir os itens (da parte detalhe).

 

 

Início

 

Mudar a coluna ativa em um DBGrid via programação

 

É necessário se cadastrar para acessar o conteúdo.

 

{ Usando o nome do campo }

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

Aconselho usar o nome do campo quando o que importa é o campo e não a posição. Use o número da coluna somente quando o que importa é a posição, e não o campo.

 

Início

 

Obter o número do registro atual

 

Table1.RecNo()

 

 

Início

 

 

Trabalhar com Filter de forma mais prática

 

Se você está habituado a usar este código no filter...

 

É necessário se cadastrar para acessar o conteúdo.

ou

É necessário se cadastrar para acessar o conteúdo.

 

Tente usar este:

 

É necessário se cadastrar para acessar o conteúdo.

ou

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

A função QuitedStr() coloca apóstrofos envolvendo a string. Se houver um apóstrofo como parte da string, ela o subtitui por dois apóstrofos, para que seja corretamente interpretado.

 

 

Início

 

Obter a quantidade de registros total e visível de uma tabela

 

Inclua na seção uses: DbiProcs

 

Os componentes TTable e TQuery possuem a propriedade

RecordCount que indicam a quantidade de registros da tabela.

No entanto esta propriedade é dependente de filtros, ou

seja, se tivermos uma tabela com dez registros com campo

"Codigo" de 1 a 10 e aplicarmos o filtro mostrado a seguir,

a propriedade RecordCount retornará 5 e não 10.

 

É necessário se cadastrar para acessar o conteúdo.

Se quizermos obter a quantidade total de registros,

independentemente de filtros, devemos usar uma API do BDE

conforme abaixo:

É necessário se cadastrar para acessar o conteúdo.

 

 

Observações

 

Para testar o exemplo acima, o Table1 precisa estar aberto.

 

 

Início

Gravar fisicamente com Paradox

 

Inclua na seção uses: DbiProcs

 

{ Se estiver usando TTable, coloque nos eventos

AfterPost e AfterDelete a seguinte linha: }

 

É necessário se cadastrar para acessar o conteúdo.

 

{ Para TQuery, a instrução é semelhante: }

 

dbiSaveChanges(Query1.Handle);

 

 

Início

 

Criar uma tabela (DB, DBF) através do seu programa

 

Inclua na seção uses: dbTables, DB

 

É necessário se cadastrar para acessar o conteúdo.

{ Somente Delphi4 }

É necessário se cadastrar para acessar o conteúdo.

{***}

 

{ Cria a tabela }

Tabela.FieldDefs.Add('Codigo', ftInteger, 0, true);

Tabela.FieldDefs.Add('Nome', ftString, 30, true);

Tabela.FieldDefs.Add('DataNasc', ftDate, 0, false);

Tabela.FieldDefs.Add('RendaMes', ftCurrency, 0, false);

Tabela.FieldDefs.Add('Ativo', ftBoolean, 0, true);

{ etc, etc, etc }

Tabela.CreateTable;

 

{ Cria os Índices }

Tabela.AddIndex('ICodigo', 'Codigo', [ixPrimary, ixUnique]);

Tabela.AddIndex('INome', 'Nome', [ixCaseInsensitive]);

{ etc, etc, etc }

finally

Tabela.Free;

end;

end;

 

 

Observações

 

Para verificar se o arquivo já existe na versão 3 ou anterior do Delphi, você deverá usar a função "FileExists" do Delphi.

 

 

 

Início

 

Criar um Alias temporário através do seu programa

 

Inclua na seção uses: DB

 

{ Enxergar somente configurações da sessão atual }

Session.ConfigMode := cmSession;

{ Adicionar o Alias }

Session.AddStandardAlias('MeuAlias', 'C:\DirProg', 'PARADOX');

 

Observaçoes

 

Para verificar se o arquivo já existe na versão 3 ou anterior do Delphi, você deverá usar a função "FileExists" do Delphi.

 

Leia para nao passar vergonha:

 

Nao foi eu que fiz isso tudo , eu fiz alguns , uma boa parte é ctrl+c e ctrl+v so que eu estou estudando tambem!

 

Os creditos sao do site Tecnobyte! Se nao pode falar , peço a um moderador que edite , mais so a parte do Tecnobyte , pois o conteudo deu um trabalhao pra formatar!

 

Agradece ae deu um trabalhao :D

 

Abraços

Link para o comentário
Compartilhar em outros sites

utiliza : [*php][/*php]

nos codigos é o que fica mais bonito

e como ja disseram o conteudo é bom mas não da para ler ele por completo.

você pode usar a cor padrão mesmo e destacar as coisas usando negrito , um tamanho de fonte bom é 2 e a fonte boa é Tahoma , hehe :p

o topico fica bem limpo e fica bem legal tambem cetralizado.

Obrigado por compartilhar , Abraços!

Link para o comentário
Compartilhar em outros sites

  • 2 semanas atrás...
Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.