Erro na base de dados Firebird ou Interbase “unsupported on-disk structure for file” 1. Verifique a versão do Gerenciador do Banco de Dados (exemplo: Firebird 1.5, Firebird 2.0, Interbase 6, Interbase 6.5…etc ) é a correta 2. Verifique que o a pasta onde esta o arquivo não esta com atributo Read Only (somente leitura) 3. Se utilizar Windows Server, Vista ou Seven verifique as permissões da pasta, se necessário, adicione permissões a nivel usuario / administrador
Categoria: Programação
Conectando Base de Dados no ZeosLib
Para conectarmos a base de dados utilizando o componente ZeosLib, vamos necessitar apenas 3 passos; Exemplo de uma conexão com Firebird: 1. Adicione no formulário o componente ZConnection (Zcom) ; este componente é o responsário para fazer a conexão com o banco de dados;
Propriedades do Zcon: Database: C:ExemploERP.FDB (Caminho e nome do banco de dados) Hostname: localhost (endereço onde está o banco de dados) Password: masterkey (senha da base de dados) Port: 3050 (porta de conexão com a base de dados) Protocol: Firebird 2.0 (selecione o tipo e versão do banco de dados) ReadOnly: false User: SYSDBA
2. Adicione no formulário o componente ZTable; este componente é responsável para manupular a TABELA que pertence a base de dados;
Propriedados do ZTable: Connection: Zcon (nome do componente de conexão Zcon) Name: Cliente (Alias que será usada na aplicação) ReadOnly: False TableName: TbCliente (nome da tabela existente na base de dados ERP)
3. Adicione no formulário o componente DataSource (componente nativo do proprio Delphi –> Data Access)
Propriedades do DataSource: DataSet: Cliente (nome de conexão do componente ZTable)
Name: DsCliente
Observações: Para fazer as outras conexões como: Fornecedores, clientes, produtos… etc, utilize apenas o passo 2 e 3 (não precisa adicionar outro ZConnection), ou seja, um ZConnection funciona para UMA base de dados com “N” Tabelas: EXEMPLO: Base ERP
Tabelas da Base ERP: Clientes Produtos Fornecedores Grupo de produtos Alíquotas Transportadoras.. etc
Para fazer conexão com uma base PostGreSQL, você deve mudar as propriedades do ZCon (Protocol: PostGreSQL, Porta: 5432) A partir deste procedimento, você pode fazer o link dos dbedits, Botoes, DbGrids, DbNavigator utilizando o DataSet;
Componente FreeReport 2.3.4 para Delphi
FreeReport Consiste em mecanismo de relatório, design e preview. Comparável com em QuickReport 3, ReportBuilder 3.52. Escrito em 100% Objeto Pascal e pode ser instalado em Delphi 4-7,2005,2006 e C++Builder 4-6. Fácil de utilizar, componente com exemplos e fontes. FREEWARE !!!! Clique aqui para download
QuickReport no Delphi 7
Para instalar o componente nativo QuickReport no Delphi 7, siga os passos abaixo:
- Abra o Delphi
- Menu Component > Install Packages
- Clique no botão Add
- Localize a pasta bin dentro da pasta de instalação do Delphi (C:Arquivos de
programasBorlandDelphi7Bin) - Localize um pacote “dclqrt70.bpl”, clique no botão abrir;
- Pressione o botão ok
Criar Tabela Paradox – Delphi
Exemplo de como criar uma tabela paradox em tempo de execução no delphi com chaves primárias e segundárias: // Tabela: ‘CADFOR’ with TTable.Create(Application) do
begin
try
TableName := ‘CadFOR’;
DatabaseName := ‘MeuAlias’;
TableType := ttParadox; if not Exists then
begin
with FieldDefs do
begin
Clear;
Add(‘CODIGOFOR’, ftAutoInc, 0, False);
Add(‘RAZAOFOR’, ftString, 60, False);
Add(‘FANTASIAFOR’, ftString, 40, False);
Add(‘CGCCPFFOR’, ftString, 20, False);
Add(‘IERGFOR’, ftString, 20, False);
Add(‘ENDFOR’, ftString, 50, False);
Add(‘COMPLFOR’, ftString, 20, False);
Add(‘CIDFOR’, ftString, 40, False);
Add(‘CEPFOR’, ftString, 10, False);
Add(‘UFFOR’, ftString, 2, False);
Add(‘SITEFOR’, ftString, 40, False);
Add(‘DDDFOR’, ftString, 3, False);
Add(‘FONE1FOR’, ftString, 15, False);
Add(‘FONE2FOR’, ftString, 15, False);
Add(‘FONE3FOR’, ftString, 15, False);
Add(‘FONE4FOR’, ftString, 15, False);
Add(‘CONTATOFOR’, ftString, 30, False);
Add(‘EMAILFOR’, ftString, 40, False);
Add(‘OBSFOR’, ftMemo, 1, False);
end; with IndexDefs do
begin
Clear;
Add(”, ‘CODIGOFOR’, [ixPrimary, ixUnique]);
Add(‘CGCC’, ‘CGCCPFFOR’, [ixCaseInsensitive]);
Add(‘FANT’, ‘FANTASIAFOR’, [ixCaseInsensitive]);
Add(‘RAZA’, ‘RAZAOFOR’, [ixCaseInsensitive]);
Add(‘CODI’, ‘CODIGOFOR’, [ixCaseInsensitive]);
end; CreateTable;
end;
finally
Free;
end;
end;
Limpar Edit, Memo de um form – Delphi
procedure LimpaEdit (Form: TForm);
var
i : Integer;
begin
for i := 0 to Form.ComponentCount – 1 do
if Form.Components[i] is TCustomEdit then
(Form.Components[i] as TCustomEdit).Clear;
end;
Criado Alias via programação – Delphi
Inclua na seção uses: DB No exemplo abaixo, vamos criar o Alias com o nome NovoAlias e informar a base de dados que esta em “C:PastaSoft”
if not Session.IsAlias(‘NovoAlias’) then { se o alias não existir… }
begin
Session.AddStandardAlias(‘NovoAlias’, ‘C:PastaSoft’, ‘PARADOX’);
Session.SaveConfigFile;
end;
Comando Limit = First SQL onde utilizar ?
Esta semana eu precisei fazer um gráfico dos 10 produtos mais vendidos de uma empresa. Utilizei a expressão Limit na Sql para limitar apenas a quantidade de registros (10 registros) que eu estava precisando e estava dando erro. Depois de algum tempo de pesquisa, entendi o erro.
A expressão Limit que eu utilizava em PostgreSQL é incompatível com o Firebird. No Firebird temos que utilizar a expressão First, Exemplo:
SELECT FIRST 10 cup_item.produto, cup_item.descricao, SUM(cup_item.qtde) as Quantidade,cup_item.unitario,
SUM(cup_item.total), grupo.descricao as Desc_gru
FROM produto, cup_venda, cup_item, grupo
WHERE produto.codigo=cup_item.produto
AND cup_item.id_venda=cup_venda.id_venda
AND produto.grupo=grupo.codigo
AND cup_venda.data >= :dInicio
AND cup_venda.data <= :dFinal
GROUP BY cup_item.produto, cup_item.descricao, Desc_gru, cup_item.unitario
ORDER BY quantidade desc
Exemplo em PostgreSQL com o comando Limit:
SELECT cup_item.produto, cup_item.descricao, SUM(cup_item.qtde) as Quantidade,cup_item.unitario,
SUM(cup_item.total), grupo.descricao as Desc_gru
FROM produto, cup_venda, cup_item, grupo
WHERE produto.codigo=cup_item.produto
AND cup_item.id_venda=cup_venda.id_venda
AND produto.grupo=grupo.codigo
AND cup_venda.data >= :dInicio
AND cup_venda.data <= :dFinal
GROUP BY cup_item.produto, cup_item.descricao, Desc_gru, cup_item.unitario
ORDER BY quantidade desc
LIMIT 10
Então se na nossa tabela existir milhares de registros, não importa, pois só serão exibidos os 10 registros determinados pelo comando Limit ou First.
Como calcular dígito verificador de 11 posições do Nosso Número do BB
Para quem esta desenvolvendo softwares para emissão de boletos do Banco do Brasil e quer uma mãozinha no calculo do digito verificador do campo NOSSO NÚMERO de 11 posições, esta ai uma função que criei em Delphi que esta rodando direitinho:
Comando: CalculaDV11bb(<nosso numero>)
Como parâmetro você deve passar o NossoNumero e a função vai retornar o digito verificador, exemplo:
DigitoVerificador.text := CalculaDV11BB(NossoNumero.text);
Função:
function TForm1.CalculaDV11BB(cCONTA:string):string;
{cálculo do dígito verificador do nosso número de 11 posições
utilizado para gerar os boletos do banco do Brasil
Criado por Dane Morais – danegd@gmail.com}
var
cMultiplicador : string;
nResult2 : integer;
nParcial : integer;
nX : integer;
begin
cMultiplicador := ‘78923456789’;
nX := 0;
nParcial := 0;
nResult2 := 0;
for nX := 1 to 11 do
nParcial := nParcial+ (StrToInt(copy(cConta,nX,1)) * StrToInt(copy(cMultiplicador,nX,1))) ; nResult2 := (nParcial mod 11);
if nResult2 < 10 then
result := IntToStr(nResult2);
if nresult2 = 10 then
result := ‘X’;
if nResult2 = 0 then
result := ‘0’;
end ;
PostgreSQL (SGBD) Banco de Dados
PostgreSql é um Sistema de Gerenciamento de Banco de Dados Open Source (gratuito), estável e confiável. Compatível com as principais linguagens e plataformas de programação e disponível para vários sistemas operacionais (Linux, Unix, Mac OS X e WIndows). Possui replicador próprio entre servidores, suporte a ACID (Atomicidade, Consistência, Isolamento e Durabilidade), multithreads (múltiplas conexões com banco de dados de uma só vez), cluster (utilizando dois ou mais computadores interligados para atender e agilizar as demandas do banco de dados), Conexões seguras e criptografias, Gatilhos (triggers), etc. . Dados sobre armazenamento:
Tamanho máximo de um banco de dados | Ilimitado |
Tamanho máximo de uma Tabela | 32 Tb |
Tamanho máximo de uma Linha | 1,6 Tb |
Tamanho máximo de um Campo | 1 Gb |
Tamanho máximo de linhas por tabela | Ilimitado |
Tamanho máximo de colunas por tabela | 250 a 1.600 |
Tamanho máximo de índice por tabela | Ilimitado |