POR QUE ESCOLHER A BYTE FACTORY?

Além de oferecer 100% de ferramentas e serviços personalizados, nossa equipe tem o foco na alavancagem do seu negócio, informando e auxiliando sua expansão.

CONTATO
  • End.: Rua Oriente Nº 55, cj 1310
    Campinas-SP CEP 13090-740
  • Tel: +55 19 3251-8496
  • Email: atendimento@bf.net.br

Criação de colunas no CI alterada

06/12/2009 em CENTRO DE INFORMAÇÕES

Esta alteração visa corrigir um possível problema de colunas duplicadas em servidores que sejam case sensitive para texto (SAPdb e PostgreSQL, por exemplo).
Agora, quando uma vista ou tabela for criada, o AICS irá forçar que o nome da coluna seja gravada em letras maiúsculas, logo, não importando qual o destino da vista ou tabela exportada, não ocorrerá mais o problema de colunas iguais podendo gerar mensagens de erro de chave.

Processamento de DFMs sofreu alterações

05/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota é considerada de caráter de desenvolvimento e pode não ser compreendida por todos os usuários.
Um DFM é uma descrição de objetos de formulário que permite livre criação de estruturas de tela e mesmo de relatórios. O AICS processa a descrição da mesma forma que um ambiente Delphi faria. Inclusive, pode-se copiar e colar estruturas DFMs no próprio AICS diretamente nos scripts (clique com o botão direito em um script para ver as opções disponíveis).
Entretanto, o AICS não associava o nome aos objetos criados.
Isso não causa nenhum problema para executar as rotinas, entretanto, o nome associado facilita muito a análise das telas criadas com o uso deste recurso.
Nesta atualização do sistema, os objetos receberão o seu nome diretamente pela propriedade "name". O único comportamento que se altera com isso é o processamento desta associação pelos próprios objetos. Isso pode requerer que algum campo text ou caption seja limpo explicitamente (pode ser no próprio DFM).
Por exemplo, um TEdit passa a receber o nome em seu text, coloque Text = '' dentro da cláusula object deste objeto. O mesmo vale para TPanel e outros objetos que possuem captions ou texts. Se já houver associação do valor, isso não altera em nada o comportamente atual, somente na ausência da informação esta mudança ocorre.

Novo comando para associar Blobs

03/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota técnica é avançada.
O processador do AICS possuía a função SetString para associar textos, memos e blobs aos cursores SQLs. Entretanto, pode ocorrer a necessidade de especificar ao servidor de que uma dada coluna é do tipo Blob e não do tipo Memo (ou long).
Para alcançar este objetivo, criamos a função SetBlob com a mesma sintaxe da SetString, porém, irá indicar ao servidor de que o dado é um Blob.
Portanto, a sintaxe é:
SetBlob(Tabela,Coluna,Conteudo:String);
Sendo que Conteudo pode ser um string binário de até 2GB.

Gerador de números aleatórios alterado

03/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota pode ser considerada técnica e avançada.
O AICS expõe a função "random" que retorna um número aleatório entre 0 e 1, o número é em ponto flutuante. Entretanto, o algoritmo nativo do compilador não apresenta uma distribuição aleatória uniforme para aplicações críticas. Seguindo o trabalho de Makoto Matsumoto and Takuji Nishimura, que desenvolveram o algorimo Mersenne Twister (mais informações podem ser obtidas em en.wikipedia.org/wiki/Mersenne_twister), a Byte Factory substituiu, para a função Random dos usuários, para seguir esta implementação mais moderna. Logo, a mesma declaração terá resultados mais uniformes:
Function Random:double;
Nem é necessário inicializar as sementes, pois o AICS o faz logo na inicialização do sistema.

Manipulação de XML expandida

03/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota é considerada técnica para desenvolvimento.
O AICS possui a função ObtemTag (veja no help do editor sua declaração completa) que permite obter o conteúdo dentro dos comandos de início e fim da Tag (semelhante a códigos html). Na versão mais recente do AICS, este comando obtém os dados mesmo que o tag seja com atributos dentro da abertura.
Os atributos na abertura do Tag são muito comuns em arquivos XML mais complexos. Da mesma forma, agora visando estes atributos, a BF criou uma nova função específica para a extração deles com a seguinte sintaxe:
function ObtemParTag(Tag, Param, Texto:string):string Muito semelhante à ObtemTag, com a chamada adicional indicando qual o parâmetro que deseja retornar. Esta função e a ObtemTag expandida foram incorporadas ao AICS e todas as suas vertentes em Web e CGIs. Além da expansão, foram otimizadas para ficarem mais rápidas. O impacto do ganho de velocidade pode ser sentido em ganhos de frações de segundo na montagem de relatórios editados pelos usuários, por exemplo.

Rotinas para codificação de URL publicadas

01/09/2009 em CENTRO DE INFORMAÇÕES

