ano V | nº 47 | abr/mai 2005 | Publicação gratuita, dirigida aos assinantes do eUpdate e do PSE Data Access América Latina.


 

Leia nesta edição:

NOTÍCIAS:
Participe do SYNERGY 2005 CONNECT!
Tem início o processo de modernização do TECDAB
Artigos cadastrados e atualizados em abril na seção Knowledge Base, do site 4developers
Comandos cadastrados e atualizados em abril na seção Developer Library, do site 4developers
Produtos atualizados em abril na seção Downloads, do site 4developers

DICA TÉCNICA:
Reread, Lock & companhia: usar ou não usar em aplicações OOP? - parte 2

AGENDA TECDAB:
Cursos de certificação TECDAB - maio e junho de 2005

VOCÊ SABIA?
Data Access Worldwide tem novo site institucional
 
Opções de pesquisa e cadastro
 

 
 

Participe do SYNERGY 2005 CONNECT!

 

Você está convidado a participar do SYNERGY 2005 CONNECT, a conferência mundial promovida pela Data Access Corporation para todos os seus clientes e parceiros interessados em atualizar-se com as últimas novidades dos nossos produtos e conhecer técnicas avançadas de utilização!

Serão 3 dias de muita informação e troca de experiências com desenvolvedores profissionais de todo mundo, no Sonesta Beach Resort, em Key Biscayne, um lugar incrível situado no estado da Flórida, EUA, entre os dias 6 a 8 de junho. Conheça a agenda do evento a seguir:

6 de junho - segunda-feira
Welcome to Synergy 2005!
Connecting with the Latest Visual DataFlex
Advances in Visual DataFlex´s SQL Connectivity
Delivering Dynamic Web Content using Electos 2.0
Techniques for Connecting Visual DataFlex Applications with SQL Databases
Taking Web Applications to the Limit
Communication Between Dutch Notaries and Banks through Web Services
Connecting to Business Intelligence with Dynamic AI
Dynamic AI - Building Business Intelligence, Fast & Easy

7 de junho - terça-feira
New Techniques for Building Web Applications
Crystal Reports XI - Business Object´s New Product Structure
SQL Based Reporting with Crystal Reports
CrossMerge Connects Your Data Sources
Database Table Types and Programming Styles
Pervasive.SQL version 9 - What´s New
Understanding and Resolving Blocking and Deadlock Issues
Integrating Data into Electos Websites

8 de junho - quarta-feira
Building Complete Application Deployment Installations
Application Deployment and Management in the Real World
Usint Winprint with Embedded SQL
Extending Existing Applications to the Web
Understanding and Using Structs and Arrays
Succeeding as a Software Developer
Data Access Worldwide Product Roadmap

 

Além dos 3 dias de evento, você também poderá participar das sessões de treinamento pré e pós-conferência, nos dias 5 e 9 de junho, gratuitamente*! Veja a seguir os temas abordados nestas sessões especiais:

PRÉ-CONFERÊNCIA: 5 de junho - domingo, das 10 às 17 horas
Advanced Reporting Techniques using Crystal Reports
Electos Quickstart
Applying New Technologies to Character Mode Applications

PÓS-CONFERÊNCIA: 9 de junho - quinta-feira, das 10 às 17 horas
Introducing to Web Services
Dynamic AI
Updating to New Technologies in Visual DataFlex 11

* Taxa de US$ 50 por dia para almoço e coffee-breaks. Necessário levar notebook próprio com tecnologia wireless configurada para participação nas sessões de hands-on.

 

VOCÊ NÃO PODE FICAR FORA DESSA, PARTICIPE!!!
Informações detalhadas sobre preços e inscrições podem ser obtidas pelo telefone (11) 3262-2000.

Visite também o site oficial do evento em www.DataAccess.com/Synergy.

 

voltar ao menu
 

 
 

Tem início o processo de modernização do TECDAB

 

O Technical Education Center Data Access América Latina - TECDAB - acaba de receber equipamentos de última geração como parte do processo de reestruturação pelo qual está passando.

Além das máquinas, o centro de treinamento contará também, em breve, com novos cursos e material didático totalmente novo, tudo sob a supervisão do departamento de Suporte Técnico.

A primeira turma a usufruir dos novos equipamentos aconteceu entre os dias 25 a 29 de abril, onde profissionais de regiões diversas do Brasil aprenderam técnicas e as melhores práticas da programação orientada a objetos no curso DataFlex 3.2 OOP.

Participe você também dos cursos TECDAB e seja um profissional certificado!

 

voltar ao menu
 

 
 

