unsupported on-disk structure for file

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

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;

QuickReport no Delphi 7

Para instalar o componente nativo QuickReport no Delphi 7, siga os passos abaixo:

    1. Abra o Delphi
    2. Menu Component > Install Packages
    3. Clique no botão Add
    4. Localize a pasta bin dentro da pasta de instalação do Delphi (C:Arquivos de
      programasBorlandDelphi7Bin)
    5. Localize um pacote “dclqrt70.bpl”, clique no botão abrir;
    6. 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;

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

 logo 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
   

  http://www.postgresql.org/ http://www.postgresql.org.br/