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.
A tabela utilizada nos módulos editoriais do AICS que define os
atributos gráficos dos textos é denominada ESTILOS. Esta tabela não
era padrão do AICS porque estava vinculada unicamente a estes módulos.
Para permitir a personalização visual das entradas dos dados (isto é, que
os atributos textuais possam ser controlados nos formulários do AICS),
adicionamos um link entre as colunas das tabelas do sistema e o estilo.
É como se pudéssemos formatar cada entrada de dados dos formulários
do AICS de acordo com as características gráficas desejadas. Este novo
atributo encontra-se no Centro de Informações, aba Opções de Apresentação.
Basta selecionar o nome do estilo (que está numa lista à direita) que a tela
criada automaticamente já se abrirá com o campo formatado seguindo
estas diretrizes.
Este novo recurso vale para entradas de dados e para entradas de dados
tipo RTF. Ainda não foi aplicado aos formulários pela Internet, mas o será
se os usuários assim o desejarem.
Um valioso recurso na implementação de acessos remotos por setores!
As regras de negócio ficam armazenadas nos eventos associados às tabelas
ou colunas. Entretanto, para fins de simplificações ou mesmo de segurança,
é comum e usual criar vistas para acessar os dados de forma indireta.
Por exemplo, podemos criar uma vista sobre o cadastro na qual ela
restrinja a visibilidade dos dados a partir do login ativo. Perfeitamente
simples isso, bastando aplicar :LOGIN em alguma parte da expressão
de seleção.
Entretanto, quando isso ocorre, as regras ficavam na tabela original,
isto é, as regras deveriam ser copiadas ou adaptadas à nova estrutura.
Mas, e se a nova estrutura for realmente apenas uma vista?
Pois bem, a versão mais recente do AICS, caso não haja NENHUMA
REGRA NA VISTA, aplicará as regras da tabela pai sobre ela. De tal
forma que as chamadas aos cursores devem seguir a nova regra
com o uso do nome DEFAULT, para que o cursor aceite ser dinâmico.
Caso haja alguma dúvida sobre isso, consulte o suporte técnico da BF,
mas reiteramos que este novo recurso simplifica extremamente o
projeto deste tipo de projeto, além de potencializá-lo ao mesmo tempo.
Toda vez que uma tabela é referenciada nas rotinas do usuário,
a chave de acesso é o nome do cursor definido ou o nome da
tabela ou vista principal. Estes nomes precisam estar definidos nas
instruções de execução de SQLs e de edição e leitura de dados.
Agora, podemos utilizar um nome fixo desta chave como DEFAULT.
Por exemplo:
Mostra('O valor do preço é ' + AsString('PEDIDOS','TOTAL'));
No exemplo, acima, definimos o nome genérico e o comando seria:
Mostra('O valor do preço é ' + AsString('DEFAULT','TOTAL'));
Sendo que esta chave assumirá o nome do cursor principal das
telas do AICS e do ServAICS. Quando este nome for executado
dentro de rotinas do sistema, ele retornará SYSTEM (que para
fins de dados, não tem nenhum signifcado, apenas em vistas e
tabelas diretas).
A rotina que gera códigos de barras em relatórios em geral foi revisada.
Sua sintaxe é (para recordar):
Procedure PaintBarCode(Elemento,Mensagem:string;Tipo,Largura,Altura,Aspecto:integer);
Onde o Tipo pode receber os números:
0 -> Code2_5_interleaved <-- Ex.: Barra de boletos de cobrança
1 -> Code2_5_industrial,
2 -> Code2_5_matrix,
3 -> Code39,
4 -> Code39Extended,
5 -> Code128A,
6 -> Code128B,
7 -> Code128C,
8 -> Code93,
9 -> Code93Extended,
10 -> CodeMSI,
11 -> CodePostNet,
12 -> CodeCodabar,
13 -> CodeEAN8,
14 -> CodeEAN13,
15 -> CodeUPC_A,
16 -> CodeUPC_E0,
17 -> CodeUPC_E1,
18 -> CodeUPC_Supp2, { UPC 2 digit supplemental }
19 -> CodeUPC_Supp5, { UPC 5 digit supplemental }
20 -> CodeEAN128A,
21 -> CodeEAN128B,
22 -> CodeEAN128C
Este procedimento pode ser aplicado a qualquer elemento gráficos de relatórios.
Dentro do Centro de Informações, temos uma definição da Expressão
que uma dada coluna possa seguir. Esta expressão pode ser um cálculo
utilizando os dados de outras colunas e pode apresentar funções.
Logo, é um caso de uma coluna que pode receber um valor e este
valor ser gravado na base (se for uma coluna física). Entretanto,
criamos uma regra na qual esta rotina executa uma determinada
rotina ao invés de fazer o cálculo da expressão internamente.
Por exemplo, uma tabela tem uma coluna denominada VALOR.
A função para calculá-la deve ser declarada assim (pode ser
no Evento Entrar da tabela mesmo):
Function AICS_Evaluate_VALOR(Parametro:Integer):boolean;
Se a função retornar falso, o cálculo pela expressão do cadastro
nem será feito, isto é, esta função pode ajustar normalmente o
valor da coluna VALOR utilizando quaisquer regras que desejar.
A tabela de vetores de datas (TABVETDATE) foi alterada com a
criação de 3 novas colunas (objetivo único de melhoria da performance
em operações de JOINs):
CODPRINC, CODSEC e NETCOD.
Sendo que estas colunas receberão, automaticamente, os valores de
acordo com a chave primária da tabela conectada. Por exemplo, se a
tabela CONECTADA for ANUNCIO, ela receberá o código do anúncio
em CODPRINC e o local em NETCOD. O calendário interno e todas
as atualizações já estão preparadas para este novo recurso.
Qualquer estrutura que apresente colunas do tipo "Vetor de datas" tem
a única restrição, devido a esta alteração, de que a chave primária não
poderá ter mais do que 3 colunas, incluindo o NETCOD, em sua
composição. Que, com certeza, não será empecilho na utilização deste
novo recurso.
Em suas regras de negócios, às vezes, uma certa quantidade necessita
de variações. Muitas vezes criamos as variações sobre a data e hora do
equipamento. Mas, quando precisamos gerar N valores variáveis muito
rapidamente, este recurso fica obsoleto.
Publicamos a função Random com a sintaxe:
Function Random:double
Sendo que o retorno dela é um número aleatório entre 0 e 1. Se precisar
de qualquer outra faixa, basta multplicar este resultado pela faixa desejada.
O AICS é apresentando em dois tipos de compilações: AICS.EXE para
bancos de dados conectáveis por ADO e AicsX.EXE para bancos de
dados conectáveis por dbExpress. Quando o AicsX é utilizado, os objetos
de bancos de dados "ADO" são mapeados nos objetos de bancos de
dados do dbExpress. Isto permite que todas as rotinas, internas e externas,
feitas dentro do AICS ou fora dele sejam transparentes a isso.
Entretanto, o ADO original tem algumas facilidades nativas à própria
interface. Por exemplo, fácil conexão a diversas outras estruturas, como
MDB e mesmo planilhas em Excel.
Quando o AicsX é utilizado, os objetos ADO ficavam inacessíveis.
Nesta atualização do sistema, a BF está publicando 3 novas classes
extremamente úteis, que são: RTADOConnection, RTADOQuery e
RTADoTable. Estas classes são as classes "reais" do ADO, tanto no
AICS baseado em ADO quanto no AICS baseado em dbExpress.
Isto é, se existirem scripts feitos utiizando estas classes com prefixo R,
estes objetos sempre serão mapeados nos objetos ADO originais. Muito
útil em rotinas de integrações etc.
A máquina de informações do AICS está sempre publicando novos
objetos visando dar ao usuário o maior conjunto de ferramentas de
informação.
Recentemente, o núcleo do AICS trocou o objeto da tabela em
memória. A classe TRxMemoryData passou a TJvMemoryData.
Caso uma versão nova cause um erro nesta classe, basta substituí-la
em seus scritps. Esta classe é muito pouco utilizada e o efeito
nem deve ser percebido pelos projetos em andamento.
O AICS permite se conectar a N bases de dados ao mesmo tempo, podendo integrar os dados destas fontes de informações num único local. Os usos vão desde B.I. a à importações/exportações automáticas, processamentos de mensagens em batch etc No envio de comandos ao servidor, quando for escolhida uma conexão que não a padrão, o AICS não incluirá comandos de ausência de lock automaticamente, permitindo executar comandos sem restrições.