Artigos cadastrados e atualizados na seção Knowledge Base,
do site 4developers

 

Conheça a seguir os artigos cadastrados e atualizados durante o mês de abril
(clique sobre os títulos para acessá-los diretamente):

 ARTIGOS NOVOS

 TIPO: Visual DataFlex (Aplicações Windows)
Artigo Versão Título  
1441 n/a Impedindo a abertura de uma View dependendo de uma condição
1438 10.1  Mensagem de Erro: "Entrada não existe no Filelist" status 74 após converter aplicação VDF7 para 10.1
1436 n/a Criando um SplashScreenPanel para a aplicação

 TIPO: Base de dados (DataFlex)
Artigo Versão Título  
1439 n/a Mensagem de Erro: "Data file not compatible" status 4134 ao tentar abrir arquivo de dados

 TIPO: Linguagem (DataFlex)
Artigo Versão Título  
1435 n/a Como executar o Forward de procedures com valor de retorno

 TIPO: Pervasive.SQL
Artigo Versão Título  
1440 V8.6  Quais as limitações do Pervasive.SQL com relação à índices?

 TIPO: DataFlex Connectivity Kit for MS SQL Server
Artigo Versão Título  
1437 2.2.0.22  Error 12289: General error. 22008 (0)--[Microsoft][ODBC SQL Server Driver]Datetime field overflow [ARQUIVO]

LEGENDA:
CONTEÚDO PÚBLICO: pode ser acessado livremente
CONTEÚDO RESTRITO: exclusivo para assinantes do PSE - Pacote de Serviços Exclusivos

 

 ARTIGOS ATUALIZADOS

 TIPO: Visual DataFlex (Aplicações Windows)
Artigo Versão Título  
1434 10.1  Migrando aplicações do VDF 7 para 10.1
1171 n/a Como mudar a linguagem padrão depois da instalação
1169 n/a Criando um programa Sentinel alternativo
850 n/a Permitindo que o usuário interrompa um processamento
790 Como usar o Status Panel para um processamento
713 Criando auto-incremento a partir de arquivos de sistema
463 n/a Colocando uma coluna da dbGrid em Shadow

 TIPO: Visual DataFlex (Aplicações Web)/WebApp Product Suite
Artigo Versão Título  
1023 Como alterar a palavra gerada quando a opção Blank está marcada

 TIPO: DataFlex Connectivity Kit for MS SQL Server
Artigo Versão Título  
1394 n/a Error 12289: General error. 42S01 (2714)--[Microsoft][ODBC SQL Server Driver][SQL Server] There is alread...

LEGENDA:
CONTEÚDO PÚBLICO: pode ser acessado livremente
CONTEÚDO RESTRITO: exclusivo para assinantes do PSE - Pacote de Serviços Exclusivos

 

voltar ao menu
 

 
 

Comandos cadastrados e atualizados na seção Developer Library,
do site 4developers

 

Abaixo, seguem listados os comandos cadastrados e atualizados no mês de abril:

  ENTRADAS NOVAS
Código Data Título  
363 28/04 UBigInt
362 14/04 Put_String

  Entradas atualizadas
Código Data Título  
362 27/04 Put_String
361 28/04 Get_Cursor_Visible
360 28/04 System
353 28/04 UShort
332 14/04 Put
279 14/04 Offset_Of_Field
256 28/04 Integer
230 28/04 Increment
215 28/04 If
213 14/04 GetBuff
212 14/04 GetBuff_String
190 28/04 Handle
153 14/04 Field
128 14/04 ZeroType
123 14/04 End_Type
112 14/04 Size_Of_Field
65 23/04 Sysdate4
53 14/04 Type
34 14/04 Zerostring
17 28/04 BigInt

LEGENDA:
CONTEÚDO RESTRITO: exclusivo para assinantes do PSE - Pacote de Serviços Exclusivos

 

voltar ao menu
 

 
 

Produtos cadastrados e atualizados na seção Downloads,
do site 4developers

 

Abaixo, seguem listados os produtos atualizados no mês de abril:

  Artigos atualizados
Código Data Alteração Título Versão  
49 11/04 Visual DataFlex 11.0 Studio Beta 1 11.0.72.1 

LEGENDA:
CONTEÚDO PÚBLICO: pode ser acessado livremente

 

voltar ao menu
 

 

 
 

DICA TÉCNICA:
Reread, Lock & companhia:
usar ou não usar em aplicações OOP? - parte 2

 

Na edição anterior do eUpdate, desmistificamos alguns mitos relativos à utilização dos comandos que acessam o buffer de registro: Reread, Lock, Saverecord, etc.

