quarta-feira, 21 de março de 2012

Dicas de Genexus


Bom, achei isso ai no bloco de notas, são minhas anotações dos primeiros dias utilizando Genexus.

Atalhos Mais Usados
  • CTRL+K = define atributo como chave
  • CTRL+D = define atributo Descritor, maior carga semântica, utilizado em filtros etc
  • CTRL+L = insere novo nível
  • F4 para ver propriedades do objeto selecionado
  • CTRL+O = abrir/buscar objetos
  • CTRL+A = buscar atributo
  • F12 = abrir um objeto selecionado ou que o marcador esteja
  • F5 = Run Developer Menu
  • CTRL + Q = comentar código
  • CTRL + SHIFT + Q = descomentar código

1 Como criar índice de usuário?
  1. Acesse a tabela que deseja criar o índice
  2. Na parte de baixo, selecione Indexes
  3. Clique botão direito e selecione Add Index
  4. Botão direito no novo índice e adicione os atributos

2 Como criar um domínio diretamente em uma transaction?

Basta colocar nome= na frente do tipo de dados.
  1. Nome= Character(20)
  2. Id = Numeric(4.0)
3 Como resolver o Erro: No aplications found. Em Smart Devices?
  1. Criar um Dashboard e adicionar um Item para invocar a Work With que quer executar.
  2. Altere as propriedades do Item: descrição, imagem...
4 Como configurar ADS no Android, colocar seu ID Publisher?
  1. Acesse http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Ads+%28Advertising%29,
  2. Siga os passos descritos no site.
5 Como criar/congelar uma versão da KB?
  1. Abrir Menu View->Versions
  2. Clique botão direito e selecione Freeze (congelar)
  3. Dê um nome, de preferência com a Data ou algum sequencial.
6 Como criar uma nova base de dados (limpa) com objetivo de manter a versão da antiga congelada também?
  1. Em Knowledge base navigator->Preferences->(DataStore do seu Environment)->Edit Connection
  2. De outro nome para o banco de dados e clique em Create DataBase
  3. Menu Build->Create Database Tables
7 Quando as alterações do CSS não estiverem fazendo efeito na aplicação, como resolver?
  1. Build all: o Gx copia algumas coisas do tema dentro da app, não adianta alterar os estilos apenas, precisa gerar novamente.
8 Como ordenar um for Each?
  1. Crescente: For Each Order Campo1, Campo 2 ... EndFor
  2. Decrescente: For Each Order (Campo1), (Campo 2) ... EndFor
9 Como saber onde um atributo ou objeto qualquer é utilizado?
  1. Para buscar o atributo, atalho CTRL+O, abra o que deseja analisar.
  2. Clique botão direito mouse sobre a aba (o nome do objeto) e selecione References (No GX9 era Cross ou algo assim)
10 Voltar versão de um objeto?
  1. Botão direito nele (aba com nome...) e selecione history, poderá comparar versões e voltar para determinada data...
11 Como ver a navegação de um procedimento com for each, saber quais tabelas do banco serão navegadas?
  1. Botão direito nele (aba com nome...) e selecione View Navigation.
12 Como evitar um Break ao ter laços aninhados que tem a mesma tabela base?
  1. Crie uma Sub Rotina: Sub 'Nome Rotina' ...coloque aqui o laço aninhado (For Each)... EndSub
  2. Chame essa rotina: Do 'Nome Rotina'  
  3. Obs.: Crie sempre as sub rotinas no final do Procedimento, abaixo de onde está usando...
13 Como colocar Condições em Regras/Condições?
  1. Em Regras (Rules) use If: Par1 = &Par1 If Insert;
  2. Em Condições, use When: Par1 = &Par1 When Not &Par1.IsEmpty();
14 Como abrir uma popUp de seleção em uma grid?
  1. Primeiro será necessário criar sua tela de pesquisa.
  2. Importante: Rules -> Parm -> Parâmetros precisam ser InOut!
  3. Na tela, add rule: Prompt(NomeTelaSelect, CampoChaveGridSubNivel);
15 Como fazer uma variável aceitar receber valor em uma Transaction?
  1. Utilize o Accept(&variavel); nas Rules