O AICS está cada vez mais sendo utilizado como ferramenta central na gestão de informações pela internet. A principal vantagem é sua fantástica integração com uniformidade nas regras de negócios e desenvolvimento integrado com o sistema desktop.
Visando melhorar os sites que utilizam Ajax + AICS, publicamos 2 funções bem úteis que permitem transpassar qualquer problema de código de página entre o navegador e o servidor:
function UrlEncode(DecodedStr: String; SinasDeMais: Boolean): String;
function UrlDecode(EncodedStr: String): String;
Além disso, no ServAICS, foi criada a função alert_aics que, antes de mostrar uma mensagem, a decodifica e deixa sem o possível marcador de erro NOK. O objetivo é deixá-la mais amigável apenas. Esta função pode ser utilizada no lugar da alert convencional do JavScript.

Nova função para obter cursor em formato de tags

01/09/2009 em CENTRO DE INFORMAÇÕES

Nota técnica avançada.
Com esta função, será possível preparar dados para envio por meio eletrônico, armazenagem com posterior aplicação e o que mais a realidade necessitar.
Sintaxe:
function CursorToTags(CursorName:string):String Onde, CursorName é o nome do cursor que deve ser exportado O resultado será o conteúdo formatado como tags XML ou HTML.

Função para Transferência de parâmetros

01/09/2009 em CENTRO DE INFORMAÇÕES

Esta nota pode ser considerada puramente técnica por alguns usuários do sistema. Além disso, é importante para usuários que utilizem scripts em rotinas "web".
Quando ocorre um post sobre o serviço web, dependendo da ação, os parâmetros já são transferidos para a tabela indicada.
Por exemplo, uma ação "tabsave" transfere os dados para a tabela indicada no parâmetro "tab".
Entretanto, se a rotina precisar transferir os parâmetros para outros comandos SQL (indo desde comandos de seleção a de atualização), isso teria que ser feito linha a linha.
Visando ganhar tempo e velocidade, publicamos uma função que irá passar os parâmetros do formulário para um cursor qualquer, sua declaração é:
Procedure SetContentFromWebFields(NomeCursor:String)
Onde NomeCursor é o nome que foi dado numa declaração de comando do tipo TablePrepareSql. Após este comando, você ainda poderá manipular livremente os atributos antes de enviá-lo ao servidor.

Informação importante sobre o processamento de DFMs

11/12/2008 em CENTRO DE INFORMAÇÕES

A generalização do processador de DFMs adicionou uma restrição aos nomes dos objetos quando estes forem objetos de formulário, como previsto anteriormente.
Logo, os nomes devem começar com "TForm" para serem entendidos como objetos de formulários. Qualquer outra nomenclatura irá seguir a nova regra que permite criar quaisquer outros objetos em qualquer posição das telas nativas ou do usuário.

Incríveis ferramentas de migração e interface

11/12/2008 em CENTRO DE INFORMAÇÕES