Vimos também uma situação onde a utilização destes comandos não é aconselhável.

Nesta segunda e última parte do artigo, veremos dois tópicos práticos. Primeiro, uma situação real do dia-a-dia onde a utilização destes comandos é preferível a utilizar os dicionários de dados.

Para terminar, mostraremos como você pode alterar seu código que faz uso destes comandos de forma a tornar a execução muito mais rápida em ambientes multi-usuário.

 

Um caso típico de utilização

Existem situações típicas onde os comandos de acesso ao buffer de registro são úteis. Por exemplo, suponha que devido a uma nova necessidade dos usuários, foi criado um campo (até então não existente) no arquivo de clientes: FL_ATIVO.

Você configurou este campo como Checkbox no dicionário de dados e os valores possíveis são “S” ou “N”.

Evidentemente, todos os registros existentes no momento ficarão inválidos, pois este campo estará em branco.

Você pode criar um programa de acerto sem nenhuma interface com o usuário que irá varrer toda a base de clientes e colocar o valor “N” para este campo.

Nesta situação, não há motivo para criar uma View dentro do sistema ou um programa usando os dicionários de dados, pois este processo será executado uma única vez e depois poderá ser descartado.

No Visual DataFlex 10.1, um programa deste tipo pode ser criado usando a opção Basic Application da caixa de diálogo Create New...:

Um programa de ajuste deste tipo teria a seguinte “cara”:

 

Uma pequena alteração: uma grande melhora

Como vimos, os comandos de acesso ao buffer de registro não são proibidos em aplicações OOP. Ao contrário, há situações onde eles são indicados em lugar de usar os DDOs.

Na maior parte das operações, entretanto, você pode ter um ganho significativo de performance se fizer uma pequena alteração no seu código fonte.

Por exemplo, suponha que, em um botão de uma View, você criou um código usando os comandos abaixo para varrer todos os títulos de um determinado cliente e acumular o total no campo Clientes.Tit_Aberto:

Procedure OnClick
  // Varre todos os títulos em aberto do cliente posicionado
  // e acumula o total no vampo Clientes.Tit_Aberto

  Clear Clientes
  Move (Current_Record(Clientes_DD(Self))) To Clientes.Recnum
  Find Eq Clientes By Recnum
  Clear Titulos
  Move Clientes.Codigo To Titulos.Cod_Cliente
  Find Ge Titulos By Index.2
  While (Found And Titulos.Cod_Cliente = Clientes.Codigo)
    If (Titulos.Status = “A”)) Begin // Apenas títulos abertos
      Reread Clientes
      Add Titulos.Valor To Clientes.Tit_Aberto
      Saverecord Clientes
      Unlock
    End
    Find Gt Titulos By Index.2
  Loop
End_Procedure // OnClick

O maior problema deste processamento é o grande gargalo que o comando Reread pode se tornar no sistema.

Como vimos na edição anterior, o comando Reread não trava apenas os arquivos especificados em sua linha de comando, mas todos os que estiverem abertos em modo normal na aplicação. Entenda que por aplicação, estamos nos referindo ao programa principal (.SRC) e não à tela.

Sendo assim, se tivermos 1000 arquivos abertos no programa, estes 1000 arquivos serão travados a cada comando Reread executado. Há dois efeitos de degradação de performance neste caso:

1) O primeiro é para quem está executando este processamento, o qual será mais lento, pois tem que conseguir travar 1000 arquivos e não apenas 1. Pode haver um delay adicional se outro usuário estiver fazendo uma gravação ou exclusão em um destes 1000 arquivos.

2) O segundo efeito é para os outros usuários que estiverem trabalhando no sistema, que sentirão uma evidente lentidão ao tentar gravar ou excluir registros.

Como este código não faz uso de nenhuma validação do dicionário de dados, uma alternativa muito simples e que resultará em um ganho absurdo de performance é criar um objeto de dicionário de dados “limpo” apenas para este processamento. Veja o código alterado abaixo:

Object Clientes_BPO Is A DataDictionary
  Set Main_File To Clientes.File_Number
End_Object