16 Problema: campo numérico no banco com alguns valores NULL, você quer fazer um foreach ou somar ou trabalhar apenas com os dados dos registros onde este campo é NULL, você já tentou utilizar isEmpty() e também  = Null(campo) e não funcionou? Passei por isso, achei  a solução no método de testes/erros/acertos... usando a função isNull deu certo, conforme abaixo:
  1. &Horas = SUM(Horas, isNull(CampoCodigoXXX))

17 Como configurar o Genexus pra pegar licenças na rede? Certo dia na empresa fiquei sem licença pra trabalhar, outro dia acabei vendo um erro ao reorganizar a base de dados... tudo questão de escolher uma máquina na rede com as licenças disponíveis, abaixo o erro que me ocorreu e na sequencia a solução.

error: GeneXus .NET Generator:
Error starting remote protection, using mgtsrv04 server:
Not authorized
error: Error in reorganization
  1. Vá até a pasta onde o executável do Genexus está (clique botão direito sobre o atalho e selecione "Abrir local do Arquivo"
  2. Procure um arquivo chamado "GxLMgr" que é o Gerenciador de Licenças do Gx e abra ele
  3. Selecione a máquina na rede, pode verificar se todas as licenças da máquina já estão em uso, se não estiverem é só voltar para o Genexus (no caso de erro semelhante ao meu), ou fechar e abrir de novo o GX que ele já vai pegar certinho o servidor de licenças agora.
  4. Obs.: No caso do erro acima precisa licença para o gerador, não para o Gx, são coisas diferentes.
18 Como fazer para poder editar registros diretamente em uma grid que está em uma web panel?
  1. Precisa criar variáveis baseadas nos atributos que se deseja atualizar
  2. Adicione as variáveis na grid
  3. Colocar a propriedade Read Only = No nessas variáveis -> colunas da grid (vem default)
  4. Coloque um botão com evento de percorrer as linhas da grid e atualizar os registros
  5. O evento do botão vai usar For Each Line In GrdDados
19 Como fazer que ao fechar uma popup a página de baixo/que chamou seja atualizada?
  1. Ao i nvés de chamar tela.PopUp() usar uma variável Window
&Window.Object = HSGP073.Create(&DemCodigo, SolCodigo)
&Window.Autoresize = True
&Window.Open()
Refresh

6 comentários:

  1. bom bom.
    Estou comerçando a usar. Vc teria algum material didático? apostila, livro, algo q eu pudesse estudar melhor?

    ResponderExcluir
  2. bom bom.
    Estou comerçando a usar. Vc teria algum material didático? apostila, livro, algo q eu pudesse estudar melhor?

    ResponderExcluir
  3. First... Obrigado pelo comentário Eduardo!

    Olá Martonio!

    O Genexus possui usuários em todo o mundo, mas não em grande quantidade, logo não há tanto material quanto de outras ferramentas mais utilizadas... Eu acho que pra começar seria interessante você visitar a Wiki da GxT e criar uma conta no gxtechnical:

    http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Wiki+Home,

    Também tem alguns blogs e grupos de e-mail como o Artech University que estou participando em virtude de participar do Smart Challenge:

    http://genexusuniversity.blogspot.com.br/

    Mais alguns tutoriais no youtube:

    http://www.youtube.com/user/gxsoft?feature=watch

    Além do Genexus Training:

    http://training.genexus.com/

    Bom, no final das contas até que existe bastante material sim, mas é preciso procurar.

    Abs

    ResponderExcluir
  4. Bolívar, parabéns pelo seu post. Preciso integrar minha aplicacao em Genexus com um código php. Você poderia me orientar como fazer? Obrigada.

    ResponderExcluir
  5. Olá! Obrigado!

    Referente a Genexus com PHP acredito que seja bastante complicado, pois o PHP é interpretado no servidor e se colocar no HTML do Genexus ele será excluído.

    O que poderia ser feito é criar as páginas PHP e chamar elas via JavaScript.

    O melhor seria você refazer o código PHP no Genexus, posta ai o que você precisa, talvez eu possa te ajudar.

    ResponderExcluir