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.
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.
O AICS possui o ambiente de manipulações de informações mais simples
e poderoso da atualidade. O seu conceito facilita e padroniza as principais
atividades do dia-a-dia de nossas empresas.
No esforço de deixar ainda mais transparente o conjunto de ferramentas
do AICS, a BF está embutindo um controle em Javascript interno ao
ServAICS e WebAICS que permite controlar, na forma de portal, qualquer
nível de suas informações e consultas. Assim:
- Ao navegar por uma informação, o AICS gerará um formulário de pesquisas
com os mesmos campos definidos no Centro de Informações do AICS.
- Abaixo do formulário, um botão que atualiza a pesquisa e outros que
podem aplicar o filtro das pesquisas em vistas definidas sobre a tabela
principal.
- Nos campos de entrada de data, adicionamos um calendário no qual
uma data poderá ser selecionada visualmente.
- Quando houver informação conectada (ex.: No comercial, pode-se
selecionar o Cadastro do cliente), o AICS (a partir da configuração da
tabela de relacionamentos) abrirá um botão de pesquisa que recairá
sobre a navegação e retornará com os dados para o form principal.
Enfim, um conjunto de funções avançadas que, SEM UMA LINHA DE
CÓDIGO, deixará o trabalho de manipular suas informações muito mais
poderosa, sem restrições visuais, sem falhas de navegação (estamos
usando métodos semelhantes ao AJAX).
Todos estes recursos já são válidos para todas as bases de dados
anteriores do AICS!
O objetivo desta função é permitir o uso dos SQLs padrões do AICS
ou os elaborados pelo usuário no Centro de Informações de uma forma
padronizada.
Sua sintaxe é:
Function BuildSQL(Tabela,NetLocal,Filtros:String;ComOrderBy,ComPai:boolean;APartirDe,Retornar:longint;ComJoin:Boolean):String
Onde,
Tabela -> Nome da tabela ou estrutura que contém o resultado
NetLocal -> Código do local
Filtros -> Sequência de filtros que devem ser aplicados ao SQL, devem ser na notação CAMPO=VALOR e separados por ;
ComOrderBy -> Se adiciona ordenação
ComPai -> Se inclui tabela pai na chamada (casos de master-detail)
APartirDe -> Posição inicial do resultado
Retornar -> Nr de retornos desejados
ComJoin -> Se adiciona ligações, mantenha sempre False pois não é necessário por enquanto