Procedure OnClick
  // Varre todos os títulos em aberto do cliente posicionado
  // e acumula o total no vampo Clientes.Tit_Aberto

  Send Clear Of Clientes_BPO
  Send Find_By_Recnum Of Clientes_BPO Clientes.File_Number ;
      (Current_Record(Clientes_DD(Self)))
  Clear Titulos
  Move Clientes.Codigo To Titulos.Cod_Cliente
  Find Ge Titulos By Index.2
  While (Found And Titulos.Cod_Cliente = Clientes.Codigo)
    If (Titulos.Status = “A”)) Begin // Apenas títulos abertos
      Set Field_Changed_Value Of Clientes_BPO Field ;
          Clientes.Tit_Aberto To (Clientes.Tit_Aberto + Titulos.Valor)
      Send Request_Save Of Clientes_BPO
    End
    Find Gt Titulos By Index.2
  Loop
End_Procedure // OnClick

A principal diferença que resulta em ganho de performance neste código é que o dicionário de dados não irá travar todos os arquivos abertos na aplicação, mas apenas aqueles que estão na estrutura de DDOs e que são afetados pelo processo de gravação. Como em nosso código foi criado um dicionário de dados “limpo” para o arquivo de Clientes, ele é o único que será travado.

Note também que esta alteração parte do pressuposto que não existe nenhum outro processamento dentro do sistema que atualiza este campo do arquivo de clientes, caso contrário teríamos que fazer o acúmulo do valor dentro da procedure Update do DDO.

Evidentemente há várias outras formas mais aconselháveis de executar este processamento, como usar um BusinessProcess, mas com a dica acima, você poderá obter um grande ganho de performance com uma pequena alteração e, quando tiver tempo, reveja este código para usar um BusinessProcess, ou melhor ainda, usar as procedures Update e Backout do dicionário de dados do arquivo de títulos para manter o campo sempre atualizado, dispensando a execução de um processamento para isso.

 

Veja também

Sugerimos que você consulte o seguinte item para mais informações sobre os conceitos abortados nesta parte do artigo:

• Artigo nº 1138 do Knowledge Base 4developers (acesso restrito aos assinantes do PSE):
 Comandos de gravação deixam a aplicação OOP lenta

 

voltar ao menu
 

 

 
 

AGENDA TECDAB PARA MAIO e JUNHO DE 2005

Inscreva-se nos cursos de certificação oferecidos pelo TECDAB! Utilizando material totalmente em português, desenvolvido por técnicos e especialistas, os cursos abrangem as ferramentas de forma clara e objetiva, com recursos áudio-visuais e exemplos práticos para um aprendizado eficiente.

  MAIO
  Visual DataFlex - Desenvolvendo Aplicações Windows 16 a 20
  Visual DataFlex - Desenvolvendo Aplicações WEB 23 a 24

  JUNHO
  Visual DataFlex - Desenvolvendo Aplicações Windows
TURMA ESPECIAL EM VITÓRIA/ES
06 a 10
  Visual DataFlex - Desenvolvendo Aplicações WEB
TURMA ESPECIAL EM VITÓRIA/ES
13 a 14
  Visual DataFlex - Desenvolvendo Aplicações Windows 20 a 24
  Crystal Reports - Criando Relatórios Profissionais 28
  Crystal Reports - Módulo Avançado 29

 

Preço promocional e pagamento facilitado. CONSULTE-NOS!
Telefone (11) 3262-2000 - ramal 222 | tecdab@dataaccess.com.br.

 


Invista em você. Invista no seu futuro.
Seja um profissional certificado TECDAB!

 

voltar ao menu
 

 

 
 

VOCÊ SABIA?
Data Access Worldwide tem novo site institucional

 

Nesta semana será lançado o novo site da Data Access Worldwide, no endereço www.DataAccess.com.

Enquanto as informações permanecem as mesmas, os times de marketing e desenvolvimento da matriz nos EUA esperam que o design seja capaz de oferecer uma experiência nova e mais dinâmica aos seus visitantes.

Acesse www.DataAccess.com e conheça o novo site da Data Access Worldwide, que foi totalmente desenvolvido e publicado com o Electos CMS - nossa ferramenta de desenvolvimento e gerenciamento de conteúdo para web sites!

 

voltar ao menu
 

Opções de cadastro e pesquisa:
   
Próxima edição
   
Edição anterior
   
 
   
   
Alterar endereço de recebimento
   
Cancelar Assinatura
   
   

 

Av. Paulista, 1776 - 21º andar - CEP 01310-921 - São Paulo - SP
Tel: (55 11) 3262-2000 • Fax: (55 11) 3284-1579
www.DataAccess.com.brwww.4developers.com.brwww.VisualDataFlex.comwww.Electos.com.br

© Copyright 2009, Data Access Corporation. ® Todos os direitos reservados.

As informações deste veículo foram produzidas conjuntamente pelos departamentos de
Marketing e Suporte Técnico da Data Access América Latina.