segunda-feira, 30 de julho de 2012

Genexus SDT - Parte II

Bom pessoal, vamos dar continuidade a série Genexus SDT.

Na Parte I falamos a respeito da criação de objetos SDT. Hoje iremos realizar a inserção de valores dentro destes objetos criados, para isso precisaremos inserir variáveis e utilizar comandos para que os nossos valores sejam adicionados a estas variáveis.

Inserindo Valores no SDT

A inserção de valores em SDTs depende basicamente de como este objeto foi criado. Caso você deseje inserir "N" valores neste objeto precisaremos utilizar comandos para criar um novo bloco, e adicioná-lo à coleção. Neste exemplo utilizaremos a seguinte estrutura de SDT:

Genexus SDT


Note que existem 2 coleções neste objeto, a primeira permite incluir "N" notas fiscais, já a segunda coleção permite incluir "N" produtos para cada nota fiscal.

Então para inserirmos valores necessitaremos:

Em um objeto Procedure ou Web Panel, inserir as variáveis:

Genexus SDT

E após, incluir os valores:

Genexus SDT

ou então..

Genexus SDT

Caso o objeto SDT não possua coleção, não será necessário utilizar os métodos "new()" e "Add()".

Galera até aqui está tranquilo certo, nós já sabemos como criar SDTs e adicionar conteúdos a eles. No próximo post irei explicar como podemos trabalhar com SDT diretamente na Web Form, um ótimo meio de criar formulários.

terça-feira, 24 de julho de 2012

Genexus SDT - Parte I

Nestes próximos dias iremos falar um pouco sobre a utilização de SDTs. Como acredito que somente a teoria nos ajuda muito pouco para entender quando e como utilizar este tipo de dado, irei tentar explicar utilizando exemplos através do Genexus.

Irei aproveitar o exemplo padrão da Artech, tão utilizado em seus documentos e materiais de cursos, de Produtos e Notas Fiscais.

Criando um SDT

Podemos criar um SDT de duas maneiras, a partir de uma Transação ou realizando uma criação Manual, isso irá depender da utilidade que se dará para este SDT.

1º Criamos um novo objeto do tipo SDT;
2º Para criar a partir de uma transação, arrastamos a transação para dentro do SDT, assim os campos do SDT serão iguais ao da transação:

Genexus-SDT

2º Para criação manual, vamos inserindo os campos um a um, determinando seu nome e tipo de dado (character,numeric,etc):
Genexus-SDT


Obs. Podemos definir se este objeto SDT irá ser uma coleção ou conter alguma coleção. Como o próprio nome já diz as coleções servem para inserir mais de um registro. No nosso exemplo da Nota Fiscal, se utilizarmos o modo coleção, podemos gravar mais de uma nota fiscal no mesmo SDT, caso desejemos gravar somente uma Nota Fiscal, este SDT não será marcado como coleção.

domingo, 22 de julho de 2012

Remover variável GxRemove em transações

Ao trabalhar com Grids em transações, o Genexus insere automaticamente a opção de excluir linhas, por default na primeira coluna da esquerda.

Porém muitas vezes ao trabalhar com perfis de usuário, desejamos desabilitar esta opção.

Para isto é necessário inserir a seguinte regra na transação:

Error('Sem permissão') if delete and level(atributo do grid); 

Neste caso a mensagem de erro não irá aparecer para os usuários, portanto tanto faz qual seja, e a coluna de exclusão irá desaparecer da tela.

Erro ao utilizar WordDocument ou ExcelDocument - 80040154

Muitas vezes necessitamos ler ou criar documentos do Word ou Excel, para isso utilizamos o tipo de dado WordDocument ou ExcelDocument. Quando criamos um projeto novo ou efetuamos uma publicação de um projeto em um novo ambiente, podemos nos deparar com a seguinte mensagem de erro: 80040154.
Erro-80040154

Dependendo do tipo de dado utilizado no objeto (Word/Excel) este erro pode significar diferentes coisas.

Caso o erro seja ao utilizar o tipo de dado ExcelDocument, a solução mais provavel é realizar o dowload da biblioteca Jakarta, necessária para manejar planilhas do excel. Essa biblioteca esta disponível através da seguinte url:


Caso o erro seja ao utilizar o tipo de dados WordDocument, a solução mais provavel é bastante diferente.

No caso que eu presenciei, o erro acontecia ao publicar o projeto realizado em um ambiente de 32 bits, em um ambiente de 64 bits.

Logo, é necessário copiar a DLL GxOffice2.dll para a pasta C:\Windows\SysWOW64\

Após, executar o seguinte programa (comando): regsvr32.exe GxOffice2.dll

Erro-80040154

 Ao executar este comando, caso se realize com sucesso, irá aparecer a seguinte mensagem:
Erro-80040154

 E o problema estará resolvido, este comando regsvr32.exe serve para  registrar uma biblioteca de vínculo dinâmico (DLL) de 32 bits em uma versão de 64 bits do Windows.