Apresentamos um roteiro completo de processos auxiliados visando migração de dados e facilitando enormemente os trabalhos de personalização do BF AICS. Aplique estas informações em projetos atuais ou em novos, sem distinção.
Por que migrar? O BF AICS permite uma transparência muito maior nos projetos empresariais. Tudo que é desenvolvido sobre ele é automaticamente documentado e aberto. É como se as regras fossem sempre em Código Aberto.
Como um fator adicional, os desenvolvimentos sobre o sistema poderão usufruir do ganho de serem praticamente independentes do Banco de dados e da interface de dados. O BF AICS expõe uma classe de objetos única que é traduzida em objetos de dados ADO, DBExpress ou a classes de acesso direto aos Bancos de Dados. Por isso mesmo, os desenvolvimentos tendem a ser com produtos mais rápidos e mais maleáveis.
O núcleo padrão do BF AICS possui diversos módulos com regras padronizadas que permitem não sair da estaca zero. Isso garante robustez e velocidade de convergência na solução. O Centro de Informações permite cadastramento de estruturas que geram as estruturas de dados no servidor de dados, telas de manipulação e edição, pesquisas, relacionamentos com outras estruturas, controle de direitos, descrições em 3 idiomas, relatórios padronizadas e personalizados além de análises gráficas.
Elementos da Aplicação Uma aplicação que será migrada é composta de bases de informação, interfaces com o usuário (telas, relatórios, consultas etc) e regras de negócios. Cada um destes itens pode ser migrado de forma independente.
Bases Será importante que as tabelas estejam já inseridas na base de dados. Para fazer isso, utilize qualquer opção disponível. Como exemplo, exporte os dados originais em formato DBF ou DB (do Paradox). Instale na estação que irá efetuar a importação, o BDE (Borland Database Engine) – que pode ser baixado de:
http://shop.aics.com.Br/ftp/BdeInstall.zip No AICS, acesse o menu Atualizar/Manipular dados do Servidor e ative a aba Migração de bases.
Clique no botão Selecionar as bases que serão migradas e selecione até mais do que uma tabela ao mesmo tempo. Ao clicar em Transferir dados para a Base Atual, o AICS irá criar tabelas com a mesma estrutura e copiar todos os dados para o banco SQL ativo.
Após a cópia, poderemos registrar a tabela no Centro de Informações. Clique na raiz, selecione o botão Novo e digite uma a uma os nomes das tabelas importadas. Especifique seus dados mínimos, como descrições e colunas chaves. Ao gravar, o AICS irá reconhecer que a tabela existe e cadastrará todas as colunas, já com seus tipos corretos, no Centro de Informações.
Se a tabela que foi importada não possuir chave de controle, você pode criar uma nova coluna, marcá-la como chave de controle e, ao gravar, o AICS irá perguntar se deseja preenchê-la (iniciá-la com valores seriais).
Se a tabela importada precisar ser específica por local, basta criar uma coluna NETCOD, gravar confirmando para ser preenchida e marcar que a informação é dependente de locais para que cada local tenha sua seqüência independente.
Interfaces A montagem das interfaces pode compreender:
· Expansão de novas colunas em estruturas existentes no AICS · Criação de novas telas com controles por grid ou por componentes de entrada dispostos em abas · Definição de tabelas mestre-detalhe, de configuração e abas de análises Em muitos casos, o cadastramento das colunas no Centro de Informações já é suficiente para uma interface pronta para uso. Para que uma tela migrada tenha a mesma seqüência, nomenclatura e dimensões de telas montadas externamente, o AICS possui um novo recurso que é a leitura e cadastramento de propriedades de DFMs. DFMs são arquivos descritores de objetos (normalmente, forms) compatíveis com ferramentas de programação da Borland. Um DFM pode ser obtido de:
· Fontes do programa que está sendo migrado · Extrator de DFMs (muitas vezes exageradamente chamados de decompiladores) que monta os objetos a partir do EXE que será migrado · Ferramentas que geram DFMs em geral Pois bem, tendo um DFM, após já ter a estrutura cadastrada no Centro de Informações, clique com o botão direito do mouse na estrutura cadastrada e selecione Auto cadastramento por DFM externo.
Importante destacar que esta rotina não é 100% correta, ela pode não encontrar os objetos de descrição corretos. Logo, revise-os após a importação para perfeita importação. Entretanto, as abas, dimensões de tela e ordem são importadas com alta fidelidade. Outro destaque importante é que o DFM deverá estar EM MODO TEXTO. Para que um DFM esteja em modo texto, por exemplo no Delphi, clique com o direito no form desejado e ative Text DFM.
Uma outra opção muito interessante é a importação direta do DFM. Este recurso foi expandido nas versões 2009 do AICS incluindo um processador mais inteligente e ferramentas de declaração automáticas.
Vamos exemplificar no caso acima. Após importar uma tabela nova, vamos criar uma tela que seja o espelho de uma original. Para isso, por exemplo, num evento de botão do cadastro (poderia ser em qualquer outra tabela ou mesmo no evento Entrar da própria tabela importada), crie um discriminador de DFM na forma de TAG:
Begin <-- cole o seu DFM aqui!!! --> end;
Agora, abaixo do end; sem apagar o que estava no clipboard, clique com o botão direito e selecione Colar variáveis do DFM.
Esta opção irá declarar todos os objetos presentes no trecho de objetos que foram colados acima. O novo processador de DFMs do AICS irá ignorar muitas declarações não suportadas ou redundantes (por exemplo, atributos que sejam nativos dos objetos).
Entretanto, o grande ganho deste tipo de migração é a facilidade de manipulação. Nada impede, por exemplo, que o trecho do DFM seja copiado do AICS e colado num Delphi (mesmo antigo), manipulado visualmente ou alterado, e retorne ao AICS seguindo o procedimento acima.
Relatórios Os objetos de relatório podem agora ser migrados nativamente e usufruir das ferramentas de edição do AICS. Para isso, ao invés de executar o comando de preview do objeto de relatório TquickRep, utilize a função específica para isso:
Procedure PreviewReport(Rep:TQuickRep;Destino:integer;Titulo:String)
Onde, Rep é o objeto que foi criado no DFM, Destino segue a regra do AICS (1, vídeo, 2 – impressora etc) e Titulo é o título do relatório para o nome da janela aberta.
Regras As regras devem ser migradas baseando-se no controle de eventos do AICS ou dos próprios objetos importados. A única adaptação da sintaxe é na declaração de eventos. Quando os eventos forem associados a rotinas, deve-se precedê-los de @, por exemplo:
OnClick = @BotProcuraClick E a declaração do evento deve utilizar objetos nativos, assim:
Procedure BotProcuraClick(Sender: DelphiTObject);

Leia, por favor

Nosso website utiliza cookies para facilitar a navegação. Ao continuar o acesso, você aceita essa política automaticamente.