367

Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

  • Upload
    trannhi

  • View
    227

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão
Page 2: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Adquirido por : Fabrício Moreira da Silva

Page 3: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Pensamentos

Este livro foi escrito com a finalidade de poder compartilhar alguns conhecimentos sobre o Sybase PowerBuilder adquiridos ao longo da minha vida profissional. Uns, com grande investimento financeiro, de estudos e paciência; outros, repassados por grandes profissionais que compartilham da mesma filosofia de vida.

O que importa nesta vida, mais do que ganhar sozinho, é ajudar os outros a vencer, mesmo que

isso signifique diminuir os nossos passos...

Celso S. Côrtes.

“Morder o fruto amargo e não cuspir mas avisar aos outros quanto é amargo,

cumprir o trato injusto e não falhar mas avisar aos outros quanto é injusto,

sofrer o esquema falso e não ceder mas avisar aos outros quanto é falso;

dizer também que são coisas mutáveis... E quando em muitos a noção pulsar

— do amargo e injusto e falso por mudar — então confiar à gente exausta o plano

de um mundo novo e muito mais humano.” Geir Campos

"Procure ser uma pessoa de valor, em vez de procurar ser alguém de sucesso"

Albert Einstein ! Celso S. Côrtes é brasileiro, carioca de Vila Isabel e atualmente reside na cidade de Niterói-RJ, onde, em todos os sentidos, se apaixonou.

... Niterói! Niterói! como és formosa!

Eu me glorio de dever-te o braço! Montanhas, várzeas, lagos, mares, ilhas,

Prolífica Natura, céu ridente, Léguas e léguas de prodígios tantos....

poema de Gonçalves de Magalhães

Foto : Museu de Arte Contemporânea (MAC) – Rio de Janeiro – Niterói - Projeto de : Oscar Niemeyer – 1994 1 Poema extraído do livro "Geir Campos - Antologia Poética", Léo Christiano Editorial Ltda. - Rio de Janeiro, 2003, pág. 89, organizada por Israel Pedrosa. 2 Pensamentos de Albert Einstein

Page 4: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico

PowerBuilder 9.0 Básico Celso S. Côrtes.

Sybase PowerBuilder é marca registrada da Sybase, Inc. Copyright © Todos os direitos reservados.

Adquirido por : Fabrício Moreira da Silva

Page 5: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico

Bibliografia : Getting Started – PowerBuilder 9DOCUMENT ID: 37772-01-0900-01 LAST REVISED: March 2003 Copyright © 1989-2003 by Sybase, Inc. All rights reserved. Capa : Gilberto Santana – [email protected] Projeto Gráfico e Composição: Celso S. Côrtes Revisão do texto:

Eduardo Olimpio Mota Fialho Endereço eletrônico :

http://www.pb9basico.net Email : [email protected] Autor :

Celso S. Côrtes – Analista de Sistemas Sênior – IBGE/DI/COADS – Supervisor de Pesquisas, Sistema Pesquisas Continuas Agropecuárias – www.pca.ibge.gov.br Usuário do Sybase PowerBuilder Enterprise desde 1993, versões PB4,PB5,PB6,PB7,PB8 e PB9. Desenvolvedor Java!,JavaScript!,VBScript!,ASP!,PHP! Criador e mantenedor do sítio na internet sobre Sybase PowerBuilder www.celso.cortes.nom.br, desde 1996. Email: [email protected]

Page 6: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Agradecimentos

Pessoas inovadoras que chamam a si a missão de desbravar novas tecnologias enfrentam sempre dois grandes desafios. O primeiro é intrínseco ao pioneirismo. Elas têm que acreditar em seus propósitos e correr os riscos e as incertezas que acompanham todas as inovações. O segundo desafio está em disseminar, nas suas áreas de atuação, uma nova cultura tecnológica que venha a se constituir no ambiente propício para a evolução profissional. Em conseqüência, cria-se um processo sinérgico onde há um crescimento cultural tanto das Empresas como das Comunidades com as quais elas interagem. Foi dentro deste espírito que surgiu a iniciativa de oferecer aos desenvolvedores brasileiros um livro em português para iniciantes sobre a ferramenta de desenvolvimento para MS Windows®, o Sybase PowerBuilder 9.0. Com esta edição, mais que simplesmente preencher uma lacuna existente na bibliografia em português de informática, está sendo dado um forte impulso para que se evolua no esforço comum de criar outras publicações sobre esta ótima ferramenta de desenvolvimento. Agradeço ao meu amigo, Maycon J. Oleczinski que muito tem me auxiliado tanto neste trabalho, quanto na hospedagem do sítio na internet, dirigido à comunidade de PowerBuilder no Brasil, www.celso.cortes.nom.br. Agradeço também a todos os participantes do nosso fórum http://groups.yahoo.com/group/powerbuilder-br/ que estão sempre a disposição com valorosos textos. Aos meus filhos, Daniel e Thiago, pela paciência que me dispensaram enquanto eu escrevia este livro. Aos meus amigos de trabalho José de Souza Pinto Guedes, Analista de Sistemas e Paulo Sergio da Silva, Desenvolvedor (Supervisor do Sistema de Coleta das Pesquisas Contínuas Agropecuárias – IBGE/DI/COADS) pelo companheirismo, incentivo e profissionalismo que compartilhamos nestes onze anos de convívio e trabalho. E, em especial, a Eduardo Olimpio Mota Fialho, Analista de Sistemas (Sistema Pesquisas Contínuas Agropecuárias - IBGE/DI/COADS), Estatístico, Mestre em Estudos Populacionais e Pesquisas Sociais, um grande amigo, pelo interminável incentivo e revisão desta obra.

Celso S. Côrtes.

Adquirido por : Fabrício Moreira da Silva

Page 7: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Apresentação

Sobre o livro

Este livro tem o objetivo de ajudar os iniciantes desta ótima ferramenta de desenvolvimento o “PowerBuilder 9.0” em português. O roteiro de desenvolvimento para essa ajuda se dará de modo aplicado. Alguns conceitos básicos serão explicados para em seguida desenvolvermos uma aplicação modelo, utilizando os módulos básicos do PowerBuilder, visando uma maior fixação dos seus conceitos.

Sobre o Sybase PowerBuilder 9.0

O PowerBuilder 9.0 é uma ferramenta de desenvolvimento padrão MS Windows !, orientada a objetos, que permite desenvolver aplicações cliente, cliente/ servidor e para internet. Em versões anteriores do PowerBuilder você poderia trabalhar só nos objetos da sua aplicação . A partir do PowerBuilder 8.0 foi introduzido a WorkSpace no qual você pode trabalhar em várias aplicações ou objetos. Para trabalhar com objetos, você tem que ter uma WorkSpace aberta. Você só pode ter uma única WorkSpace aberta, mas, você incluir vários objetos. Há dois tipos de objetos: PowerScript cliente e Objetos de Rede. Um objeto de PowerScript pode ser qualquer aplicação que você trabalha, como uma aplicação cliente. Um objeto de Rede pode conter todos os elementos que você precisa para construir um sitio (HTML) , códigos, imagens, componentes, bem como definições para conexões de banco de dados. Para trabalhos corporativos, sem dúvida, será um grande ganho no desenvolvimento, pois se poderão compartilhar códigos, objetos sem ter que incluí-los a sua aplicação. Além disso, o workspace possibilita a inclusão de vários diretórios que podem ser abertos e linkados à sua aplicação.

Page 8: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Sumário

i

Sumário

Capítulo 1

Barras de Ferramentas 1 Conhecendo as suas funções 1

Criando a WORKSPACE 4

Criando uma aplicação 5 Capítulo 2

Criando uma WINDOW (janela) 6 Configurando as barras de menu 8 Template “Properties” 9 Salvando a WINDOW 15 Capítulo 3

Criando um menu 16

Escrevendo em PowerScript 19

Como definir tipos de janelas 22

Uso dos tipos de janela 23

Tipos de controle 24 Capítulo 4

Implementação da Herança de Janelas 29 Capítulo 5

Projetando o menu

31

Adquirido por : Fabrício Moreira da Silva

Page 9: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Sumário

ii

Sumário

Capítulo 6

A Linguagem PowerScript 36 Eventos 37 Ambiente de Script 38 A Linguagem PowerScript 39 Fundamentos da Linguagem PowerScript 41

Variáveis 41

Tipos de Dados 42

Escopo de Variáveis 44

Encapsulamento 45

Objetos e Controle 46

Execução de uma função por meio da notação de ponto 46

Estruturas 48

Arrays 50

Arrays multidimensionais 51

Arrays variáveis 51

Dados de objetos 52

Operadores 52 Operadores Aritméticos 52 Operadores binários 53 Operadores unários 53 Operadores de combinação 54 Operador de string 54 Operadores lógicos 54 Operadores relacionais 55 Operadores de conjunção 55

Procedência e Parênteses 56

Comandos do PowerBuilder 56 O Uso da estrutura IF 56 Estrutura Choose Case 57 Estrutura de iteração(Loops) 58 Estrutura de Do Loop 58 Estrutura For… Next 59

Page 10: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Sumário

iii

Sumário

Capítulo 7

Transações de Bancos de Dados 60 Definindo uma transação 61 Montando a transação em PowerScript 61

O uso do SQL no PowerBuilder 63 Capítulo 8

DataWindow 67 Objeto DataWindow 67 Fonte de dados 68 Interface inteligente 68 Interface com o usuário 68 Como criar um objeto DataWindow 69 Fontes de dados 70 SQL Select 71 Query 71 Stored Procedure 71 External 71 Montando uma DataWindow com SQL Select 72 Template de SQL 74 Argumentos 75 Personalizando sua DataWindow 77 Composite 78 Crosstab (planilha) 79 FreeForm (Formulário livre) 80 Graph (Gráfico) 81 Grid (Grade) 82 Group(Grupo) 83 Label (Etiquetas) 84 N-up (Múltiplas linhas) 84 Olé 2.0 85 RichText 85 Tabular 86

Cores e Bodas 87

Adquirido por : Fabrício Moreira da Silva

Page 11: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Sumário

iv

Sumário

Capítulo 9

Recuperação de dados a partir de uma DataWindow 88

Funções para o controle DataWindow 90

Montando um Objeto DataWindow 105

Aperfeiçoando a visualização da DataWindow 110

Vinculando duas DataWindow 114

Vinculando objeto DataWindow a um controle DataWindow 123

Incluindo controle DataWindow a Window (janela) 123 Incluindo parâmetros de atualização 130 Rotina de inclusão 131 Rotina de alteração 137 Rotina de Exclusão 144 Capítulo 10

DataWindow : Técnicas avançadas Buffers Internos 147 Detectar a validação 148 Detectar o Tipo de dado 148 Detectar regras de validação 148 Detectar mudanças no item 148 Usando Filtros 150 Classificando 151 Cláusula Where para Update e Delete 153 Modify e Describe 155 Função Evaluate( ) 160 Propriedade Object 162 Parametrizando com a cláusula DATA 165 Capítulo 11

PipeLine de dados 167 Capítulo 12

Criando Relatórios 175

Page 12: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Sumário

v

Sumário

Capítulo 13

Gráficos 197 Capítulo 14

XML Conceito 213 Exportando DataWindow (DataWindow Export) 228 Importando um padrão XML para a DataWindow 239 Capítulo 15

Preparando sua aplicação final 249 Criando o objeto “Project” 249 Criando o arquivo executável 254 Capítulo 16

Criando uma aplicação Web 256 Criando um sítio WEB com PowerDynamo 256

Capítulo 17

Criando a primeira página Web 269 Utilizando 4GL Web/JSP Page wizard 270 Guia de Referência Nomenclaturas 293 Atributos e Eventos 296 Dados Enumerados 316

Adquirido por : Fabrício Moreira da Silva

Page 13: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 1

Barras de Ferramentas

Conhecendo as suas funções

Criando a WORKSPACE

Criando uma aplicação

Page 14: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 1 1

Barras de Ferramentas: PowerBar1

A barra de ferramenta PowerBar1 é a barra principal do PowerBuilder.Nessa barra podemos definir e selecionar os tipos de objetos da nossa aplicação. Em qualquer local da PowerBar1, clicando-se com o botão esquerdo do mouse pode-se customizar suas funções, incluindo ou inibindo seus módulos. A barra acima é um padrão que aparecerá na primeira vez que você iniciar o PowerBuilder e caso seja customizada as alterações serão mantidas. Conhecendo as suas funções

SEARCH - Ativa o tópico AJUDA no modo “SEARCH” (pesquisa)

HELP - Ativa o tópico AJUDA no modo padrão.

NEW - Ativa o template de habilitação dos objetos do PowerBuilder, como WorkSpace, Target, PB Object, Web, DataWindow, DataBase, Project e Tool. Iremos estudar cada um desses modulo descrito acima.

OPEN – Abre um objeto previamente salvo, como uma DataWindow, Menu ou aplicação.

SYTEM TREE – Mostra ou esconde a janela de descrição do seu projeto.

OUTPUT – Mostra ou esconde a janela de informações de saída do seu projeto.

Adquirido por : Fabrício Moreira da Silva

Page 15: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 1 2

Conhecendo as suas funções

NEXT ERROR/MESSAGE – Exibe a próxima mensagem de erro da aplicação (se existir).

PREVIOU ERROR/MESSAGE – Exibe a mensagem de erro anterior (se existir).

SYSTEM OPTION – Ativa o template de configuração pessoal da sua máscara de trabalho.

TO-DO-LIST – Monta uma lista de pendências

BROWSER – Ativa o template de visão dos objetos da WorkSpace, com suas propriedades.

CLIP WINDOW – Abre o template “CLIP”. Serve como um bloco de notas para sua aplicação possibilitando copiar e colar.

LIBRARY – Abre o template tipo “EXPLORER” para seleção de aplicação ou objetos.

DB PROFILE – Abre o template que possibilita configurar o tipo de conexão e a base de dados à qual seu projeto estará associado.

EASERVER PROFILE – Abre o template que possibilita configurar o tipo de conexão com o servidor de aplicação EASERVER.

DATA BASE – Abre o template de consulta, edição e alteração das bases de dados associadas ao DB PROFILE.

Page 16: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 1 3

Conhecendo as suas funções

FILE EDITOR – Abre o template de edição de arquivo. Com esse editor é possível criar qualquer função ou objetos para serem utilizados pelo POWERBUILDER.

DEBUG – Abre o template para auxilio a depuração de sua aplicação.

RUN – Ao clicar neste botão o POWERBUILDER irá executar sua aplicação em modo interpretado.

SELECT and RUN – Executa a aplicação selecionada, em modo interpretado.

EXIT – Sair do POWERBUILDER.

Conhecendo as funções básicas da POWERBAR1 podemos iniciar a nossa primeira aplicação. Desse modo iremos, passo a passo conhecendo o PowerBuilder 9.0.

Adquirido por : Fabrício Moreira da Silva

Page 17: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 1 4

Criando a WORKSPACE

Clique no botão NEW e selecione WORKSPACE. Clique em “OK”. Selecione o diretório onde você ira salvar a WorkSpace e dê um nome para ela (para acompanhar corretamente a aplicação neste livro atribua o nome exemplo_01 e clique em “salvar”). Se tudo deu certo no template Sytem Tree aparecerá :

Page 18: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 1 5

Criando uma aplicação.

Clique em NEW e selecione “Target” em seguida “Application” e clique em “OK”.

Aparecerá a tela de definição da sua aplicação.

Em “Application Name” digite : exemplo1. Em “Library” selecione o diretório onde você salvou a WorkSpace. Em “Target” repita o procedimento anterior. Clique em “Finish”

OBS: Não necessariamente você precisa atribuir os mesmos diretórios na criação de uma aplicação. Neste caso fizemos isso, para facilitar o exemplo. Se tudo deu certo você visualizará :

Agora que estamos com a WorkSpace e a Aplicação criada. Vamos criar nosso primeiro objeto.

Adquirido por : Fabrício Moreira da Silva

Page 19: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 2Criando uma WINDOW (janela)

Configurando as barras de menu

Template “Properties”

Salvando a WINDOW (janela)

Page 20: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 6

CRIANDO UMA WINDOW(JANELA)

Clique em NEW selecione “PB Object”, selecione o ícone “Window” conforme figura abaixo:

E clique em “OK”. Com este procedimento, você acaba de criar sua primeira Window (janela) e poderá notar que três novas barras de trabalho surgiram assim como um novo template denominado “Properties” à direita. Note que, ao centro, está a window que você criou, e logo abaixo existem cinco “abas” de tabela com as descrições: “Layout”, “Open”, “Event List”, “Function List” e “DeclareInstance Variables”. Open : Abre o template dos eventos padrão do objeto assim como o quadro de funções e de declaração de variáveis e funções compartilhadas. Event List : Como o próprio nome diz, lista os eventos padrão da window. Function List :Abre o template das funções padrão da window. Declare Instance Variables : Abre o template para as declarações das variáveis e funções compartilhadas que podem ser de instância ou global. Instancia – Pertence ao objeto e só estará disponível se o objeto estiver ATIVO. Global – Pertence à APLICAÇÃO

Adquirido por : Fabrício Moreira da Silva

Page 21: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 7

CRIANDO UMA WINDOW (JANELA)

Para uma visualização mais limpa, clique em OUTPUT para inibir o

template de OUTPUT e clique em CLIP WINDOW para inibir o template de trabalho. Você agora tem uma visão mais limpa da sua WINDOW(janela).

Page 22: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 8

CRIANDO UMA WINDOW (JANELA)

Configurando as barras de menu Coloque o mouse sobre uma barra de menu e clique no botão esquerdo. Um menu-popup aparecerá conforme a figura abaixo:

A PowerBar1 é a barra de trabalho do POWERBUIDER. As barras PainterBarX são as barras de trabalho do objeto que você selecionou para trabalhar - neste caso, o objeto WINDOW. Clique em cada opção do menu-popup para conhecer as barras. Você pode também definir o seu posicionamento, colocando o mouse sobre a barra e clicando nas opções de posicionamento: “Left”, “Top”, “Right”, “Botton” ou “Floating”. O PowerBuilder possibilita personalizar a sua barra, incluindo ou excluindo itens que serão exibidos. Posicione o mouse na barra, clique no botão esquerdo, selecione “Customize” e utilize o processo de “arrastar” e “soltar”.

Adquirido por : Fabrício Moreira da Silva

Page 23: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 9

CRIANDO UMA WINDOW (JANELA) Template “Properties”

Desvendando as “Propriedades” da janela que acabamos de criar.

Title : O título que aparecerá no topo da janela que você está criando. Tag : Uma descrição para a sua janela ou um alerta ao utilizá-la. Poderá conter qualquer texto e poderá ser acessada em tempo de execução através, por exemplo, da função do PowerBuilder “SetMicroHelp” que veremos mais adiante. MenuName : O PowerBuilder disponibiliza 6 (seis) tipos de janela, a saber: Child, Main, MDI, MDIHelp, Popup e Response. Somente as janelas Main, MDI, MDIHelp e Popup podem possuir barras de menus associados. Para atribuir uma barra de menu a uma janela primeiro você terá que criá-la. Os “checkbox” a seguir definem o estado da sua janela assim como os itens que você quer exibir na mesma. Visible: Define se a sua janela terá o status de estar visível ou invisível ao usuário. Enable: Define se a sua janela estará ativa ou inativa para o usuário. Titlebar: Define se a sua janela terá uma barra de titulo.

Controlmenu: Define se a sua janela terá os itens na lateral direita da janela. MaxBox: Define se a sua janela terá no “controlmenu”. MinBox : Define se a sua janela terá no “controlmenu”. ClientEdge: Define se a sua janela apresentará um padrão de apresentação chanfrado.

Page 24: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 10

CRIANDO UMA WINDOW (JANELA) Center : Centraliza automaticamente a sua janela. Resizable: Ativa a permissão de redimensionar a janela em modo de execusão. WindowType: Define o tipo da janela. Template “Properties” WindowState: Define o modo de apresentação em modo de execução:

Normal – do mesmo tamanho que foi definido no desenvolvimento.

Maximized – Será redimensionada para o tamanho máximo da resolução do monitor em modo de execução.

Minimized – Ativará a janela minimizada, colocando-a na barra de

ferramenta do MS Windows. BackColor: Define a cor de fundo da sua janela. Icon: Define o Ícone(imagem) que você quer associar a sua janela

é o ícone padrão. Você pode associar qualquer imagem padrão .ICO. O PowerBuilder disponibiliza vários ícones.

NOTA : Alguns itens não foram descritos, devido a sua complexidade, serão vistos mais à frente.

Adquirido por : Fabrício Moreira da Silva

Page 25: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 11

CRIANDO UMA WINDOW (JANELA)

Com a janela aberta, e agora que conhecemos algumas de suas propriedades, vamos configurar-la. Assim começaremos nosso projeto, exemplo1.

No template properties, na “aba” GENERAL digite : Tiltle : Exemplo 01 Tag : Janela principal do exemplo 01 MenuName : Deixe em branco Marque as caixas de verificação conforme as figuras abaixo:

Page 26: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 12

CRIANDO UMA WINDOW(JANELA) WindowType : Selecione MAIN WindowState : Selecione Normal BackColor : Selecione Button Face Icon: Selecione um ícone a sua escolha

Agora clique em PREVIEW e veja como ficará a sua janela. Para fechar

e voltar ao editor clique em na janela que você criou. Podemos notar que o tamanho da janela não está no padrão. Para uma janela que será a principal do nosso primeiro projeto você pode redimensiona-la manualmente. Para isto, na barra de rolagem da janela procurar o seu vértice, verificar a mudança do ícone do mouse, pressionar o botão direito do mouse e arrastar para o tamanho que lhe satisfizer. Veja a figura abaixo:

ou se você sabe o tamanho que sua janela deverá ficar, clique na “aba” “Other” do template “Properties”. Se a “aba” “Other” não estiver visível clique na barra de rolagem (parte superior direita do template “Properties”

nas “setinhas” ai ao lado) e a ela aparecerá.

Adquirido por : Fabrício Moreira da Silva

Page 27: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 13

CRIANDO UMA WINDOW (JANELA) Ao selecionar o item “Other” nos deparamos com novos itens a serem configurados. Então vamos entendê-los para poder configurá-los com segurança.

X – Posição inicial na margem esquerda do seu monitor. Y – Posição inicial que sua janela ocupará de cima para baixo. OBS : As duas opções só terão efeito se a opção “Center” estiver desmarcada. Width – Define a largura da sua janela. Height – Define a altura da sua janela. OBS: As opções só terão efeito, se a opção “Normal” em “WindowState” estiver selecionada. Pointer – Define que o ponteiro do mouse será apresentado quando o mouse passear pela janela.

O padrão apresentado acima estabelece uma tomada completa do monitor, padrão 800x600, resolução que aconselho utilizar, devido a

quantidade de informações que o PowerBuilder, assim como outros Front-End, hoje disponibilizam.

Page 28: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 14

CRIANDO UMA WINDOW(JANELA) Já que começamos a navegar no template “Properties”, iremos ver as suas outras propriedades. Clique na “aba” Scroll.

HscrollBar- Ativa a barra de rolagem horizontal na sua janela. VscrollBar – Ativa a barra de rolagem vertical na sua janela. UnitsPerLine, ColunmPerPage,LinesPerPage – Definem o modo de como sua janela ira deslizar, “0” define como padrão o mesmo do MS Windows.

Clique agora na “aba” ToolBar.

Quando anexamos um menu em nossa aplicação, podemos definir automaticamente o seu posicionamento assim como deixá-lo visível, ou não. Esse procedimento pode ser padrão, configurando-se a propriedade Toolbar ou em modo de execução.

Adquirido por : Fabrício Moreira da Silva

Page 29: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 2 15

CRIANDO UMA WINDOW (JANELA) Note que a maioria das propriedades de uma janela no PowerBuilder, já esta configurada para a utilização do padrão MS Windows, o que facilita bastante, você só terá que configurar itens a qual queira personalizar sua aplicação. Nesta primeira vez, percorremos todos os passos para que pudéssemos conhecer as características e propriedades de uma janela no POWERBUILDER, da próxima vez, será muito mais tranqüilo. SALVANDO A WINDOW (JANELA)

Clique em SAVE e preencha : Windows : w_001Comments: Janela principal do exemplo 1

Clique em “OK” e sua Janela já estará criada e anexada a aplicação exemplo1.

Page 30: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 3

Criando um menu

Escrevendo em PowerScript

Como definir tipos de janelas

Uso dos tipos de janela

Tipos de controle

Adquirido por : Fabrício Moreira da Silva

Page 31: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

16

CRIANDO UM MENU A criação de objetos no PowerBuilder segue sempre o mesmo padrão. A diferença recai na particularidade das propriedades de cada objeto que se queira criar. A criação de um menu segue os passos da criação de uma

WINDOW (JANELA). Clique em NEW, na “aba” “PB Object” e selecione

. O Template de criação do MENU se abrirá:

Coloque o mouse sobre o texto “untitled0”, clique no botão direito e selecione a opção do menu-popup “Insert Submenu Item”. O Template de “Properties” se abrirá no lado esquerdo. Então deveremos montar o nosso menu preenchendo os campos a seguir.

Page 32: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

17

CRIANDO UM MENU

Clique em “untitled0” e com o botão esquerdo do mouse selecione a opção do menu-popup “Insert Submenu Item” para inserir outro item no menu. Troque em Name para “m_item02”, Text para Item 02, “MicroHelp” para “Item 01 esta em foco” e Tag para “item 01”. Ficou fácil não? No final dessa operação o seu quadro de menu ficará assim.

Adquirido por : Fabrício Moreira da Silva

Page 33: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

18

CRIANDO UM MENU

Clique em SAVE e preencha o quadro “Menu” com “m_menu01” e o quadro “Comments” com “Menu 01 da aplicação”. Clique em “OK”. Seu menu já foi criado e salvo na aplicação exemplo1.

Dê um duplo clique no item w_001 no template TREEVIEW à esquerda. Sua Janela w_001 se abrirá. No template “Properties” à direita, no item “MenuName”, clique no botão

de seleção , e selecione o menu que acabamos de criar, “m_menu01”. Pronto, nossa janela já possui um menu.

Agora clique em PREVIEW e teste.

Page 34: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

19

Escrevendo em PowerScript.

Até agora montamos nossa Janela e adicionamos um menu sem funcionalidade. Agora, vamos escrever nosso primeiro código em PowerScript, O PowerScript é a linguagem que o PowerBuilder aceita. Assim poderemos escrever comandos para que o PowerBuilder os execute.

Dê um duplo clique em no template TREEVIEW, à esquerda, uma janela de “Script” aparecerá no centro.

A tradução desta tela é : A aplicação é exemplo1, este Script está direcionado para o evento “open” e este evento não prevê código de retorno. Agora digite conforme a tela abaixo:

Clique em SAVE, depois em RUN e veja-a sua aplicação executando.

Para fechar a aplicação clique em .

Adquirido por : Fabrício Moreira da Silva

Page 35: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

20

Escrevendo em PowerScript. Para ficar mais fácil, e treinarmos um pouco mais vamos selecionar no TREEVIEW à esquerda, com um duplo clique, “m_menu01”. O objeto menu será editado. Clique com o botão esquerdo do mouse sobre o item “m_menu01” e selecione “Insert Submenu Item”. Na opção que se abriu ao final da lista de itens digite “Sair”.

No template “Properties” a direita, no item “MicroHelp”, digite “Sair doexemplo 01” e repita o texto para o item “Tag”.

Dê um duplo clique no item “Sair” no painter “Script” logo abaixo. Repare que já esta selecionado o evento “clicked”. Este evento será sempre ativado quando se clicar na opção “Sair” e então vamos escrever em “PowerScript” o comando para sair da aplicação.

Page 36: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

21

Escrevendo em PowerScript. Digite : Close(w_001).

Salve a aplicação “Save” e clique em “Run” para executar e testar. Para fechar a aplicação, clique em “Sair” do menu. Analisando :

Até aqui você criou uma aplicação e incluiu uma window. A esta window, acrescentou um objeto menu e a este objeto menu, incluiu itens e viu como programar esses itens de modo que possa executar procedimentos diversos ao ser selecionado. Por enquanto só executamos o comando “closed”. Outros comandos veremos adiante.

Para continuar com o nosso exemplo, precisaremos entender um pouco mais sobre a “window”, que a partir de agora iremos chamar de

“janela”. Nos próximos itens, iremos : !" Delinear e fazer a distinção entre diferentes tipos de janela; !" Definir atributos de janela; !" Adicionar e implementar controles de janela; !" Implementar a herança de janelas.

Já vimos um pouco dos atributos de janela quando w_001 foi definida. Agora, veremos outros tipos de janela e o motivo pelo qual você deve

utilizá-las.

Adquirido por : Fabrício Moreira da Silva

Page 37: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

22

Como definir tipos de janelas Janelas MDI (Multiple Document Interface). Dificilmenta sua aplicação não apresentará uma tela principal. Normalmente utilizamos o padrão MDI como tela principal que apresenta dos modelos MDI e MDIhelp. A MDIhelp é normalmente mais utilizada pois o microhelp, aquela barra na inferior da janela, é uma excelente opção para exibição de mensagens resumidas para os usuários do seu aplicativo, MDIhelp tem um aspecto mais profissional do que as janelas independentes. Janelas Popup (Instantânea) As janelas instantâneas são abertas normalmente a partir do interior de outra janela, Embora esta janela não possa ser encoberta por sua janela superior, ela pode se estender além daqueles limites da janela superior. Quando a janela superior é fechada ou minimizada a janela instantânea também é fechada, ou minimizada. Janelas Child (filhas) As janelas filhas também são abertas a partir de outra janela, assim como as janelas instantâneas elas possuem uma janela superior, mas com alguns conceitos fundamentais. !" Nunca podem existir fora da janela superior; !" Nunca são consideradas ativas; !" Quando maximizadas, só preenchem o espaço da janela superior; !" Não possuem menus.

Janelas Response (Resposta) As janelas de resposta são um tipo de janela instantânea. Elas diferem das janelas pelo fato de serem modais à aplicação. Nenhuma outra janela na aplicação pode ser acessada enquanto a janela de resposta não for fechada. As janelas de resposta são muitas vezes chamadas de caixa de diálogos. Você irá utilizar com freqüência essas janelas de resposta.

Page 38: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

23

Uso dos tipos de janela MDI e MDI com microhelp Um MDI é uma janela(quadro) que contém outras janelas (folhas). Você só tem um quadro por aplicação mas pode ter muitas folhas dentro do seu quadro. Em qualquer aplicação complexa e em geral qualquer aplicação simples do MS WIndows você deve empregar um quadro MDI. A MDI microhelp funciona bem como um meio fácil de transmitir uma mensagem para o usuário, sem interromper a aplicação. Inclusão de controles de janela Um controle de janela é qualquer elemento que você insere em uma janela. A quase totalidade da PainterBar de janelas contém diferentes controles que você pode colocar na sua janela. Os controles são necessários para toda a janela. Sem controles uma janela é simplesmente um retângulo sem qualquer funcionalidade, que é exibido na sua tela.

Adquirido por : Fabrício Moreira da Silva

Page 39: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

24

Tipos de controle Existem diversos tipos diferentes de controles, tais como :

Botão de comandos

O botão de comando é um objeto que tem por finalidade executar processos quando clicados. Quando são acionados aparecem como se fossem empurrados enquanto o botão do mouse se encontra pressionado. Para inserir

um botão de comando na sua janela, dê um clique no ícone Command Button na barra PowerBar1 e depois clique no local em que deve ficar o botão de comando no interior da janela que você esta definindo.

Botão de figura

O botão de figura é semelhante ao botão de comando, exceto pelo fato de terem figuras sobre eles. Para colocar na sua janela um controle botão de

figura, clique no ícone Picture Button e depois clique no local em que o botão de figura deve estar posicionado na janela que você esta definindo. Nas suas propriedades, à direita, no item “PictureName”, você pode selecionar a figura que ele deverá exibir.

Texto estático

O Texto estático é uma frase ou descrição exibida na sua janela. Para inserir

um controle de texto na sua janela clique no ícone Static Text, e depois um clique no local em que deve aparecer o texto estático. Através do template “propriedades” à direita no item “Text” você tem a possibilidade de digitar o texto que deverá ser exibido na janela que está sendo definida.

Page 40: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

25

Tipos de controle DataWindow

Para acrescentar um controle DataWindow à sua janela, clique no íconeDataWindows control e em seguida, clique no local em que a DataWindow deve aparecer no interior da janela que você esta definindo. A DataWindow é a resposta do PowerBuilder às telas de entrada de dados. A DataWindow é de uso muito prático quando você está tentando unir sua aplicação a um banco de dados, além disto, são fundamentais para o desenvolvimento do PowerBuilder. A DataWindow também apresenta vários recursos avançados de edição.

Edição em várias linhas

Para inserir na sua janela um controle de edição em várias linhas, clique sobre

MultLineEdit , e depois dê um clique no local em que o controle de edição em várias linhas deve ficar posicionado na janela que você está definindo. Diferente dos controles de edição em única linha (veremos a seguir), que só permitem a introdução ou visualização de uma linha de texto, o controle de edição em várias linhas é um controle que permite a digitação pelo usuário de diversas linhas de texto. A edição em várias linhas é usada com freqüência nos comentários de forma livre. Pelo fato de incorporarem muitos recursos de edição, as edições em várias linhas são indispensáveis durante a introdução de grandes quantidades de dados em campos. Entretanto, os controles de edição em várias linhas não são utilizados com freqüência pois é possível conseguir maior funcionalidade através de uma coluna DataWindow.

Adquirido por : Fabrício Moreira da Silva

Page 41: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

26

Tipos de controle Figuras

Para inserir na sua janela um controle de figura, clique sobre Picture Control , e depois dê um clique no local em que a figura deve ficar posicionado na janela que você esta definindo. As Figuras são controles que fazem referência a mapas de bits que serão exibidos em uma janela. Da mesma forma que o texto estático, as figuras são utilizadas apenas para a exibição de informações, a partir da versão 7.0, links da web podem ser associados através dos Picture HiperLink control que tem as mesmas propriedades da Picture e mais o HiperLink.

Edição em uma única linha

Para inserir na sua janela um controle de edição em uma única linha, clique

sobre SingleLineEdite Control , e depois clique no local em que edição em uma única linha deve ficar posicionado na janela que você esta definindo. Os controles de edição em uma única linha são campos de entrada de dados que você pode inserir em uma janela com o objetivo de digitar uma linha de texto isolada. Os controles de edição em uma única linha não são usados normalmente, porque a maior parte de entrada de dados é realizada em uma DataWindow.

Máscara de Edição

Para inserir na sua janela um controle de edição em uma única linha, clique

sobre EditMask Control , e depois dê um clique no local em que máscara de edição deve ficar posicionada na janela que você esta definindo. As máscaras de edição constituem um tipo de edição em uma única linha e permitem você especificar a formatação necessária no momento da entrada. Essa formatação é definida quando você acrescenta inicialmente o controle máscara de edição por meio do template “Properties”, “Mask”.

Page 42: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

27

Tipos de controle Caixa de listagem

Para inserir na sua janela uma controle de caixa de listagem, clique sobre

ListBox control , e depois clique no local em que a caixa de listagem deve ficar posicionada na janela que você está definindo. A caixa de listagem constitui um tipo de edição em uma única linha e oferece ao usuário diversas opções para a resposta correta. Podem ser usadas barras de rolagem caso exista uma quantidade muito grande de opções, como ocorre com muitos outros controles de janela que se relacionam com entrada de dados.

Caixa de verificação

Para inserir na sua janela uma controle de caixa de verificação, clique sobre

CheckBox control , e depois clique no local em que a caixa de verificação deve ficar posicionada na janela que você está definindo. As caixas de verificação funcionam com questões do tipo sim-não que podem ser ativadas ou desativadas. Internamente, uma tabela de códigos descreve o valor de dados retornado quando uma caixa de verificação é ativada ou desativada.

Botões de rádio e Caixas de grupo

Para inserir na sua janela uma controle de caixa de verificação clique sobre

RadioButton control , e depois clique no local em que o botão de rádio deve ficar posicionado na janela que você esta definindo.

Adquirido por : Fabrício Moreira da Silva

Page 43: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 3

28

Tipos de controle Para inserir na sua janela um controle caixa de grupo, clique sobre o ícone

GroupBox Control e, em seguida, um clique no local em que a caixa de grupo deve ser colocado no interior da janela que esta sendo definida. Um botão de rádio é um tipo de caixa de verificação. Vários botões de rádio são agrupados no interior de uma caixa de grupo. Esses botões de rádio, assim como as caixas de verificação, podem estar ativos ou inativos. Somente um botão de rádio no interior de uma caixa de grupo pode ser ativado de cada vez. Manipulação de controles e janelas

Muitas vezes você desejará manipular seus controles. Através de um clique simples sobre um controle será exibido o template de propriedades na lateral direita. Com um clique com o botão direito do mouse sobre o controle fará surgir um menu de opções possíveis para essse controle. Ordem e tabulação Você pode utilizar o teclado em lugar do mouse. Para se deslocar entre os controles, o usuário tem de pressionar a tecla “Tab” Entretanto a ordem de tabulação padrão dos controles de janela é a ordem na qual esses controles são acrescentados. Para alterar a ordem de tabulação em uma janela, abra o menu “Format” e escolha “Tab Order”. Essa opção exibe a ordem de tabulação de cada controle, incrementada pelo valor de 10. Se quiser mudar a ordem de tabulação simplesmente altere a numeração dos controles. Em seguida escolha de novo ‘Format” e “Tab Order”, a fim de desativar a ordem de tabulação.

Page 44: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 4

Implementação da Herança de Janelas

Adquirido por : Fabrício Moreira da Silva

Page 45: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 4 29

Implementação da Herança de Janelas A herança é o modo pelo qual usamos nossos protótipos no PowerBuilder. Através da herança o objeto filho obtém todos os controles, powerscript e atributos do objeto ancestral. Quaisquer mudanças adicionais efetuadas no objeto ancestral se refletem automaticamente no objeto filho. O Objeto filho pode então acrescentar outras características ou modificar as que herdaram. As janelas e os menus podem ser herdados. Para entender melhor vamos criar uma janela herança da janela w_001 do nosso exemplo. Com o PowerBuilder aberto, no TREEVIEW à esquerda, clique com o botão esquerdo do mouse sobre o objeto Window “w_001”. No menu-popup que se abrirá, selecione “Inherit” e uma nova janela se abrirá. Clique em “Save” e dê como nome “w_002”. Repare no título do template da window que você acabou de criar:

A janela w_002 foi criada como uma herança da w_001. Toda mudança que você implementar na w_001 será herdada pela w_002 e esta poderá ter objetos que só pertençam a ela própria. Essa funcionalidade de herança, assim como a DataWindow, faz a grande diferença no desenrolar de um projeto com PowerBuilder.

Page 46: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 4 30

Implementação da Herança de Janelas Para o nosso exemplo ficar mais claro, vamos agora abrir a nova janela do nosso projeto exemplo, chamado “exemplo1”. No TREEVIEW à esquerda dê um duplo clique no objeto w_001, template "propriedade" item "WindowType" e selecione "mdihelp!". Salve a w_001. No TREEVIEW à esquerda dê um duplo clique no objeto w_002, template "propriedade" item "WindowType" e selecione "main!", no item "MenuName". Apague o "m_menu01" e salve a w_002. No TREEVIEW à esquerda dê um duplo clique no objeto menu “m_menu01”. Selecione com um clique o item do objeto menu “Item 01” no template "Script". Note que já se encontra selecionado o evento "Clicked", e então escreva : OpenSheet(w_002, w_001, 2, Layered!)

Salve o m_menu01. Execute a aplicação, clique na opção "Item 01" e veja a janela w_002 abrir dentro da janela w_001.

Para uma melhor visualização selecione no TREEVIEW à esquerda a janela w_001, e no template "propriedade" selecione a opção "ClientEdge". Salve a janela w_001.

Execute a aplicação.

Adquirido por : Fabrício Moreira da Silva

Page 47: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 5

Projetando o menu

Page 48: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 5

31

Projetando o menu. O menu constitui uma parte importante de qualquer aplicação, seja ela padrão MS Windows!, Linux, Solares, MAC ou outro qualquer. Através do menu disparamos eventos, emitimos comandos e controlamos o fluxo de uma aplicação.

Você já foi apresentado aos menus, quando “m_menu01” foi criado na parte 03 deste manual. Agora você terá a possibilidade de aumentar seus conhecimentos e compreensão dos menus.

Antes de projetar o menu é importante ter uma idéia da aparência que você deseja para ele. Usando uma planilha eletrônica, uma tabela de processador de texto, ou uma folha de papel esquematize aquilo que deverá estar contido em todos os menus. Pode ser útil observar outras aplicações a fim de examinar as opções que elas apresentam nos seus menus. Dica : Para manter a coerência dos menus, desenvolva um único com todas as suas opções em vez de projetar vários menus diferentes. Este menu “mestre” será usado como layout básico para outros menus. No menu “m_menu01” desenvolvido até agora implementamos os itens: “Item 01”, “Item 02” e “Sair”. Para prosseguir com o nosso exemplo devemos implementar esse menu.

Adquirido por : Fabrício Moreira da Silva

Page 49: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 5

32

Projetando o menu. Edite o menu “m_menu01” e selecione com um duplo clique “Item 01”, as propriedades. Selecione “Text” e digite no lugar de “Item 01” “&Arquivo”. O caractere “&” na frente de um caractere qualquer no campo “Text” das propriedades do menu incluirá automaticamente um atalho para esse item no menu, Como conseqüência ao rodarmos a nossa aplicação e pressionarmos a tecla “ALT” junto com a letra “A” de “Arquivo”, teremos acesso imediato aos itens desse item do menu. Cada item deve ter a sua própria tecla de atalho. Definindo A para o item Arquivo e a mesma letra A para um outro item qualquer, sempre irá ser acionado o primeiro item encontrado. Note que a palavra “Arquivo” esta com a letra “A” sublinhada, informando que essa letra é o atalho para esse item. Caso queira trocar para uma outra letra do item, basta colocar o caractere “&” na frente da letra que você quer que seja o atalho. Apague nesse novo item “Arquivo” o item “MicroHelp”. Coloque o mouse sobre esse novo item “Arquivo” e com o botão direito do mouse selecione, no menu-popup, “Insert Submenu Item”. Nesse novo quadro digite “&Fechar” e no Item “MicroHelp” digite “Fecha a janela corrente”. Repita a operação, crie um novo quadro e digite “&Sair”. No item “MicroHelp” digite, “Fechar a aplicação”. Dê um duplo clique nesse item e no template de eventos digite, no evento “Clicked” : Close (w_001) Agora apague o item “Sair”, o último item do nosso antigo menu. Dê um duplo clique no item “Arquivo” e apague o comando PowerScript do evento “clicked”. Salve o menu e execute a aplicação quando então teremos.

Page 50: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 5

33

Projetando o menu. Selecione o item “Arquivo” :

Clique em Sair ou tecle “Alt” + “S” para sair da aplicação. Ainda no item “Arquivo” pode-se implementar um pouco mais e tornar o menu mais agradável visualmente acrescentando uma barra de ferramentas, “ToolBar”, com figuras.

Dê um clique em “Fechar”, e no template “propriedades” selecione a “aba” “ToolBar”. Em “ToolBarItemText” digite “Fechar”. No Item “ToolbarItemName” selecione “CheckBox!”. Você pode selecionar qualquer ícone, mas para que tenhamos uma coerência no nosso projeto aconselho que siga o parametrizado. No Item “ToolbarItemDownName” você pode selecionar o ícone que irá ser exibido quando a figura estiver sendo pressionada com o mouse. No nosso exemplo deixe em branco.

No Item “ToolbarItemVisible” verifique se esta marcado . Este item marcado indica que a “Toolbar” estará visível.

No Item “ToolbarItemDown” deixe desmarcado . Este item sem marcação indica que o “ToolbarItemName” selecionado aparecerá sempre, como se estivesse pressionado.

Adquirido por : Fabrício Moreira da Silva

Page 51: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 5

34

Projetando o menu. No item “ToolbarItemSpace” mantenha “0” esse item define a quantidade de espaços que deverá existir entre os ícones. No item “ToolbarItemOrder” mantenha “0” esse item define a ordem que o ícone deverá aparecer na janela. O Item “ToolbarItemBarIndex” define a ordem que a “Toolbar” irá aparecer quando no seu projeto existir mais de uma “Toolbar”. No Item “Object Type” selecione “Menu”. A opção “Menu Cascate” é para o caso de seu menu ter subItens. Será visto adiante.

Repetiremos o mesmo processo para o item "Sair".

Dê um clique em “Sair” e no template “propriedades” selecione a “aba” “ToolBar”. Em “ToolBarItemText” digite “Sair”. No Item “ToolbarItemName” selecione “Exit!”. Você pode selecionar qualquer ícone, mas para que tenhamos uma coerência no nosso projeto aconselho que siga o parametrizado. No Item “ToolbarItemDownName”, você pode selecionar o ícone que irá ser exibido quando a figura estiver sendo pressionada com o mouse. No nosso exemplo, deixe em branco.

No Item “ToolbarItemVisible”, verifique se está marcado, . Esse item indica que a “Toolbar” estará visível.

No Item “ToolbarItemDown” deixe desmarcado . Esse item sem marcação indica que o “ToolbarItemName” selecionado aparecerá sempre como se estivesse pressionado.

Page 52: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 5

35

Projetando o menu No item “ToolbarItemSpace” mantenha “0”. Esse item define a quantidade de espaços que deverá existir entre os ícones. No item “ToolbarItemOrder” mantenha “0”. Esse item define a ordem que o ícone deverá aparecer na janela. No Item “ToolbarItemBarIndex” define a ordem que a “Toolbar” irá aparecer quando no seu projeto existir mais de uma “Toolbar”. No Item “Object Type”, selecione “Menu”, a opção “Menu Cascate” é para o caso de seu menu ter subItens. Será visto adiante. Os primeiros passos para montagem do menu principal da aplicação 01 já foram dados, adiante teremos a necessidade de incluir novos itens no menu, quando outras técnicas serão apresentadas.

Adquirido por : Fabrício Moreira da Silva

Page 53: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 6

A Linguagem PowerScript

Eventos

Ambiente de Script

A Linguagem PowerScript

Fundamentos da Linguagem PowerScript

Variáveis

Tipos de Dados

Escopo de Variáveis

Encapsulamento

Objetos e Controle

Execução de uma função por meio da

notação de ponto

Estruturas

Arrays

Arrays multidimensionais

Arrays variáveis

Dados de objetos

(continua)

Page 54: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 6

Operadores

Operadores Aritméticos

Operadores binários

Operadores unários

Operadores de combinação

Operador de string

Operadores lógicos

Operadores relacionais

Operadores de conjunção

Procedência e Parênteses

Comandos do PowerBuilder

O Uso da estrutura IF

Estrutura Choose Case

Estrutura Choose Case

Estrutura de iteração (Loops)

Estrutura de Do Loop

Estrutura For… Next

Adquirido por : Fabrício Moreira da Silva

Page 55: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 36

A Linguagem PowerScript. Até aqui foi aplicado o conceito de criação de janelas, janelas com herança e menu. Para continuarmos com o nosso exemplo teremos que abordar outros conceitos, como o uso de eventos, funções e da linguagem PowerScript. A linguagem PowerScript, sendo a linguagem de programação do PowerBuilder, controla o fluxo de um programa, atualiza banco de dados, exibe informações e mensagens de erro e ainda, encerra o programa. É importante que o desenvolvedor do PowerBuilder tenha um bom conhecimento do trabalho com o PowerScript. Nesta parte do manual iremos abordar :

!" Ambiente de Script !" Compreender os eventos!" Tipos de variáveis do PowerScript!" Entender as estruturas, objetos e os controles !" Escopo das variáveis

Programação a eventos não é um conceito novo no desenvolvimento de software. A programação mais antiga tem natureza seqüencial onde cada função pode ser considerada como resultante de uma instrução anterior. Contudo, no mundo real, a maior parte das funções de negócios são baseadas em eventos, não sendo seqüenciais. Funções baseadas em eventos são funções independentes e não obedecem a uma seqüência lógica. Em vez disso, certos eventos fazem com que as funções sejam executadas. Como conseqüência, o desenvolvimento de software se tornava difícil porque se tentava mapear o mundo baseado em eventos, nos programas de natureza seqüencial. A codificação no PowerBuilder se baseia em eventos. Se você dá um clique sobre um ícone é executado um certo PowerScript em um evento. Se uma janela perde o foco logo surge outra, e é executado outro PowerScript em outro evento. Programação de eventos se adapta melhor à maneira pela qual o usuário final irá utilizar sua aplicação.

Programação de eventos é um dos muitos pontos de destaque do PowerBuilder.

Page 56: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 37

A Linguagem PowerScript. É importante diferenciar Programação baseada em eventos de Ambiente de programação baseado em objetos. Muito poderia ser dito a respeito da programação baseada em objetos (OOP - Object-Oriented Programming). Para simplificar, as linguagens baseadas em objetos consistem em três maneiras principais para realizar a atividade de programação. 1. Toda função e grupo de funções inter-relacionadas (classes) não devem

afetar os valores de dados em outras funções.A a isto chamamos "Encapsulamento".

2. A linguagem deve permitir que seja reutilizada grande parte do seu código

antigo e seja efetuada alteração. 3. As funções que herdam características de cada uma das outras devem ter

a possibilidade de se personalizarem, quando necessário. A isso chamamos "Polimorfismo".

Uma vez implementado, o OOP facilita bastante o projeto interativo. O projeto interativo é um projeto que pode ser ampliado posteriormente com pouco esforço do desenvolvedor, e nele consiste em criar uma pequena parte de sua aplicação de cada vez. O projeto interativo é um subproduto do desenvolvimento baseado em objetos, o que permite desenvolver sua aplicação em blocos, desde o início até o fim. Enquanto um bloco está sendo avaliado e testado você pode ampliar facilmente seu trabalho anterior. Partindo desta filosofia de OOP, desde a versão 8.0 do PowerBuilder foi implantado a “WorkSpace” onde este conceito, antes implícito, agora fica explicito desde a inicialização do seu projeto. O PowerBuilder é “visual”, com implementações que não existem em outras Ferramentas de desenvolvimento "visual". No PowerBuilder você não programa sua aplicação, mas desenha a aplicação. Quando necessário qualquer atividade de programação ela é implementada por trás dos objetos projetados. Isto pode parecer um pouco estranho, mas na construção das nossas janelas e menus você não programou para que isso acontecesse, simplesmente você desenhou, utilizando os painter para desenvolver sua aplicação.

Adquirido por : Fabrício Moreira da Silva

Page 57: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 38

A Linguagem PowerScript. Ambiente de Script Um objeto do PowerBuilder é uma entidade que você desenvolve por meio do uso do PowerBar. Janelas, Menus, DataWindow e aplicações são exemplos de objetos. Os controles do PowerBuilder são construções que se associam aos objetos. Botões de comando, Figuras e DataWindow são exemplos de controles. Nota : Há uma diferença entre Objeto DataWindow e Controle DataWindow, será visto oportunamente. Cada controle e cada objeto podem ter um PowerScript ou Script. Vamos agora identificar o ambiente Script no PB 9.0. Dê um duplo clique no TREEVIEW à esquerda, no Objeto Window w_001. Na parte inferior do template da janela você poderá visualizar várias "abas" de tabelas como a figura abaixo.

Onde: Layout : É o template que exibe a janela que você criou. Open : É o template dos eventos relacionados ao objeto em foco, no caso a sua janela, quando selecionar outro evento do seu objeto, seu nome será exibido nessa "aba". Event List : Exibe os eventos já disponíveis para o objeto em foco. Function List: Exibe as funções pré-definidas para o objeto em foco. Declare Instance Variable : Exibe o template de declaração de variáveis de Instancia, Compartilhadas e Globais, assim como, declarações de funções externas Globais e Locais.

Page 58: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 39

A Linguagem PowerScript. Dê um clique na "aba" open e o template do script do evento "open" será exibido.

O template de script sempre se abre automaticamente pela primeira vez no evento "open". Ele se abrirá sempre no último evento que você codificou. Neste template é que você deverá escrever seu código, caso necessite, para ser executado quando a janela "w_001" se abrir. No quadro onde foi desenhado um circulo mais claro à esquerda, você poderá selecionar o que definir. Serão disponibilizados os objeto(s), o template para declarações de funções, seja do PB ou qualquer outro que você queira definir (desenvolver), ou o template para declarações e definições de variáveis e funções externas. No quadro à direita você poderá selecionar eventos pré-definidos ou definir um novo evento. Sempre que for disparado um evento será executado o script contido nesse evento, Isto é diferente das técnicas tradicionais em outros Front-End onde um código sempre tem que ser escrito para verificar a ocorrência de eventos, e para reagir a cada evento. O PowerBuilder predetermina os eventos para os quais você precisará, ou não, codificar. Entretanto pode ser necessário um evento especial que o PowerBuilder não tenha previsto. Para definir seus próprios eventos: No quadro de seleção de eventos, selecione (New Event).

Adquirido por : Fabrício Moreira da Silva

Page 59: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 40

A Linguagem PowerScript. E o template para definição do novo evento do usuário será disponibilizado.

Access : Neste caso ele será de acesso "Publico" Return Type : O tipo de dados que será retornado, Numérico, Caractere ou Binário, se você quiser que o evento retorne algum dado; quando definido como None não haverá retorno de dados. Event Name : O nome que você definirá para o seu evento. Pode ser qualquer nome, mas o ideal é que tenha sempre uma relação com a ação que você está definindo. Argument Type : Indica que tipo de dado será repassado para o evento. Pode ser tanto um dado de conteúdo, como valores ou textos, quanto objetos, Windows, botão etc. Argument Name : O nome definido pelo usuário para o tipo de dado definido. Ao preencher esse campo ou quando necessitar de mais campos para definir outras variáveis que o seu evento deverá receber, deve-se pressionar a tecla "TAB" para que essa linha seja repetida. Throws : Cria um trigger para uma exceção que ocorra neste evento. External : Caso esteja criando um evento para controlar um objeto externo.

Page 60: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 41

A Linguagem PowerScript. Event ID : Você poderá selecionar um dos eventos do PB que já estão definidos mas não disponibilizado para o objeto em foco. Também serve para selecionar um evento denominado "pbm_customX" onde X está em um intervalo de 1 a 75, mas neste caso, a passagem de parâmetros é padrão, ou seja deve-se não selecionar nenhum valor.

Fundamentos da Linguagem PowerScript

Comentário : // Barra dupla, Transforma em comentário o restante da linha. Também é possível incluir entre /* e */ uma seqüência de texto ou até mesmo diversas linhas. Exemplo : X = Y // Isto é comentário ou /* Isto também

é comentário */

Caracter de continuação : & E comercial, Algumas vezes uma linha de comando se estende além do limite da janela o que pode tornar difícil à depuração, a impressão ou a visualização do PowerScript. Digite o caractere de continuação &, ao final da linha, de modo a informar ao programa que o comando continua na linha seguinte. Exemplo : var_01 = "Aqui é um exemplo de con" & +"tinuação" Espaço em branco : Espaço em branco, ou seja, os espaços vazios entre variáveis, constantes ou comandos são ignorados em PowerScript. A exceção acontece quando se está no interior de uma variável string. Você pode inserir entre os comandos a quantidade de espaços que desejar. Dica : Lembre-se que a tecla "Enter" não é considerada como espaço em branco. O retorno do cursor somente são ignorados quando está dentro de um comentário. Variáveis Como qualquer outra linguagem o PowerScript permite que você utilize uma variável para armazenar valores. Algumas dessas variáveis são declaradas por você, outras são declaradas pelo próprio PowerBuilder.

Adquirido por : Fabrício Moreira da Silva

Page 61: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 42

A Linguagem PowerScript.

Tipos de Dados Toda variável tem um tipo de dado que informa ao desenvolvedor que tipo de informações estão armazenadas na variável, bem como também informa ao PowerBuilder qual a quantidade de espaços de armazenamento que deverá ser reservado e ainda como tratar a variável. Sintaxe: Tipo_de_dado nome_da_variavel

Para declarar uma variável do tipo inteira e numérica, utilizaremos:

Int contador

Onde : int é o tipo de dado Integer (inteiro) no caso e contador é o nome da variável.

Tipo de dado Faixa de variação Observação Boolean(booleano) TRUE ou FALSE Variável lógica Charater (caráter) Pode ser abreviado como char Date (data) De 01-01-1900 até 12-31-

3000 A data esta no formato mm-dd-aaaa. Não são permitidos espaços em branco.

DateTime 01-01-1900 00:00:00:0000 23:59:59:9999

Decimal Até 18 dígitos (todos significativos)

O separador pode estar em qualquer lugar entre os 18 dígitos. O tipo pode ser abreviado como dec

Integer (inteiro) De -32.768 até +32.767 Pode ser abreviado como int Long (longo) De -2.147.483.648 até

+2.147.483.647

String Até 60.000 caracteres Todos os caracteres ASCII Time (hora) De 00:00:00:0000

Até 23:59:59:9999 A hora é incrementada em segundos

Page 62: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 43

A Linguagem PowerScript.

Tipo de dados Faixa de variação Observação Blob Tipo de dado não vinculado que

significa objeto binário extenso. É usado geralmente para guardar figuras.

Double De 2.23E-308 até 1.78E308 Precisão de 15 dígitos DragObject Contém o tipo de objeto

arrastado. Object Contém o tipo de dados

enumerado de um objeto do PowerBuilder.

PowerObject Qualquer objeto do PowerBuilder, inclusive estruturas.

Real De 1.18e-38 até 3.40E+38 Precisão de 6 dígitos UsingnedInteger De 0 até 65.535 Pode ser abreviado como

unsignedint ou uint UnsignedLong De 0 até 4.294.967.295 Pode ser abreviado como ulong LongLong 64 bits De -

9223372036854775808 a 9223372036854775807.

Atenção : Todos os tipos de dados numéricos incluem faixas de variação para cada tipo de dado. Alguns tipos de dados numéricos também incluem dígitos de precisão (dígitos significativos) . Se você efetuar um cálculo com perda de dígitos significativos o PowerBuilder não informará sobre isto. Tenha cuidado !!! Além disso, se você exceder a faixa de variação do tipo de dado ocorrerá o rollover. O rollover acontece quando um número excede o limite de uma faixa de variação, e recomeça em outro extremo de faixa. Por exemplo, se você armazenasse 32.766 em uma variável inteira e acrescentasse cinco unidades a variável inteira conteria o valor -32.765 no campo. Em outras palavras foi efetuado o rollover de quatro unidades e agora você tem um valor incorreto guardado na sua variável inteira. Nenhuma mensagem de erro irá surgir se isso acontecer.

Adquirido por : Fabrício Moreira da Silva

Page 63: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 44

A Linguagem PowerScript. Escopo de Variáveis

Em linguagens mais antigas, como COBOL e BASIC, qualquer variável poderia ser acessada de qualquer local da aplicação . Atualmente , a

maior parte das linguagens aceita o conceito de escopo de variável. O escopo de variável descreve onde uma variável pode ser utilizada. O conceito de escopo de variável é importante. O escopo permite a um usuário escrever uma função ou um evento sem sobrescrever as variáveis de outra área da aplicação, mesmo que as variáveis tenham o mesmo nome. Há quatro níveis de escopo no PowerBuilder. Escopo local : As variáveis de escopo local (variáveis locais) são variáveis que você declara dentro do seu script. As variáveis definidas pelo usuário que você emprega são, em sua maioria, variáveis locais, que só existem no interior do evento ou da função em que são declaradas. Exemplo : Você pode declarar uma variável int contador no evento "open" da janela w_001 e declarar também int contador no evento "close" da mesma janela w_001. Neste caso você tem duas versões de contador isoladas uma da outra o que você fizer no contador no evento "open" não influenciará o contador no evento "close". Escopo de instancia : As variáveis de escopo de instancia são variáveis às quais o objeto inteiro tem acesso. Se você declara uma variável como sendo uma variável de instância de um objeto então qualquer evento, função ou controle desse objeto terá acesso à variável. Escopo Compartilhado : Em uma aplicação com janelas MDI você pode abrir mais de uma janela do mesmo tipo; ou seja, você pode abrir mais de uma "w_001". Essas versões múltiplas da mesma janela são chamados instancias da janela. As variáveis compartilhadas são variáveis que podem ser compartilhadas por todos os objetos, funções ou controles de cada instancia de um objeto. Escopo Global : As variáveis globais são acessadas por toda a aplicação. Elas nunca saem do escopo enquanto a aplicação não é fechada. Você não deve usar variáveis globais se outro tipo de variável servir. O uso de uma grande quantidade de variáveis globais viola o princípio do encapsulamento.

Page 64: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 45

A Linguagem PowerScript. Se você define uma variável global em um evento qualquer outro evento pode reinicializar a variável sem que aquele evento tome conhecimento do fato. Encapsulamento O termo encapsulamento é usado com freqüência na programação baseada em objetos. Quando uma função ou um evento estiver encapsulado isso significa que ele é independente. A função encapsulada não pode ter suas variáveis alteradas a partir do seu exterior. Além disso, a função encapsulada também não tem acesso a variáveis fora dela própria. O Encapsulamento é uma questão de grau. Para elevar o encapsulamento de um sistema ao maior grau possível existem algumas regras, a saber : 1. É desejável que todas as suas declarações de variáveis sejam locais. Essa

é a melhor maneira de encapsular seus dados, evitando que eles sejam danificados por outras funções e eventos. Nesse nível mais elevado de encapsulamento uma função ou um evento pode ser inserido em qualquer objeto e ainda funcionar de maneira apropriada.

2. Quando uma variável local não funciona porque você precisa preservar um

valor ou ter acesso à variável a partir de outras áreas do seu objeto, experimente usar uma variável de instância caso não resolva dessa forma use uma variável compartilhada.

3. Como último recurso utilize uma variável global. As variáveis globais

podem ser acessadas e alteradas por qualquer objeto ou função em uma aplicação.

Adquirido por : Fabrício Moreira da Silva

Page 65: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 46

A Linguagem PowerScript. Objetos e Controle Na programação orientada a objetos, freqüentemente você precisa se referir a um controle do interior de outro controle, necessitará alterar suas configurações originais (seus atributos) em tempo de execução.

Todo controle e todo objeto possui atributos ou variáveis que controlam a sua funcionalidade e a sua aparência. Podemos ter acesso

aos atributos de um objeto ou controle por meio da notação de ponto.

controle.atributoobjeto.atributo

Para definir um atributo você referencia o controle ou o objeto em que se encontra o atributo. Essa referência é seguida por um ponto (.) e pelo nome do atributo. A maior parte dos objetos e controles tem um atributo booleano chamado visible (visível) que estabelece se o objeto ou controle pode ser visto na tela. Suponha que exista um objeto botão (cb_01) na janela w_001. Para definir o atributo para o botão cb_01, usaríamos a seguinte notação: w_001.cb_01.visible = FALSE // botão está invisível

Você também pode verificar a propriedade do botão usando a seguinte instrução

IF: IF w_001.cb_01.visible THEN {executa alguma função}END IF Execução de uma função por meio da notação de ponto

Você também utiliza a notação de ponto para executar funções. Todo objeto bem como todo controle, têm um conjunto de funções que podem ser executadas em seu interior.

Page 66: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 47

A Linguagem PowerScript. A função Hide é compartilhada pela maioria dos controles e objetos, e estabelece o atributo visible como FALSE. Para ocultar o botão cb_01 na janela w_001 através de uma função ao contrário de ocultá-lo por meio de um atributo, use a função: w_001.cb_01.Hide ()

No mesmo patamar teremos Show para estabelecer o atributo visible como TRUE. Para tornar o botão cb_01 visível na janela w_001 através de uma função use a função abaixo: w_001.cb_01.Show ()

Se você estiver no escopo do objeto, que você quer alterar seu atributo, você pode referenciá-lo diretamente. cb_01.Hide () ou cb_01.Show () ouThis.Hide () ou This.Show ()

A notação de ponto é utilizada largamente em linguagens orientada a objetos. Por ser uma linguagem totalmente estruturada você pode navegar pela estrutura dos objetos através da notação de pontos. Exemplo : Se você quiser acessar o evento “Clicked!”, do item “Sair” do menu m_menu01, no qual definimos o comando PowerScript “Close (w_001)” sem precisar clicar no item “Sair” escreva : M_menu01.m_sair.TriggerEvent (Clicked!) Com este comando PowerScript você faz o PowerBuilder imaginar que o usuário abriu o menu “Arquivo” e escolheu a opção “Sair”. Você pode usar a função TriggerEvent no PowerBuilder com a finalidade de forçar o PowerBuilder a executar um evento. TriggerEvent usa um único argumento. Este pode ser uma string contendo o nome do evento ou um tipo de dados enumerado do PowerBuilder descrevendo o evento. Clicked! é um tipo de dado enumerado que descreve um evento clicked acionado.

Adquirido por : Fabrício Moreira da Silva

Page 67: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 48

A Linguagem PowerScript. Estruturas

Você usa as estruturas para criar seu próprio tipo de dados. As estruturas contêm muitas variáveis inter-relacionadas diferentes de diversos tipos agrupadas sob um nome único. As estruturas permitem que você faça a movimentação dos dados e usando um único nome, para fazer referência a eles.

Criando uma estrutura.

Clique em “New”, selecione “PB Object” e clique em “Structure”

O template para a criação da estrutura é bem simples, com um quadro para a seleção do tipo de dados e um quadro para a definição do nome da variável, ao final clique em salvar. Nota : É sempre importante você utilizar a padronização para nomes de objetos, funções e etc.

Page 68: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 49

A Linguagem PowerScript. Você acabou de criar uma estrutura global. O PowerBuilder também permite declarar estruturas locais que só podem ser acessadas no objeto em que foram criadas. Para criar uma estrutura local no PB 9 abra a janela à qual você quer que sua estrutura pertença, clique em “Insert” no menu principal e selecione “Structure”, abrindo o painter de criação de estrutura. Ao salvar essa estrutura ela só poderá ser acessada dentro da instância dessa janela. A qualquer momento você pode alterar a sua estrutura, incluindo, excluindo ou alterando tipo e nome de dados. Acessando uma estrutura Você terminou de criar a sua estrutura, mas lembre-se de que uma estrutura é um tipo de dado e não uma variável. Ainda é preciso declarar variáveis usando a sua estrutura, e depois utilizar a notação de ponto para obter acesso às variáveis no interior da estrutura. Para um melhor entendimento vamos criar uma pseudo-estrutura: Nome da estrutura : str_identifica Variável 1 string : s_nome Variável 2 string : s_sigla Variável 3 string : s_senha Em PowerScript : // cria a variável identifica_usuario com o modelo de dados da // estrutura str_identifica str_identifica identifica_usuario //criando variáveis locais com o mesmo padrão de dados da estrutura string nome string sigla, senha

Adquirido por : Fabrício Moreira da Silva

Page 69: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 50

A Linguagem PowerScript. //atribuindo dados a variáveis locais. nome = “Roberto” sigla = “bob” senha = “power” // Atribuindo dados à estrutura identifica_usuario.s_nome = nome identifica_usuario.s_sigla = sigla identifica_usuario.s_senha = senha ARRAYS

Os arrays são séries de variáveis indexadas do mesmo tipo de dados. Você declara um array colocando um número entre colchetes logo após uma declaração de dados. Ao declarar uma variável inteira de nome “X” criamos uma única célula de inteiro na memória. Int x

Acrescentando [5] à declaração do inteiro “X” você passa a ter cinco inteiros declarados. Int x[5]

Os arrays podem ser acessados usando o nome do array seguido por um número entre colchetes X[1] X[2] X[3] X[4] X[5]

Page 70: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 51

A Linguagem PowerScript. Arrays Multidimensionais Se a declaração de um array tiver mais de um conjunto de números depois dela, isto significa que foi declarado um array multidimensional. Array simples Int X [5] X[1] X[2] X[3] X[4] X[5] Array Multidimensional int x[4,5] X[1,1] X[1,2] X[1,3] X[1,4] X[1,5] X[2,1] X[2,2] X[2,3] X[2,4] X[2,5] X[3,1] X[3,2] X[3,3] X[3,4] X[3,5] X[4,1] X[4,2] X[4,3] X[4,4] X[4,5] Onde : Int x[linha, coluna]

Array variáveis Os arrays variáveis são arrays cujo tamanho não é definido no momento da declaração. Para declarar um array variável deixe o número fora dos colchetes quando declarar o array. O tamanho será estabelecido com o primeiro acesso a esse array. Int x [] // Define o limite superior do array como 35 e preenche a posição 35 // com o dado 1234 Int x [35] = 1234

Adquirido por : Fabrício Moreira da Silva

Page 71: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 52

A Linguagem PowerScript. Dados de objetos

Os objetos que você declara constituem um tipo de dados. Esses tipos de dados especiais são chamados de instâncias do seu objeto. O principal uso das variáveis de instâncias é a abertura de várias versões da mesma janela em um quadro MDI. Desejando abrir duas janelas w_001 você poderia usar o seguinte trecho de código: W_001 janela1 // declara a primeira instância de w_001 W_001 janela2 // declara a segunda instância de w_001 Open (janela1,w_001) Open (janela2,w_001) A sintaxe anterior abre duas janelas. Você pode navegar entre as janelas utilizado “Alt+Tab”. Operadores

Existem quatro tipos de operadores: aritméticos, de strings, lógicos e de agrupamento. !" Operadores aritméticos são usados em cálculos matemáticos; !" Operadores lógicos são utilizados para realização de testes de

condições; !" Operadores strings executam funções sobre variáveis do tipo string; !" Operadores de agrupamento são os parênteses esses afetam a ordem

na qual os outros operadores serão executados; Operadores Aritméticos. Os operadores aritméticos podem ser divididos em três categorias : !" Operadores binários; !" Operadores unários; !" Operadores de combinação;

Page 72: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 53

A Linguagem PowerScript. Os operadores binários exigem dois operandos (variáveis ou constantes) Os operadores binários do PowerBuilder estão relacionados na tabela abaixo: Símbolo Nome Exemplo Descrição ^ Exponenciação a ^ b Eleva a, à potência

representada pelo expoente b + Adição a + b Soma a + b - Subtração a - b Subtrai b de a * Multiplicação a * b Multiplica a por b / Divisão a / b Divide a por b = Igualdade a = b Atribui o valor de b em a Os operadores unários requerem um único operando. Os operadores unários do PowerBuilder encontram-se na tabela abaixo. Símbolo Nome Exemplo Descrição - Negativo - a Simboliza o valor negativo

de a + Positivo + a Simboliza o valor positivo

de a ++ Incremento a ++ Incrementa uma unidade

ao valor de a -- Decremento a -- Decrementa uma unidade

ao valor de a

Adquirido por : Fabrício Moreira da Silva

Page 73: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 54

A Linguagem PowerScript. Os operadores de combinação são operadores binários que combinam as características de dois operadores , o operador de igualdade e o de adição ou subtração. Como os operadores de combinação são binários, eles exigem dois operandos. Símbolo Nome Exemplo Descrição += Plus Equal a+=b Defina a, como igual a a + b -= Minus Equal a-=b Define a, como igual a a - b *= Times Equal a*=b Define a, como igual a a * b /= Divide Equal a/=b Define a, como igual a a / b ^= Power Equal a^=b Define a, como igual a a ^ b O único operador de string do PowerBuilder usa um sinal de adição (+) para concatenação. String x1 = “Power” String x2 = “Builder” String x3 = x1 + x2 O valor resultante em x3 é : “PowerBuilder” Os operadores lógicos testam se uma condição é verdadeira ou falsa. Há dois tipos de operadores lógicos: os operadores relacionais e os operadores de conjunção.

Page 74: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 55

A Linguagem PowerScript. Os operadores relacionais são sempre binários e, portanto, exigem dois operandos. Símbolo Nome Exemplo Descrição = Igual a = b Retorna TRUE se a é igual

a b > Maior que a > b Retorna TRUE se a maior

que b < Menor que a < b Retorna TRUE se a é

menor que b >= Maior que ou igual

a a>=b Retorna TRUE se a é maior

ou igual a b <= Menor que ou igual

a a<=b Retornar TRUE se a é

menor ou igual a b < > Não igual a <> b Retorna TRUE se a não é

igual a b Todo operador relacional que não retorna TRUE, retorna FALSE. Os operadores de conjunção têm expressões relacionais com seus operandos. Os três operadores de conjunção do PowerBuilder são dois operadores binários , (AND e OR), e um operador unário, (NOT). Suas funções podem ser vistas na tabela verdade abaixo:

a b a AND b b OR b Not a TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE

A primeira linha pode ser lida como “Se a é TRUE e b é TRUE, então a AND b é TRUE, a OR b é TRUE e NOT a é FALSE”

Adquirido por : Fabrício Moreira da Silva

Page 75: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 56

A Linguagem PowerScript. Procedência e Parênteses

Certas operações têm precedência sobre outras. Por exemplo, 5 + 4 * 3 pode parecer que resulta em 27, porque 5 + 4 = 9 e 9 * 3 = 27. Na verdade, essa equação resulta em 17, porque a multiplicação (*) tem precedência sobre a adição (+). Desse modo 4 * 3 é avaliado primeiro totalizando 12, em seguida é somado o valor 5 a esse resultado. Para que o resultado fosse 27, teríamos que escrever : (5 + 4) * 3 Comandos do PowerBuilder A linguagem PowerScript contém dois tipos de instruções: funções embutidas (ou internas) e comandos. Embora existam muitas funções internas há somente três tipos principais de comando: os comandos de atribuição que atribuem um valor a uma variável; as estruturas de decisão que consistem em instruções IF e instruções Choose Case; e as estruturas iterativas (ou de loops), que consistem em loops Do e loops For...Next.

As estruturas de decisão são comandos que avaliam variáveis. O PowerBuilder aceita dois tipos de estruturas de decisão: a estrutura

IF..ElseIf..Else...End (ou apenas a estrutura IF) e a estrutura Choose Case. O Uso da estrutura IF

A instrução IF avalia variável. Com base nessa avaliação a instrução IF realiza alguma forma de ação.

IF a < b THEN Um comando ou conjuntos de comandos

END IF IF a < b THEN um comando // dispensa o END IF IF a < b THEN Um comando ou conjuntos de comandosELSE Um comando ou conjuntos de comandosEND IF

Page 76: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 57

A Linguagem PowerScript. IF a < b THEN Um comando ou conjuntos de comandos

ELSEIF a < c THEN Um comando ou conjuntos de comandos ELSEIF a > d THEN Um comando ou conjuntos de comandos

ELSE Um comando ou conjuntos de comandos

END IF Você pode ter quantas cláusulas ELSEIF desejar em uma instrução IF. O Uso de instrução IF é uma forma eficiente de controlar o fluxo do seu programa de acordo com as informações existentes. Estrutura Choose Case

A estrutura CHOOSE CASE avalia uma única variável de diversas maneiras diferentes. Choose Case variável_a_ser_testada Case expressão 1 Um comando ou conjuntos de comandos

Case expressão 2 Um comando ou conjuntos de comandos

Case Expressão 3 Um comando ou conjuntos de comandos

Case ESLE Um comando ou conjuntos de comandos

END Choose

Adquirido por : Fabrício Moreira da Silva

Page 77: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 58

A Linguagem PowerScript. Exemplo:

Choose Case salario Case is > 4000

Um comando ou conjuntos de comandos Case 2000 to 3000

Um comando ou conjuntos de comandos Case 2000, 2100,2200

Um comando ou conjuntos de comandos Case 5000

Um comando ou conjuntos de comandos Case Else

Um comando ou conjuntos de comandos END Chosse

Estrutura de iteração (Loops)

As estruturas de loops são construções que causam a execução de uma série de comandos um certo número de vezes. A linguagem PowerScript tem duas estruturas de loop: a estrutura Do Loop e a estrutura For...Next. Estrutura Do Loop

Em PowerScript é uma maneira eficiente de implementar um loop. Existem quatro maneiras de implementação. Do While condição 1 Conjunto de comandos 1 Loop Do Until condição 2 Conjunto de comandos 2 Loop Do Conjunto de comandos 3 Loop Until condição 3 Do Conjunto de comandos 4 Loop While condição 4

Page 78: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 6 59

A Linguagem PowerScript. Estrutura For… Next

Outro tipo de estrutura de loop é o loop For.. Next que combina a iteração e o incremento de um contador. For variável_numérica = inicio TO fim { Step incremento } Conjunto de comandos Next

For a = 1 to 10 For a = 100 to 1 Step -1 b = b + a b = b + a Next Next

Adquirido por : Fabrício Moreira da Silva

Page 79: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 7

Transações de Bancos de Dados

Definindo uma transação

Montando a transação em PowerScript

O uso do SQL no PowerBuilder

Page 80: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 7

60

A Linguagem PowerScript. Transações de Bancos de Dados.

Os objetos de transações são usados pelo PowerBuilder para se comunicar com um banco de dados. Antes de usar um banco de dados você tem que defini-lo no objeto de transação. Embora você possa definir sua própria variável de transação o PowerBuilder lhe oferece uma variável padrão, SQLCA. Um objeto (ou estrutura) de transação como SQLCA possui quinze campos. Dez desses campos precisam ser preenchidos pelo desenvolvedor, os outros cincos são usados para uma área de retorno depois que você efetua a chamadas de SQL.

Atributo Tipo de dado Descrição DBMS String nome do tipo de banco de dados Database String nome do banco de dados ao qual você esta

se conectando UserId String Identificação do usuário que esta se

conectando ao banco DBParm String Específica de um DBMS DBPass String senha que será usada para conexão com o

banco de dados. Lock String nível de bloqueio LogId String nome ou identificação do usuário que irá

se conectar ao servidor LogPass String senha usada para a conexão ao servidor ServerName String nome do servidor no qual reside o banco

de dados AutoCommit Boolean Indicador automático de Commit, (TRUE)

automático.

Adquirido por : Fabrício Moreira da Silva

Page 81: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 7

61

A Linguagem PowerScript.

Atributo Tipo de dado Descrição SQLDBCode Long Código de sucesso ou falha da operação de

SQL mais recente: 0 = Sucesso; 100 = Nenhum conjunto de resultados retornado; -1 = Erro (Use SQLDBCode ou SQLErrText para obter os detalhes).

SQLDBNRows

Long O Número de linhas afetadas.

SQLDBCode Long O código de erro do fornecedor do banco de dados.

SQLErrText String A mensagem de erro do fornecedor do banco de dados

SQLReturnData

String Dados de retorno específicos do DBMS

Definindo uma transação

Transação : SQLCA DataBase : TESTE Usuário : joao Senha : 12345 CONEXÃO : VIA ODBC Montando a transação em PowerScript.

SQLCA.DBMS = “ODBC” SQLCA.Database = “TESTE” SQLCA.USERID = “joao” SQLCA.DBPass = “12345” SQLCA.DBParm =

“ ConnectString=´DSN=TESTE;UID=DBA;PWD=SQL´” // Conectando

CONNECT USING SQLCA;

Page 82: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 7

62

A Linguagem PowerScript. //Testando a conexão IF SQLCA.SQLCode <> 0 THEN Messagebox (“DataBase”, “Erro ao conectar”)

HALT END IF Definindo uma transação

Transação : SQLCA DataBase : TESTE Usuário : joao Senha : 12345 CONEXÃO : NATIVA ORACLE Montando a transação em PowerScript. sqlca.DBMS = "O73 Oracle 7.3" sqlca.database = “” sqlca.userid = “” sqlca.dbpass = “” sqlca.logid = "joao" sqlca.logpass = "12345" sqlca.servername = @ORACLE_PROD sqlca.dbparm = DelimitIdentifier='No',Block=1000 // Conectando

CONNECT USING SQLCA; //Testando a conexão IF SQLCA.SQLCode <> 0 THEN Messagebox(“DataBase”, “Erro ao conectar”)

HALT END IF

Adquirido por : Fabrício Moreira da Silva

Page 83: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 7

63

O uso do SQL no PowerBuilder. A SQL(Structures Query Language) é uma linguagem comum encontrada em muitos bancos de dados. A SQL foi criada para oferecer ao desenvolvedores um método comum para atualização e recuperação de dados de tabelas de um banco de dados. A SQL permite o acesso a um banco de dados a partir do painter PowerScript. Pode ser que você não tenha percebido, mas escrever instruções em SQL pode ser um trabalho penoso. Você é obrigado a conhecer além da sintaxe de SQL, as colunas das tabelas que deseja acessar. O PowerBuilder responde a essa exigência através do seu Painter de SQL.

O ícone “DataBase” fornece acesso ao “DataBase Administration” um ambiente visual que proporciona um total controle de acesso, edição e desenvolvimento de bancos de dados.

Page 84: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 7

64

O uso do SQL no PowerBuilder.

No ícone “DB Profile” DataBase Profile você pode criar, modificar e excluir uma conexão.

Se você instalou o PB 9 e o SQL AnyWhere Studio poderá ter acesso ao banco EAS Demo Db V9 que acompanha o PB 9.0 e verificar a potencialidade deste painter. Na figura anterior, no template Object Layout, você pode visualizar graficamente todo o seu banco assim como seus relacionamentos. Clique em

para expandir o item ODB ODBC , em seguida clique em “Table” para listar as tabelas do banco EAS Demo Db V9. Coloque o mouse sobre a tabela “bônus”, pressione o botão esquerdo e arraste para o template ObjectLayout onde você poderá visualizar a tabela bonus.

Adquirido por : Fabrício Moreira da Silva

Page 85: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 7

65

O uso do SQL no PowerBuilder.

Clicando com o botão direito do mouse sobre a barra de titulo da tabela aparecerá o menu-popup .

Page 86: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 7

66

O uso do SQL no PowerBuilder. Close : Fecha a tabela em foco. New : Habilita a criação de Index, Foreign Key, Primary Key e Coluna para a tabela em foco. Edit Data : Edita a tabela no formato Grid, Tabular ou Livre permitindo

inclusão, alteração e exclusão de dados.

DataPipeline : Ativa o template de PipeLine. O PipeLine é um objeto do PowerBuilder que auxilia na construção, manutenção, cópia e exportação de dados. Alter Table : Habilita o template para a alteração física da tabela, nome da coluna, tamanho do campo etc. Drop Table : Exclui fisicamente uma tabela. Print Definition : Imprime a definição da tabela em foco. Export Sintaxe : Exporta a sintaxe de criação para o parâmetro de ODBC selecionado, da tabela em foco. Properties : Exibe as propriedades da tabela.

Adquirido por : Fabrício Moreira da Silva

Page 87: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 8

DataWindow

Objeto DataWindow

Fonte de dados

Interface inteligente

Interface com o usuário

Como criar um objeto DataWindow

Fontes de dados

SQL Select

Query

Stored Procedure

External

Montando uma DataWindow com SQL

Select

Template de SQL

Argumentos

(continua)

Page 88: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 8

Personalizando sua DataWindow

Composite

Crosstab (planilha)

FreeForm (Formulário livre)

Graph (Gráfico)

Grid (Grade)

Group (Grupo)

Label (Etiquetas)

N-up (Múltiplas linhas)

Olé 2.0

RichText

Tabular

Cores e Bodas

Adquirido por : Fabrício Moreira da Silva

Page 89: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 67

DataWindow Objeto DataWindow

O objeto DataWindow é um objeto exclusivo do PowerBuilder. É usado para recuperar, apresentar, manipular e atualizar dados de uma base de dados relacional ou de outras fontes de dados.

Esse objeto encapsula as informações sobre a fonte de dados. Inclui também informação de formatação que descreve como o dado deve ser apresentado no controle DataWindow. A informação codificada no objeto DataWindow é usada pelo núcleo da DataWindow para fornecer uma interface inteligente entre o cliente e o servidor em tempo de execução. Buffers são associados ao objeto DataWindow para armazenar os dados. Estes dados são referenciados como result set.

Page 90: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 68

Fonte de dados Uma das informações encapsuladas no objeto é a fonte de dados. Existem dois tipos de fontes de dados:

!" Relacional, que deve executar um comando SELECT em uma tabela ou view, ou um EXECUTE PROCEDURE

!" Não relacional, para importar arquivos seqüenciais (nos formatos TXT, DBF, CSV e XML) ou pela digitação do usuário.

Interface inteligente

O núcleo do objeto administra todo o relacionamento que deve existir entre a máquina cliente e o servidor de banco de dados. Por exemplo, o núcleo da DataWindow sabe onde existe um item de dado alterado, quando um item de dado é obrigatório, qual é o tipo de dado e quando um valor passa pelas regras de validação. Antes de o processamento iniciar o núcleo da DataWindow realiza todas essas checagens nos dados assegurando a validade dos mesmos.

Interface com o usuário

O PowerBuilder fornece uma variedade de features para criação de uma interface com o usuário atrativa e amigável. Permite que se escolha o estilode apresentação dos dados recuperados.

Os estilos possíveis são: tabular, grid, freeform, label, N-up, OLE, rich text, groups, graphs, crosstabs, e composite.

Exemplo:

Adquirido por : Fabrício Moreira da Silva

Page 91: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 69

Como criar um objeto DataWindow

O PowerBuilder também fornece outras facilidades para melhorar o formato padrão de apresentação. Por exemplo, podemos reorganizar e classificar os itens de dados. Podemos, também, adicionar elementos gráficos como linhas, círculos e retângulos, botões, figuras, etc.

1. Na PowerBar1 clique em New. 2. No template New selecione o tipo de estilo que sua DataWindow

deverá apresentar. (figura 1.1) 3. No Template Fonte de Dados, (figura 1.2), você deve selecionar o

tipo de fonte de dados que sua DataWindow irá processar. Figura 1.1

Page 92: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 70

Fontes de dados.

Figura 1.2

Entendendo Fonte de Dados No PowerBuilder, existem cinco maneiras de sua DataWindow, recuperar dados, a saber:

1. Quick Select;2. SQL Select;3. Query;4. Store Procedures;5. External.

Quick Select. No PowerBuilder é a forma mais simples de definir a fonte de dados. Você não escreve nada, apenas desenha com o mouse o tipo de dado. Esta opção impõe alguns limites pois a navegação entre a tabela só é possível através dos seus relacionamentos. O Tipo de SELECT utilizado é o mais simples, apenas a cláusula WHERE é suportada.

Adquirido por : Fabrício Moreira da Silva

Page 93: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 71

SQL Select. Permite que o desenvolvedor selecione livremente o conjunto de tabelas do banco de dados. Suporta todas as clausulas pertencentes ao comando SELECT, padrão ANSI (ODBC) e padrão do seu banco, com a conexão nativa. Query

O mesmo tipo de comando SELECT da opção SQL Select pode ser obtido usando o template Query. Este comando, uma vez salvo na biblioteca PowerBuilder como um objeto do tipo Query, pode ser utilizado como base para a construção de objetos DataWindow. Stored Procedure

Esta seleção retorna uma lista de stored procedures gravadas no banco de dados atualmente conectado. Uma stored procedure é um conjunto de comandos SQL que executam uma operação no banco de dados. Quando escolhemos uma stored procedure da lista o objeto DataWindow constrói o result set da DataWindow em função das colunas recuperadas pela stored procedure selecionada.

O uso de Stored Procedures pode incrementar a performance pela redução:

!" do número de passos que a DataWindow percorre para recuperar dados

!" do tráfego na rede

O DBMS compila a stored procedure no momento da sua criação. External

O PowerBuilder possibilita que o desenvolvedor forneça externamente a fonte de dados para construção da DataWindow. Para isso o padrão EXTERNAL foi disponibilizado. Tal opção exige que se informe o nome do dado e o formato para cada coluna.

Page 94: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 72

Montando uma DataWindow com SQL Select

Quando selecionado o SQL Select, o template para seleção das tabelas disponíveis no banco de dados conectado é apresentado. Ao fundo o template de construção da DataWindow receberá a sua seleção. Com um duplo clique no nome da tabela selecione a(s) tabela(s). Ao final clique em “Cancel” .

Selecionando as tabelas “departament” e “employee” como exemplo, teremos no template de “Layout”:

Neste exemplo, escolhemos um conjunto de tabelas que possuem

relacionamentos onde representa o “Join” entre as tabelas. Um duplo clique sobre o símbolo do “Join” abrirá o template de possibilidades de junção da tabela, sempre com a opção definida com foco.

Adquirido por : Fabrício Moreira da Silva

Page 95: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 73

Montando uma DataWindow com SQL Select A tabela a seguir, descreve as possibilidades de “Join”. Símbolo Descrição*= Tabela A = tabela B e linhas da tabela A que não tenham

correspondência em B =* Tabela A = tabela B e linhas da tabela B que não tenham

correspondência em A > Tabela A > que tabela B < Tabela A < tabela B <= Tabela A menor ou igual à tabela B >= Tabela a maior ou igual à tabela B <> Tabela a diferente da tabela B Você também pode especificar um “Join” manualmente. Para isso clique no

ícone Join e selecione a(s) coluna(s) para realização desse “Join”. Ao término clique no ícone “Join” outra vez. Assim como podemos criar, podemos excluir um “Join”. Dê um duplo clique no

ícone no template “Join” e selecione a opção à excluir em seguida clique no botão “Delete”.

Page 96: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 74

Montando uma DataWindow com SQL Select Template de SQL

Neste template, localizado na parte inferior do template DataWindow, existem algumas ferramentas de auxílio na construção do seu comando SQL, são elas:

Template SQL

Onde : Sort : Seleciona as colunas para a classificação do resultado da query. A colunas selecionadas farão parte da clausula “Order By”. Where : Define o critério de seleção de dados na query. Group : Agrupa logicamente o resultado da query criando um grupo definido pelo desenvolvedor para sumarizar os dados da(s) coluna(s) selecionada(s). Having : Restringe os dados recuperados pela query, baseado na seleção feita pelo desenvolvedor. Compute : Cria uma nova coluna, com referência, ou não, a outras colunas da tabela selecionada. Syntax : Exibe a query montada. Nota : Muitas vezes poderá ser interessante manipularmos os dados da tabela. Por exemplo, na tabela existem as colunas salario e gratificacao. Só o que interessa no relatório é a renda composta pelo salario + gratificação. É mais lógico trafegar pela rede somente a informação de renda do que as informações de salário e gratificação que serão somadas na máquina cliente. Para excluir uma coluna computada basta limpar a sua especificação na pasta Compute.

Adquirido por : Fabrício Moreira da Silva

Page 97: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 75

Montando uma DataWindow com SQL Select A cláusula Where, se existir, contém o critério lógico do relacionamento entre as tabelas escolhidas. Se não desejarmos recuperar todas as

linhas do banco de dados, devemos acrescentar um critério lógico para seleção das linhas. Normalmente a cláusula Where é formada por colunas do banco de dados, colunas computadas e argumentos de recuperação, fornecidos pela aplicação ou pelo usuário. Argumentos

O PowerBuilder permite que você defina argumentos. Argumentos são variáveis que serão encaminhadas na chamada de execução da query, com o propósito de filtrar a seleção. Selecione no menu principal, item ‘Design “ e sub item” Retrieve Arguments “ para exibir o template de definição”:

Escreva o nome do argumento e o tipo de variável. Ao final clique em “OK”. Outro método muito interessante é que o PowerBuilder disponibiliza o modo “Syntax”, da sua query, onde você poderá incluir manualmente (digitando direto) definições mais elaboradas na sua query. No Menu principal, selecione “Design” e sub item “Convert to Syntax” para retornar ao modo gráfico. Então, selecione “Design” e sub item “Convert to Graphics”. Atenção : Algumas implementações não serão suportadas no modo “Gráfico” mas funcionarão perfeitamente no modo “Syntax”.

Page 98: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 76

Montando uma DataWindow com SQL Select Com as colunas selecionadas e a query montada, clique no ícone

Return, e o PowerBuilder montará sua DataWindow nos padrões de sua seleção, tanto em estilo quanto em recuperação de dados.

Para retornar ao template do SQL clique em Data Source. Entendendo o template da DataWindow.

No painter “Design” da DataWindow você pode movimentar os objetos a vontade até que melhor lhe sirva o Layout. Para Alterar o conteúdo dos “label”, que está em negrito, basta selecioná-los com um clique.

Adquirido por : Fabrício Moreira da Silva

Page 99: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 77

Montando uma DataWindow com SQL Select Toda alteração será representada automaticamente no template Preview. Para

atualizar os dados no template preview clique em Preview.

Personalizando sua DataWindow

O painter DataWindow fornece vários recursos para formatação da interface com o usuário:

!" Estilos de apresentação predefinidos.

!" Funções para geração de relatórios

!" Funções para ajuste do formato das colunas e seus cabeçalhos.

O PowerBuilder fornece vários estilos de apresentação predefinidos para auxiliar na formatação dos dados. Cada estilo de apresentação representa um formato diferente.

Page 100: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 78

Personalizando sua DataWindow

Composite

O Estilo composite consiste em um Objeto DataWindow com vários objetos DataWindow inseridos. Trata-se de uma maneira bem profissional de apresentar um relatório pequeno com várias informações de estilos e origem, distintos ou não.

Adquirido por : Fabrício Moreira da Silva

Page 101: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 79

Personalizando sua DataWindow

Crosstab (planilha)

O estilo de apresentação crosstab apresenta os dados de forma sumarizada, em células subordinadas a uma linha ou coluna.

Page 102: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 80

Personalizando sua DataWindow

FreeForm (Formulário livre)

O estilo de apresentação freeform é muito flexível. Com este estilo, as colunas e seus labels são distribuídos na vertical. É possível organizar as colunas automaticamente em vários agrupamentos verticais através da especificação da altura máxima de uma coluna no painter DataWindow. Por default a DataWindow tem somente um campo em cada linha.

Adquirido por : Fabrício Moreira da Silva

Page 103: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 81

Personalizando sua DataWindow

Graph (Gráfico)

O estilo de apresentação gráfico fornece uma apresentação gráfica do result set em vários estilos. Podemos escolher entre vários estilos, de duas e três dimensões, incluindo gráfico de barras, linha, área, pizza, etc.

Page 104: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 82

Personalizando sua DataWindow

Grid (Grade)

O estilo de apresentação grid exibe os dados em colunas separadas por linhas de grid. Em tempo de execução, ou no modo preview, o estilo grid permite que se arraste o grid vertical de uma coluna para aumentar ou diminuir a sua largura além de trocar a seqüência das mesmas.

No modo design, não se pode movimentar as colunas. Podemos, no entanto, trocar a ordem da coluna, executando o modo preview e arrastando as colunas para a posição desejada.

Adquirido por : Fabrício Moreira da Silva

Page 105: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 83

Personalizando sua DataWindow

Group (Grupo)

É parecido com o estilo tabular, mas ele simplifica a construção de um objeto DataWindow tabular com agrupamentos.

Quando se escolhe o estilo group, o template DataWindow exibe caixas de diálogo para definir cabeçalho de agrupamentos, gerar subtotal de agrupamentos e total geral para os campos numéricos .

Page 106: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 84

Personalizando sua DataWindow

Label (Etiquetas)

Apresenta os dados na forma de etiquetas. Podemos escolher o estilo da etiqueta a partir de uma relação ou especificar uma configuração personalizada.

N-up (Múltiplas linhas)

Suporta a exibição de múltiplas linhas, repetidas horizontalmente. É útil quando a linha de detalhe é estreita.

Adquirido por : Fabrício Moreira da Silva

Page 107: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 85

Personalizando sua DataWindow

Olé 2.0

Conecta com servidores OLE que suportem o protocolo Uniform Data Transport (UDT). Tais como Microsoft Word, Microsoft Graph, ou Microsoft Excel entre outros, registrados na máquina cliente.

RichText

Uma DataWindow com o estilo de apresentação RichText, permite:

!" Carregar arquivos RTF (RichText Format)

!" Incluir cabeçalhos e rodapés

!" Usar várias fontes, cores e tamanhos dentro de um único controle

!" Fornecer funções de edição ao usuário

Page 108: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 86

Personalizando sua DataWindow

Tabular

Exibe as colunas de dados em linhas no controle DataWindow. Formata um cabeçalho sobre cada coluna. Podem-se movimentar as colunas livremente, agrupá-las e personalizar cabeçalhos.

Adquirido por : Fabrício Moreira da Silva

Page 109: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 8 87

Personalizando sua DataWindow

Cores e Bodas Ao término da etapa de criação da DataWindow, surgirá o template para definição do estilo de borda, cores e distâncias entre as “bands” (faixas). Aconselha-se manter o default nesta etapa de criação. Tais dados podem ser alterados facilmente no template da DataWindow e, ainda com uma melhor visualização dos resultados.

Marque o item “Save as default” para criar a DataWindow com características padrão.

Page 110: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 9Recuperação de dados a partir de uma

DataWindow

Funções para o controle DataWindow

Montando um Objeto DataWindow

Aperfeiçoando a visualização da DataWindow

Vinculando duas DataWindow

Vinculando objeto DataWindow a um controle

DataWindow

Incluindo controle DataWindow a Window

Incluindo parâmetros de atualização

Rotina de inclusão

Rotina de alteração

Rotina de Exclusão

Adquirido por : Fabrício Moreira da Silva

Page 111: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 88

Recuperação de dados a partir de uma DataWindow.

No PowerBuilder basicamente toda recuperação e atualização de dados são realizadas por controles de DataWindow associados com objetos de DataWindow. O Objeto DataWindow mantém o controle sobre a fonte de dados sua formatação, validação e atualização. O Controle DataWindow é usado para exibir os dados selecionados no objeto DataWindow. Sendo a interface entre o banco de dados e o usuário é nesse controle que devemos inserir os códigos PowerScript que se farão necessários para a manipulação correta da base de dados como; inclusão, alteração, validação e exclusão. Para tanto o controle DataWindow disponibiliza algumas funções já programadas que facilitam muito a manipulação de dados na DataWindow.

No controle DataWindow está disponibilizado uma lista de eventos pré-programados, ao contrario de outras linguagens, o PowerScript não precisa de uma programação para detectar se um evento foi ou não disparado. Os eventos disponíveis no controle DataWindow sempre são disparados quando a condição à qual eles foram programados acorrerem, o evento “CLICKED!” será disparado quando o controle DataWindow sofrer a ação do clique do mouse, independente, se nesse evento houver uma codificação PowerScript ou não.

Page 112: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 89

Recuperação de dados a partir de uma DataWindow. O PowerBuilder 9.0, disponibilizou alguns novos eventos, mas ainda não estão trigados a ações, segundo a Sybase em breve estarão, a saber: DoDefaultAction DoHitTest DoNavigation DoSelection GetChildCountGetDefaultAction GetDescription GetFocusObject GetHelpGetHelpFile GetHelpTopic GetKeyboardShortcut GetName GetRoleGetSelection GetValue A DataWindow disponibiliza várias funções pré-programadas de manipulação de dados, na tabela a seguir descreveremos essas funções.

Adquirido por : Fabrício Moreira da Silva

Page 113: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 90

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição AcceptText Integer Aplica o conteúdo da edição de um controle

DataWindow do item corrente ao buffer da DataWindow.

CanUndo Boolean

Retorna TRUE se a última edição pode ser desfeita para a linha e coluna especifica e FALSE se a última edição não puder ser desfeita.

CategoryCount Integer Retorna o número de categorias em um gráfico especifico do controle DataWindow.

CategoryName String Retorna o nome de uma categoria especifica de um gráfico em um controle DataWindow.

ClassName String Retorna o nome do controle DataWindow.

Clear Integer Apaga os textos selecionados em no controle de edição de um controle DataWindow, Se o estilo for RichText apagará os textos selecionados na DataWindow.

ClearValues Integer Apaga todos os itens da lista associada com a coluna especificada no controle de DataWindow.

Clipboard Integer

Cópias o gráfico especificado no controle de DataWindow para o clipboard.

Copy Integer Copia o texto selecionado no controle de edição para a linha e coluna do controle de DataWindow para o clipboard. Para uma apresentação de estilo RichText DataWindow, copia o texto selecionado no controle de DataWindow.

CopyRTF String Copia o texto selecionado, quadros, e campos de edição em um controle de DataWindow como uma linha de texto formatado com RichText. São incluídos bitmaps e campos de edição na linha.

Page 114: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 91

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição Create Integer Cria um objeto de DataWindow

usando o código fonte especificado, substituindo o objeto DataWindow no controle DataWindow especificado com o novo objeto de DataWindow.

CrosstabDialog Integer Exibe a definição Crosstab na caixa de dialogo, onde o usuário poderá modificar a definição em tempo de execução.

Cut Integer Corta o texto selecionado do controle de edição em uma linha e coluna da DataWindow e guarda no clipboard. Para um estilo de apresentação RichText DataWindow, corta o texto selecionado no controle DataWindow.

DataCount Long Retorna o número de dados em uma série, em um gráfico do controle DataWindow informado.

DBCancel Integer Cancela o Retrieve em progresso. DBErrorCode Long Retorna o código de erro gerado pelo

banco de dados. Esta Função esta obsoleta DBErrorCode é uma e será descontinuado em uma liberação futura. Códigos de erro de banco de dados estão agora disponíveis como argumentos de evento.

DBErrorMessage String Devolve uma linha que contém o texto da mensagem de erro gerado por um erro de banco de dados. DBErrorMessage é uma função obsoleta e será descontinuada em uma liberação futura.

DeletedCount Long Devolve o número de linhas que foram apagadas do controle DataWindow, mas não foram atualizadas no de banco de dados.

Adquirido por : Fabrício Moreira da Silva

Page 115: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 92

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição DeleteRow Integer Apaga a linha especificada no

controle de DataWindow. Describe String Retorna informações sobre a

estrutura do controle DataWindow. Drag Integer Começos ou fins o arrastamento no

controle de DataWindow. FilteredCount Integer Devolve o número de linhas que não

são visíveis por causa do filtro atual. Find Long Sintaxe 1: procura a próxima linha

em um controle DataWindow no qual os dados satisfaçam uma condição especificada. Sintaxe 2: Para um estilo RichText acha o texto especificado no controle e realça o texto se achou. Você pode especificar a direção de procura e se procura palavras inteiras ou em partes

FindCategory Integer Retorna o número da categoria especificada do gráfico no controle de DataWindow.

FindGroupChange Long Procura o inicio de uma linha especificada para a primeira quebra para o grupo especificado no controle de DataWindow.

FindNext Integer Procura a próxima ocorrência de texto no controle e realça, enquanto aplica os critérios em uma chamada prévia da função de procura (find). Esta função só se aplica a controles de DataWindow cujo conteúdo tem o estilo de apresentação RichText.

FindRequired Integer Identifica as colunas editáveis que o usuário não preencheu.

FindSeries Integer Retorna o número das séries do gráfico no controle DataWindow.

GenerateHTMLForm Integer Cria um formulário HTML que contém colunas para uma ou mais linhas.

Page 116: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 93

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição GenerateResultSet Long Retorna um result set EAServer de

um objeto PowerBuilder rodando como um componente em EAServer.

GetBandAtPointer String Retorna uma string que contém a faixa na qual o ponteiro fica atualmente posicionado seguido por um caráter (~t).

GetBorderStyle Border (enumerated)

Retorna o tipo de borda da coluna especificada no controle de DataWindow. São: Box!Lowered!NoBorder!Raised!ResizeBorder!ShadowBox!Underline!

GetChanges Long Recupera as mudanças feitas a um DataWindow.

GetChild Integer Guarda em uma variável, o nome da coluna especificada da child DataWindow .

GetClickedColumn Integer Retorna o número da coluna no controle DataWindow que o usuário clicou ou clicou duas vezes.

GetClickedRow Long Retorna o número da linha no controle DataWindow que o usuário clicou ou clicou duas vezes.

GetColumn Integer

Retorna o número da coluna atual no controle DataWindow.

GetColumnName String Retorna o nome da coluna atual no controle DataWindow.

GetContextService Integer

Cria uma referência a uma instância especificada do serviço especificado.

GetData Double Retorna os valores de dados nas séries no gráfico do controle de DataWindow. Também veja GetDataValue.

GetDataPieExplode Integer Informa à porcentagem que uma fatia é explodida em um gráfico tipo pie (torta).

Adquirido por : Fabrício Moreira da Silva

Page 117: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 94

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição GetDataStyle Integer Retorna estilos, dependendo do que for

informado para se retornar. Existem 3 sintaxes diferentes.

GetDataValue Integer Retorna o valor dos dados na série especificada no gráfico do controle DataWindow.

GetFormat String Retorna qual formato foi usado para exibição da coluna especificada do controle DataWindow.

GetFullState Long Recupera o estado completo de um DataWindow/Datastore em uma variável Blob. Esta função é principalmente usada em aplicações distribuídas.

GetItemDate Date Retorna o dado no padrão Date na linha e coluna especificada do controle DataWindow.

GetItemDateTime DateTime Retorna o dado no padrão de DateTime na linha e coluna especificada do controle DataWindow.

GetItemDecimal Decimal Retorna o dado no padrão decimal na linha e coluna especificada do controle DataWindow.

GetItemNumber Double Retorna o dado no padrão Numérico na linha e coluna especificada do controle DataWindow.

GetItemStatus dwItemStatus (enumerated)

Retorna o estado do item na linha e coluna especificada. Valores são: DataModified!New!NewModified!NotModified!

Page 118: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 95

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição GetItemString String Retorna os dados no padrão String na

linha e coluna especificada do controle DataWindow.

GetItemTime Time Retorna os dados no padrão Time na linha e coluna especificada do controle DataWindow.

GetMessageText String Retorna o texto de mensagem gerado por uma DataWindow CrossTab. GetMessageText é uma função obsoleta e será descontinuada em uma liberação futura. MessageText está agora disponível como um argumento em um evento DataWindow que pode ser definido associado com o pbm_dwnmessagetext.

GetNextModified Long Retorna o número da primeira linha que foi modificada no buffer da DataWindow.

GetObjectAtPointer String Retorna uma string que contém o nome da coluna ou controle de gráfico apontado no controle DataWindow, separado por (~t), e o número da linha.

GetParent PowerObject Retorna uma referência para o nome do objeto pai.

GetRow Long Retorna um Inteiro que contém o número da linha atual no controle DataWindow.

GetRowFromRowId Long Obtém o número da linha de uma linha afim em um controle DataWindow, identificada por uma linha diferente, associada com aquela linha.

GetRowIdFromRow Long Obtém um identificador único da linha em um controle de DataWindow do número da linha associado com aquela linha.

GetSelectedRow Integer Retorna o número da primeira linha selecionada depois do número da linha especificada no controle DataWindow.

Adquirido por : Fabrício Moreira da Silva

Page 119: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 96

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição GetSeriesStyle Integer Procura externamente o aparecimento de

umas séries em um gráfico. Há várias sintaxes, enquanto dependendo de que colocações você queira.

GetSQLPreview String Retorna a declaração de SQL atual que o controle de DataWindow está submetendo ao banco de dados. GetSQLPreview é uma função obsoleta e será descontinuada em uma liberação futura. Sintaxe de SQL está agora disponível como um argumento de evento.

GetSQLSelect String Retorna a declaração SELECT atual para o controle DataWindow.

GetStateStatus Long Retorna o estado atual das flags de status internas do objeto DataWindow e as guarda em uma variável Blob. Esta função é principalmente usada em aplicações distribuídas.

GetText String Retorna o texto no controle de edição na linha e coluna atual do controle DataWindow.

GetTrans Integer Retorna os valores da transação do objeto DataWindow.

GetUpdateStatus Integer Guarda o número da linha que será atualizada no dwBuffer e o datatype que a identifica. GetUpdateStatus é uma função obsoleta e será descontinuada em uma liberação futura. GetUpdateStatus está agora disponível como um argumento no controle DataWindow DBError e eventos de SQLPreview.

GetValidate String Retorna que a regra de validação usada na coluna especificada do controle DataWindow.

GetValue String Retorna um item especificado na lista de valores para a coluna especificada.

GroupCalc Integer Recalcula as quebras nos grupos no controle DataWindow.

Hide Integer Faz o controle invisível.

Page 120: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 97

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição ImportClipboard Long Copia dados do clipboard para o

controle DataWindow. ImportFile Long Copia dados de um arquivo para o

controle DataWindow. ImportString Long Copia dados de uma string para o

controle de DataWindow. InsertDocument Integer Inserir um formato de richtext ou

arquivo de texto em um controle DataWindow. Você usa um parâmetro de função para especificar como o conteúdo novo é adicionado, pode ser inserido a um ponto de inserção, ou pode substituir todo um conteúdo existente. Esta função aplica-se a controles DataWindow cujo conteúdo tem um estilo RichText.

InsertRow Long Insere uma nova linha antes da linha especificada no controle DataWindow.

IsSelected Boolean Retorna TRUE se a linha especificada na DataWindow foi selecionada; Retorna FALSE se a linha não esta selecionada ou é maior que o número de linhas no controle DataWindow.

LineCount Integer Determina o número de linhas dentro um controle de edição que permite linhas múltiplas.

ModifiedCount Long Retorna o número de linhas que foram modificadas no controle DataWindow mas não foram contudo atualizadas no banco de dados.

Modify String Usada especificamente para modificar um controle DataWindow com seu conteúdo string.

Move Integer Move o controle DataWindow para uma localização especificada.

Adquirido por : Fabrício Moreira da Silva

Page 121: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 98

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição ObjectAtPointer grObjectType Retorna o ObjectType e o nome da séria

de qualquer ponto clicado do gráfico .

OLEActivate Integer Ativa o OLE para o objeto OLE da linha e coluna especificada no controle DataWindow

Paste Integer Insere o conteúdo do clipboard em cima da linha e coluna atual controle DataWindow.

PasteRTF Long Cola dados de um controle RichText de uma linha em um controle DataWindow com estilo RichText.

PointerX Integer Retorna a distância que o objeto esta da extremidade à esquerda do controle DataWindow.

PointerY Integer Retorna a distância que o objeto esta do topo do controle DataWindow.

Position Integer Sintaxe 1: Retorna a posição do ponto de inserção no controle de edição em cima da linha e coluna do controle DataWindow. Sintaxe 2: Retorna a linha e coluna do ponto de inserção ou o começo e fim de texto selecionado em um controle DataWindow cujo conteúdo tem o estilo RichText.

PostEvent Boolean Acrescenta um evento ao fim da fila de mensagem para o controle DataWindow.

Print Integer Envia o conteúdo do controle DataWindow à impressora atual. Esta função tem várias sintaxes.

PrintCancel Integer Cancela o trabalho de impressão e apaga o arquivo de spool (se existir) quando o conteúdo do controle DataWindow é enviado pela função de print.

ReplaceText Integer Substitui o texto selecionado dentro do controle edição pela string especificada.

Page 122: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 99

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição ReselectRow Integer

Acessa o banco de dados para recuperar todas as colunas que podem ser atualizadas a recuperação pode ser pontual.

Reset Integer apaga todos os dados de um controle DataWindow. Apaga os dados, as categorias, ou as séries de um gráfico dentro de um objeto DataWindow com uma fonte de dados externa.

ResetDataColors Integer Reajusta a cor de um ponto de dados à cor especificada para as séries.

ResetTransObject Integer Faz com que controle DataWindow pare de usar um objeto de Transação.

ResetUpdate Integer Reajusta e atualiza as flags do controle DataWindow.

Resize Integer Muda a largura e altura do controle DataWindow.

Retrieve Long Recupera as linhas do banco de dados para o controle DataWindow.

RowCount Long retorna o número de linhas atualmente disponível no controle de DataWindow (todas as linhas recuperadas menos as excluídas e as filtradas) e acrescenta as que foram incluídas.

RowsCopy Integer

Cópias uma gama de linhas de um controle DataWindow para outro ou de um buffer para outro dentro de um único controle de DataWindow.

RowsDiscard Integer Descartes uma gama de linhas. As linhas não podem ser restabelecidas sem serem recuperadas do banco de dados.

RowsMove Integer Apaga uma gama de linhas de um controle DataWindow e insere as linhas em um outro controle DataWindow ou outro buffer do mesmo controle DataWindow.

Adquirido por : Fabrício Moreira da Silva

Page 123: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 100

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição SaveAs Integer Envia os dados representados no

gráfico especificado no controle DataWindow para o arquivo especificado, no formato especificado.

SaveAs Integer Envia o conteúdo do controle DataWindow ao arquivo especificado, no formato especificado, com ou sem títulos de coluna.

SaveAsAscii Long Envia o conteúdo de um DataWindow em um arquivo texto padrão ASCII.

Scroll Integer Avança o um controle DataWindow à direção especificada o número especificado de linhas.

ScrollNextPage Long Avança para a próxima página do controle DataWindow.

ScrollNextRow Long Avança para aproxima linha do controle DataWindow. ScrollNextRow muda a linha atual mas não muda a coluna atual.

ScrollPriorPage Long Retorna para a primeira pagina do controle DataWindow.

ScrollPriorRow Long Retorna para a primeira linha, muda a linha atual mas não muda a coluna atual.

ScrollToRow Integer Avança ou retrocede para a linha especificada, muda a linha atual mas não muda a coluna atual.

SelectedLength Integer Retorna o número total de caráter e espaços (comprimento) no texto selecionado no controle de edição em cima da linha atual e coluna.

SelectedLine Integer Retorna o número da linha no controle de edição em cima da linha atual e coluna.

Page 124: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 101

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição SelectedStart Integer

Retorna a posição começando no controle editado em cima da linha atual e coluna.

SelectedText String Retorna qualquer texto se selecionado para a linha atual e coluna do controle DataWindow.

SelectText Integer Seleciona texto dentro de um controle DataWindow. Você especifica onde a seleção começa e quanto caractere irá selecionar.

SelectTextAll Integer Seleciona todo o conteúdo de um controle DataWindow com o estilo RichText .

SelectTextLine Integer Seleciona a linha que contém o ponto de inserção em um controle DataWindow com o estilo.

SelectTextWord Integer Seleciona a palavra que contém o ponto de inserção em um controle DataWindow com o estilo RichText.

SeriesCount Integer Retorna o número de séries no gráfico especificado no controle DataWindow

SeriesName String Retorna o nome das séries especificadas no gráfico especificado no controle de DataWindow.

SetActionCode Integer Define a ação um controle DataWindow disparando um evento. SetActionCode é uma função obsoleta e será descontinuado em uma liberação futura.

SetBorderStyle Integer Atribui o estilo de borda da coluna especificada no controle DataWindow.

SetChanges Long Aplica mudanças capturadas com GetChanges a um DataWindow. Esta função é principalmente usada em aplicações distribuídas.

SetColumn Integer Salta para a coluna especificada da coluna atual no controle de DataWindow.

Adquirido por : Fabrício Moreira da Silva

Page 125: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 102

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição SetDataPieExplode Integer Explode uma fatia do gráfico PIE em

um gráfico de PIE SetDataStyle Integer Para o dado especifico apontado na

série especifica no gráfico especifico no controle DataWindow: Sintaxe 1: Mudar a cor do ponto de dados. Sintaxe 2: Mudar o estilo de linha e largura para os dados.

SetDetailHeight Integer Mudar a altura de cada linha em uma faixa especificada

SetFilter Integer Define os critérios de filtro para o controle de DataWindow.

SetFocus Integer Move o foco para o controle DataWindow.

SetFormat Integer Move o formato de exibição para a coluna especificada do controle DataWindow.

SetFullState Long Aplica o conteúdo de uma variável Blob de DataWindow recebido por GetFullState a um DataWindow. Esta função é principalmente usada em aplicações distribuídas.

SetHTMLAction Integer Aceita ação e informação de contexto sobre interação de usuário com o controle Web DataWindow em um browser de forma que HTML recentemente gerado possa refletir qualquer mudança.

SetItem Integer

Move o valor da linha especificada e coluna do controle DataWindow.

SetItemStatus Integer Atribui o status de uma linha e uma coluna especificada do controle DataWindow no buffer.

Page 126: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 103

Funções para o controle DataWindow.

Função DataWindow Retorno Descrição SetPosition Integer Sintaxe 1: Especifica se o controle

DataWindow sempre exibe On TOP na ordem de frente-para-parte de trás dentro da window. Syntaxe 2: Movimenta um objeto dentro da DataWindow para outra faixa ou muda a ordem de frente-para-parte de trás de objetos dentro de uma faixa.

SetRedraw Integer Controla automaticamente novo desenho do controle DataWindow depois de cada mudança em suas propriedades ou conteúdos.

SetRow Integer

Especifica que a linha especificada é a linha atual do controle DataWindow.

SetRowFocusIndicator Integer

Especifica o foco na linha atual para o controle DataWindow.

SetSeriesStyle Integer Especifica para a série do gráfico do controle DataWindow: Sintaxe 1: seta a cor das séries. Sintaxe 2: seta o estilo de linha e largura. Sintaxe 3: seta o padrão de preenchimento ou símbolo para marcadores de dados nas séries.

SetSort Integer Define os critérios de sort para o controle de DataWindow. A escolha atual é executada pela função de sort.

SetSQLPreview Integer Especifica a declaração de SQL atual para o controle DataWindow.

SetSQLSelect Integer

Muda declaração SELECT atual para o controle DataWindow.

SetTabOrder Integer Muda o valor do TabOrder da coluna especificada no controle de DataWindow

SetText Integer Substitui o texto para a linha atual e coluna do controle DataWindow com o texto especificado.

SetTrans Integer Especifica os valores no objeto de Transação interno do controle DataWindow.

Adquirido por : Fabrício Moreira da Silva

Page 127: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 104

Funções para o controle DataWindow.

Função DataWindow Retorno DescriçãoSetTransObject Integer Especifica o objeto de Transação para a

DataWindow e provê controle em cima da transação, inclusive a habilita o commit.

SetValidate Integer Muda a regra de validação para a coluna especificada do controle DataWindow.

SetValue Integer Especifica o valor do item em uma lista valida ou na tabela de código da coluna especificada do controle DataWindow.

ShareData Integer Compartilham dados entre o buffer Primário do controle DataWindow e um buffer secundário do controle DataWindow.

ShareDataOff Integer Cancela o compartilhamento do buffer primário para o controle de DataWindow. Todos os controles DataWindow secundários serão desconectados e perderão seus dados.

Show Integer Faz o controle DataWindow visível.

ShowHeadFoot Integer Em uma DataWindow estilo RichText, exibe os painéis para editar o cabeçalho e rodapé ou esconde os painéis e retorna a edição do texto principal.

Sort Integer Classifica as linhas do controle DataWindow baseado em seus critérios de classificação (sort) atuais.

TextLine String Exibe Informações sobre o controle editado em cima da linha e coluna corrente.

TriggerEvent Integer Chama um evento especificado no controle de DataWindow e executa o script para o evento.

TypeOf Object Retorna o tipo do controle.

Undo Integer Cancela as últimas modificações em um o controle de edição para a linha e coluna corrente.

Update Integer

Envia ao banco de dados todos os Inserts, Deletes, e Updates do controle DataWindow.

Page 128: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 105

Montando um Objeto DataWindow

Nesta etapa, iremos nos aprofundar dos conceitos da DataWindow, iremos:

!" Criar e visualizar um objeto DataWindow;!" Aperfeiçoar a visualização da DataWindow;!" Vincular duas DataWindow;!" Incluir os dois objetos DataWindow a um controle DataWindow

O Primeiro passo é criar a DataWindow, como já foi visto anteriormente, a receita é única, mas vamos repeti-la para uma melhor fixação.

Clique em NEW, no template selecione DataWindow e selecione o estilo Tabular. Clique em OK. No template Wizard que irá se abrir, selecione Quick Select para o Data Source e certifique-se que a caixa de verificação Retrieve on Preview esteja marcada. Clique em Next. Neste momento o PB 9.0, deverá conectar com o banco de dados EAS DemoDB, caso isto não aconteça, siga os passos de como conectar a uma base de dados. No template Quick Select selecione a tabela “customer” com um clique, a lista de colunas disponíveis da tabela será disponibilizada para seleção. Selecione as colunas: id, fname, lname. Mantenha a ordem de seleção para que nosso exemplo possa ficar coerente com o que você esta desenvolvendo. Clique na verticalscrollbar, da lista de colunas para selecionar a coluna company_name.

Adquirido por : Fabrício Moreira da Silva

Page 129: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 106

Montando um Objeto DataWindow

Na figura abaixo mostramos o template Quick Select.

Quando se seleciona as colunas, automaticamente elas são inseridas no template de colunas, disponibilizados abaixo do template de seleção, o template de colunas disponibiliza as linhas de : Column, Sort, Criteria e Or.

Onde :

Column : Indica o nome da coluna selecionada; Sort : Define como os dados recuperados serão apresentados,

Ascendentes ou Descendente; Criteria : Realiza um filtro no momento da seleção dos dados,

aceita todos os modelos do padrão SQL; OR : Operador para combinações lógicas.

Page 130: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 107

Montando um Objeto DataWindow

Os operadores lógicos aceitáveis :

Operadores Descrição= Igual a > Maior que < Menor que <> Diferente de >= Maior ou Igual a <= Menor ou Igual a LIKE Contém NOT LIKE Não Contém IN São iguais a NOT IN São diferentes de Exemplos :

Adquirido por : Fabrício Moreira da Silva

Page 131: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 108

Montando um Objeto DataWindow

Rolando a VerticalScrollbar à esquerda, o template interno rolará, permitindo múltiplos critérios de filtragem. Para continuar a construção do objeto DataWindow, clique em OK, Next e Finish.

O objeto DataWindow será gerado, no template de DataWindow. Do mesmo modo, teremos a visão da seleção definida, no template Preview da DataWindow.

Agora salve a DataWindow gerada para que tenhamos acesso à posteriormente.

Page 132: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 109

Montando um Objeto DataWindow

Clique em Save, e salve com o nome de d_lista01, em nossa aplicação exemplo_1.

Adquirido por : Fabrício Moreira da Silva

Page 133: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 110

Aperfeiçoando a visualização da DataWindow

No PowerBuilder 9.0 podemos modelar a DataWindow para uma visualização mais apropriada ao negocio desenvolvido. Sempre que se cria um objeto DataWindow ele seguirá uma apresentação padrão, mas nem sempre a apresentação padrão é a melhor forma de visualizarmos os dados, utilizando os recursos de edição do painter de DataWindow, com facilidade poderemos maquiar o objeto DataWindow. Abra o objeto DataWindow: d_lista01

Note que, o cabeçalho não esta alinhado com a linha de detalhe(Customer ID) com ( ID ), vamos alinhar. Clique em cima de “Customer ID", mantendo pressionada a tecla Ctrl, clique em id, note que as duas células estarão marcadas com selecionadas.

Agora na Painterbar2, selecione no ícone

Alinhamentos, o ícone Alinhar pela direita, as colunas se alinharão. Clique em qualquer parte branca do objeto DataWindow para remover a seleção.

Page 134: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 111

Aperfeiçoando a visualização da DataWindow

Clique em “Company Name” e mantendo o Ctrl pressionado, clique em LastName, arraste para direita ou utilize as setas do teclado para movimentar as colunas para a direita afastando-as da coluna First Name. Então teremos:

Adquirido por : Fabrício Moreira da Silva

Page 135: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 112

Aperfeiçoando a visualização da DataWindow

Ajuste as colunas se baseando no Preview DataWindow, até conseguir uma formatação mas bem definida entre as colunas. Utilize os botões de ajustes para auxiliar na formatação, são eles:

Conteúdo da coluna

Justifica o texto.

Alinha a direita

Centraliza

Alinha a esquerda

OBJETOS

Alinha objetos à esquerda

Alinha objetos à direita

Centraliza os objetos selecionados horizontalmente

Centraliza os objetos selecionados verticalmente

Alinha os objetos selecionados pelo topo

Alinha os objetos selecionados pela base

Padroniza os espaços horizontalmente entre os objetos selecionados

Padroniza os espaços verticalmente entre os objetos selecionados

Padroniza os objetos selecionados quanto a sua largura

Padroniza os objetos selecionados quanto a sua altura

Padroniza os objetos selecionados quanto a sua largura e altura

Page 136: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 113

Aperfeiçoando a visualização da DataWindow

Com o botão Selection, podemos selecionar objetos para incluir no

objeto DataWindow, selecione LINE para incluir uma linha no cabeçalho(Header), clique no ponto onde você quer incluir a linha. Para modificar seu tamanho, clique no objeto linha inserido e com a tecla Shift pressionada, clique nas setas do teclado para realizar a operação.

Você também poderá clicar no objeto linha e passar o mouse sobre o objeto, quando o ícone do mouse mudar para uma cruz, clique no botão direito do mouse continue pressionando e arraste até o tamanho desejado. No final seu objeto DataWindow deverá ficar com a aparência da figura abaixo.

Clique em Save para salvar o objeto DataWindow com as novas configurações.

Adquirido por : Fabrício Moreira da Silva

Page 137: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 114

Vinculando duas DataWindow Na montagem do primeiro objeto DataWindow, selecionamos algumas colunas para visualização. Nessa etapa, vincularemos outro objeto DataWindow e trabalharemos com seleção de dados, para tal, teremos que utilizar o Retrieval Argument e a clausula WHERE como critério de seleção para o segundo objeto DataWindow, que será passado em tempo de execução. Para isso teremos que seguir os seguintes passos:

1. Selecionar o Data Source e o estilo de apresentação;2. Selecionar a tabela e as colunas;3. Definir o Retrieval Argument;4. Especificar a clausula WHERE; 5. Conferir no template Preview se esta tudo certo;6. Salvar o objeto DataWindow

Clique em NEW selecione DataWindow, selecione o estilo Freeform. Clique em OK. No template Wizard que irá se abrir, selecione SQL Select para o DataSource e certifique-se que a caixa de verificação Retrieve on Preview esteja marcada. Clique em Next. A caixa de dialogo Select Table aparecerá, selecione a tabela customer. Clique em Open.

Você também pode selecionar a tabela com um duplo clique.

Page 138: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 115

Vinculando duas DataWindow Coloque o ponteiro do mouse sobre a parte mais escura da tabela customer (esta área é denominada Header). Clique com o botão direito do mouse e no menu-popup que aparecerá selecione Select All.

Neste momento estamos com todas as colunas selecionadas no template Table Layout e automaticamente o PowerBuilder 9.0 escreveu o Selectpara as colunas que foram selecionas na tabela. Agora temos que definir o Retrieval Argument. Para isto clique na PainterBar1 em Design selecione Retrieval Argument.

A caixa de dialogo para definição do tipo de argumento que será repassado para o objeto DataWindow aparecerá, para definirmos o tipo de argumento, teremos que informar um nome, que será utilizado nas definições no objeto DataWindow, associado a esse nome, o tipo de variável, se String, Numérica, Date, Time, Integer etc. Disponíveis na caixa de seleção.

Adquirido por : Fabrício Moreira da Silva

Page 139: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 116

Vinculando duas DataWindow O tipo de dado sempre estará relacionado com a coluna a qual você quer selecionar, se o tipo de dado da coluna for uma variável string, o tipo de dado do Retrieval Argument deverá ser uma variável do tipo string. Defina como a figura abaixo. Clique em OK, para continuar. Name : pass_idType : Number

Clique no quadro abaixo na aba WHERE.

O Template WHERE se abrirá, nele você ira visualizar os quadros; Column, Operator, Value e Logical. Clique sobre o quadro Column e todas as colunas da tabela selecionada, estarão disponíveis para a seleção, selecione "customer"."id".

Page 140: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 117

Vinculando duas DataWindow No quadro Operator, selecione = (igual). No Quadro Value, clique com o botão direito do mouse e no menu-popupselecione Argument e na caixa de dialogo, selecione a variável que acabamos de criar, pass_id.

Neste caso só teremos uma linha na clausula Where, portanto o quadro

Logical, ficará em branco.

Para uma maior noção das ações realizadas, clique na aba Syntax, e visualize a query montada.

Clique em Return na caixa de dialogo que surgirá. Clique em Next

e depois em Finish para visualizar o objeto DataWindow gerado.

Adquirido por : Fabrício Moreira da Silva

Page 141: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 118

Vinculando duas DataWindow Aparecerá a caixa de dialogo para se especificar o Retrieval Argument, isto se dá pelo fato da opção Retrieve On Preview estar ligada, então digite 101 e poderá ver a recuperação dos dados relativos a customer"."id" = 101, definidos na clausula WHERE.

Visão do objeto DataWindow.

Page 142: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 119

Vinculando duas DataWindow Visão dos dados selecionados, DataWindow Preview.

Para selecionar outros dados no painter de construção do objeto DataWindow,

clique em Retrive, e informe um outro valor na caixa de dialogo doRetrieval Argument.

Clique em Save e salve com o nome de d_lista02, na aplicação exemplo1.

Adquirido por : Fabrício Moreira da Silva

Page 143: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 120

Vinculando duas DataWindow Com a criação do segundo objeto DataWindow para a tabela customers, temos que pensar que esses dois objetos serão incluídos em uma janela (WINDOW) e que eles devem ter um tamanho que possibilite arrumar os dois objetos nesta janela sem que a janela fique muito poluída e de difícil navegação. O que podemos fazer para esta melhora? 1. Rearrumar as colunas e labels;2. Alinhar as colunas e labels;3. Facilitar a visualização de algumas colunas com o estilo de objeto

drop-down DataWindow. Com um duplo clique sobre o label d_lista02 no template TreeView, edite o objeto DataWindow d_lista02. A visão inicial do objeto que criamos é :

Page 144: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 121

Vinculando duas DataWindow Com base na edição e seguindo o caminho da alteração do objeto DataWindow d_lista01, altere o objeto d_lista02 para que ele tenha a aparência abaixo. OBS: Os campos da DataWindow que aparecem em negrito chamamos de Label.

Label é uma descrição que identifica a coluna.

A novidade em relação a d_lista01 é a coluna State, que apresenta uma visualização com estilo drop-down DataWindow. Para fazer esta coluna receber este estilo, siga os passos à seguir: 1. Dê um clique sobre a coluna; 2. Com o mouse sobre a coluna, clique o botão direito do mouse e selecione

properties (propriedades); 3. Na tabela selecione a aba, Edit; 4. No item Style Type, selecione DropDownDW;5. Marque a caixa Always Show Arrow; 6. Marque a caixa VscrollBar.

Adquirido por : Fabrício Moreira da Silva

Page 145: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 122

Vinculando duas DataWindow Veja o exemplo:

Quando terminar de arrumar o objeto DataWindow d_lista02, clique em Save para salvar as alterações.

Dicas: Para trabalhar com as colunas e label´s, utilize os botões de ajustes que descrevemos. Clicando em uma parte branca do objeto DataWindow com o botão esquerdo do mouse e mantendo-o pressionado, arraste o mouse sobre várias células, (colunas e label´s) uma caixa de seleção surgirá, selecionando todas as células a qual a caixa de seleção estiver envolvendo. Veja figura.

Neste caso serão selecionados todos os campos a qual a caixa de seleção esta envolvendo.

Page 146: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 123

Vinculando objeto DataWindow a um controleDataWindow

Após criar e salvar os objetos DataWindow esses objetos já estão aptos a serem vinculados a um controle DataWindow esse controle DataWindow estará associado a um objeto Window (janela) e esse objeto Window (janela) a sua aplicação. Assim teremos uma janela com uma funcionalidade de recuperação de dados de uma base de dados. Para isso seguiremos os seguintes passos: 1. Incluir o controle DataWindow a Window (janela);2. Incluir os objetos DataWindow ao controle DataWindow;3. Vincular a janela a aplicação;4. Executar e depurar a aplicação.

Incluindo controle DataWindow a Window (janela)

Edite a janela w_001 com um duplo clique em w_001 no template TREEVIEW à esquerda. Com a janela editada selecione a aba Layout na parte inferior. Agora você tem a sua janela pronta para receber o controle DataWindow e assim ser associado a esse controle, o objeto DataWindow. Clique em Visualizar e selecione DataWindow e inclua na parte superior da janela conforme o exemplo abaixo.

Adquirido por : Fabrício Moreira da Silva

Page 147: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 124

Incluindo controle DataWindow a Window (janela)

No template propriedades à direita no item DataObject. Clique no botão de seleção mais à direita e selecione o objeto DataWindow, d_lista01. Note que não foi possível visualizar todo o objeto d_lista01 agora iremos redimensionar o controle para se poder visualizar todo o objeto. Clique com o botão esquerdo do mouse no controle DataWindow na janela, coloque o mouse sobre a borda do controle à direita, quando o ponteiro do mouse se modificar para uma seta de duas pontas clique com o botão direito do mouse mantendo-o pressionado e arraste para a direita, assim o seu controle poderá ser redimensionado, conforme a figura abaixo.

Com estes procedimentos, já podemos visualizar os labels do objeto DataWindow, d_lista01. Note que o PowerBuilder 9.0 automaticamente atribuiu a esse controle DataWindow o nome de dw_1, veja o atributo Name na figura. Você pode deixar sempre o PowerBuilder 9.0, atribuir nomes à seus controles, como também pode dar a eles o nome que desejar, mas sempre que possível, siga as regras já vistas para identificação de controles e objetos. Agora repetiremos toda a operação anterior, para incluirmos o objeto DataWindow d_list02, em um novo controle DataWindow abaixo do controle dw_1.

Page 148: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 125

Incluindo controle DataWindow a Window (janela)

Veja como ficou:

Você pode executar a sua aplicação e visualizar como o controle DataWindow será apresentado na janela.

Adquirido por : Fabrício Moreira da Silva

Page 149: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 126

Incluindo controle DataWindow a Window (janela) Mas notará que nenhum dado foi recuperado da base de dados porque ainda não vinculamos o controle a esta base de dados. Para vincular o controle DataWindow a base de dados primeiro temos que ativar o banco de dados ou seja, colocá-lo ativo, para depois poder extrair dados desse banco, através da tabela customers. Usaremos a transação padrão, a SQLCA, como já vimos em capítulos anteriores. Os parâmetros necessários para serem informados são: sqlca.dbms : Recebe o tipo de conexão nesse caso ODBC. sqlca.dbparm : Recebe os parâmetros de conexão como Nome do

profile definido, o nome do usuário do banco e a senha de acesso para o usuário que esta pedindo a conexão.

// Aplica os parâmetros do DBMS de teste, a transação SQLCA

sqlca.dbms ="ODBC" sqlca.dbparm ="ConnectString='DSN=EAS Demo DB

V9;UID=dba;PWD=sql'" Após a definição dos parâmetros, conectamos ao banco. // Conecta com o banco

Connect; O banco será ativado e estará disponível para acesso, para testarmos usamos: //Testando a conexão

If sqlca.sqlcode < 0 Then MessageBox ("Erro: Impossivel conectar com o banco de dados", & sqlca.sqlerrtext, Exclamation!) HALT End If

Page 150: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 127

Incluindo controle DataWindow a Window (janela) //Se tudo estiver OK //associamos o controle DataWindow a transação SQLCA //e recuperamos os dados

dw_1.settransobject(SQLCA) dw_1.Retrieve()

Nesse ponto, associamos o primeiro controle DataWindow a transação do banco agora associamos o segundo controle a mesma transação.

dw_2.settransobject(SQLCA) Note que não faremos a recuperação dos dados neste momento porque os dados para este controle deverão ser recuperados a partir da seleção no controle DataWindow dw_1. Para que o controle DataWindow dw_1 execute a seleção para o controle DataWindow dw_2 dê um duplo clique no controle dw_1, procure na drop-down de eventos, o evento “clicked” e escreva em PowerScript o código a seguir. //Cria a variável numérica que recebera o código para a //recuperação em dw_2 integer wk_id //Recupera a seleção wk_id = dw_1.GetItemNumber(row, "id") //Recupera os dados segundo a seleção em dw_1 dw_2.Retrieve(wk_id)

Adquirido por : Fabrício Moreira da Silva

Page 151: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 128

Incluindo controle DataWindow a Window (janela)

Clique em Save e salve a sua aplicação e em Run para executar. Teremos então:

Essa janela só tem a funcionalidade de consulta a partir de um pequeno dado se pode acessar uma gama maior de informações pertinentes ao dado selecionado.

Page 152: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 129

Incluindo controle DataWindow a Window (janela)

O próximo passo será o desenvolvimento de rotinas de inclusão, atualização e alteração. Com esses procedimentos teremos uma visão bem ampla de como se pode manipular dados através de controles DataWindow e de como é simples e seguro faze-lo. A manipulação de dados com controles DataWindow, embora seja uma tarefa simples pode se tornar complexa assim como, tão complexa for a sua aplicação e o foco do seu negocio. Você verá que esta tarefa por mais complexa que ela seja se tornará menos árdua utilizando os objetos e controles DataWindow. O desenvolvimento utilizando objetos DataWindow não se limita às caixas de diálogos e wizards disponibilizados pelo PowerBuilder 9.0. Através de um editor SQL, como SQLplus® da Oracle por exemplo, você poderá desenvolver querys complexas e importar para o painter de SQL do PowerBuilder 9.0, além disso, você também poderá trabalhar com CURSOR e PROCEDURE para recuperar dados em um objeto DataWindow. Uma outra forma de se trabalhar com um objeto DataWindow é a utilização de DataStore, o DataStore é um controle DataWindow não visual, ou seja, é um controle DataWindow invisível, Quase todas as funcionalidades de um controle DataWindow estão disponibilizados, menos as funcionalidades visuais que não caberiam ao DataStore, tendo em vista que ele não permite visualizar dados e só e somente só, recuperar e manipular dados. Se você entendeu o que é um controle DataWindow, tenha certeza que também entendeu o que é um DataStore. No decorrer desse capítulo iremos exemplificar as diversas técnicas de se trabalhar com o objeto DataWindow. Para que o exemplo comece a ficar mais completo iremos incluir a rotina de inclusão de dados. Utilizaremos alguns conceitos interessantes que já foram explicados, mas não exemplificados, como criar um evento de usuário, chamar estes eventos e incluir objetos na janela.

Adquirido por : Fabrício Moreira da Silva

Page 153: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 130

Incluindo parâmetros de atualização Em nosso exemplo, incluiremos agora três rotinas: de inclusão, de exclusão e de atualização dos dados no banco, para isto, incluiremos três controles de botão de comando, e em cada controle adicionaremos sua programação PowerScript correspondente. Clique em CommandButton e clique do lado direito do controle DataWindow dw_1, assim será incluído o controle CommandButton na janela w_001.

Como iremos incluir três controles, clique com o botão direito mouse sobre o controle CommandButton que acabou de incluir na janela e no menu-popup que aparecerá, selecione a opção Duplicate. Assim o controle será automaticamente inserido na janela.

Page 154: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 131

Incluindo parâmetros de atualização Repita a operação e teremos os três controles na janela w_001.

Agora incluiremos a programação correspondentes à cada controle, para que esse exerça a função a qual se vez necessária a sua inclusão na janela.

Rotina de inclusão Clique no primeiro controle de botão de controle e selecione suas propriedades, no template que surgira à direita preencha os atributos para esse controle, conforme a figura abaixo.

Adquirido por : Fabrício Moreira da Silva

Page 155: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 132

Rotina de inclusão A rotina de inclusão em um controle DataWindow deve habilitar o objeto DataWindow a receber uma nova linha no Buffer da DataWindow, e posteriormente atualiza-la na base de dados. Para incluir uma linha no buffer utilizamos a função InsertRow (linha). Essa função insere uma linha no Buffer da DataWindow ou de um DataStore. Sintaxe: long dwcontrole.InsertRow ( long linha ) Onde : dwcontrole : é o nome do controle DataWindow/DataStore. linha : é o número da linha que você quer incluir long : retorna a linha que será incluída ou -1 se houver erro

na tentativa de inclusão da linha no controle DataWindow.

Dê um duplo clique no controle cb_incluir e selecione o evento “Clicked” e escreva o código PowerScript abaixo:

Praticando: No template em branco, clique com o botão do mouse direito selecionando Paste Special, e depois Object, na lista que surgirá selecione dw_2. Agora coloque um ponto (.) após dw_2, clique com o botão direito do mouse e selecione Function e Built-in. Na lista que surgirá procure por InsertRow. Com um duplo clique selecione a função. Agora coloque o zero(0) entre os parênteses. Pronto o PowerBuilder 9.0 montou para você a função InsertRow, o parâmetro zero(0) irá inserir uma linha no final do Buffer do controle DataWindow fazendo desta linha, a linha corrente.

Page 156: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 133

Rotina de inclusão Você poderia ter digitado direto, mas o PowerBuilder 9.0 disponibiliza o autoscript para facilitar a edição e evitar erros de sintaxe provenientes de esquecimentos de detalhes da função. Como estamos usando a dw_2 que antes era só um controle de consulta dos dados selecionados na dw_1. Para podermos incluir e visualizarmos direto uma linha nova neste controle, primeiro apagamos o conteúdo desse controle. Caso você não o faça, a função InsertRow (0), irá incluir uma linha após a linha que estiver ativa, caso exista uma em dw_2, se não existir nenhuma linha ativa irá mostrar diretamente, então caso exista uma linha ativa, você deverá incluir uma barra de rolagem vertical para acessar esta nova linha, o que ficaria deselegante e com uma tarefa a mais para o usuário. Então sempre é aconselhável limpar o controle DataWindow, antes de uma inclusão, para este tipo de visualização que estamos utilizando existem outros modos de se exibir os dados que não se aplicaria esta regra. Para limpar o controle DataWindow utilizaremos a função Reset (). Sintaxe: integer dwcontrole.Reset ( ) Onde: dwcontrole : é o nome do controle DataWindow ou DataStore. Integer : Retorna 1, se a execução foi bem sucedida e -1 se

houver erro. Então agora digite antes do comando dw_2.InsertRow (0), dw_2.Reset ().

Clique em Save e salve a sua aplicação em Run para executar.

Adquirido por : Fabrício Moreira da Silva

Page 157: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 134

Rotina de inclusão Clique no botão Incluir e teste.

Page 158: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 135

Rotina de inclusão Navegue pela dw_2 com a ajuda da tecla Tab note que agora podemos incluir uma nova linha na dw_2, mas ainda não podemos incluir esta linha nova na base de dados. Então teremos que montar uma rotina para executar esta função. Clique na aba Layout selecione com um duplo clique o último controle CommandButton. No template propriedade à direita, preencha:

Após preencher as propriedate para o botão Gravar agora teremos que colocar o código PowerScript para ser executado quando o botão for pressionado e esta ação deve ser de gravação na base de dados. Para tal, utilizaremos a função UpDate().

Adquirido por : Fabrício Moreira da Silva

Page 159: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 136

Rotina de inclusão Sintaxe:integer dwcontrole.Update ({ boolean accept {,boolean resetflag} })Onde: dwcontrole : é o nome do controle DataWindow ou DataStore. Integer : Retorna 1, se a execução foi bem sucedida e -1 se

houver erro. Accept : variável booleana que informa ao PowerBuilder 9.0

se ele deve proceder aos testes de validação antes de gravar na base.

!" TRUE: (Default) procede ao teste e retorna se houver erro.

!" FALSE: grava na base. Resetflag : variável booleana que informa ao PowerBuilder se ele deve resetar as flags de controle após o update ou não.

!" TRUE: (Default) Reseta as flags. !" FALSE: Não reseta as flags.

Dê um duplo clique no controle cb_gravar, selecione o evento Clicked, e escreva o código PowerScript abaixo:

Clique em Save e salve a sua aplicação e em Run para executar.

Page 160: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 137

Rotina de alteração A rotina de alteração já esta pronta é a combinação da rotina de consulta com a rotina de gravação. Então você pode clicar na dw_1, editar o item selecionado, alterar este item e clicar em Gravar. A novidade é o terceiro botão, o de Retrieve. Que servirá para recuperar os dados alterados na dw_2. Essa rotina poderia ser automatizada, veremos os dois modos. Primeiro, com o botão Ler Dados (retrieve). Clique no CommandButton que esta no meio e preencha suas propriedades.

Clique na aba “Clicked” e digite os comandos para recuperação dos dados. Usaremos o Retrieve() igual para a recuperação no evento Open da aplicação.

Adquirido por : Fabrício Moreira da Silva

Page 161: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 138

Rotina de alteração Clique em Save e salve a sua aplicação e em Run para executar.

Poderíamos também automatizar a recuperação dos dados sem precisar incluir um botão para isto. Umas das soluções seria incluir a rotina do botão Ler Dados na linha de IF após o comando Commit. Outra solução seria atualizar a dw_1 sem precisar usar o comando Retrieve (), assim não estaríamos contribuindo para o trafego na rede e a aplicação ficaria muito mais rápida. Vamos demonstrar as duas embora, a segunda seja uma solução mais profissional. A primeira não esta errada depende do enfoque do seu negócio. Por exemplo: imagine uma grande rede com grande volume de dados, e o usuário precise acessar vários dados. E esses dados estão sempre sofrendo alteração. Então se faz necessário o uso do Retrieve, para cada atualização ou grupos de atualização.

Page 162: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 139

Rotina de alteração Primeira solução:

Para o segundo método usaremos a aplicação da rotina de alteração do controle DataWindow dw_1. Através do uso do evento já disponibilizado pelo PowerBuilder 9.0 para controles DataWindow, UpdateEnd. Esse evento sempre é disparado ao final de uma atualização através do controle DataWindow, seja um Insert, Delete ou Update. Com um duplo clique no controle DataWindow dw_2 o template de script se abrirá. Na caixa de seleção de script ao centro da parte superior, selecione o evento UpdateEnd.

Adquirido por : Fabrício Moreira da Silva

Page 163: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 140

Rotina de alteração Segunda solução:

Para se incluir ou substituir dados em um controle DataWindow, utiliza-se à função SetItem. Para se recuperar dados de um controle DataWindow se utiliza à função GetItemNumber, GetItemString, GetItemDate, GetItemDateTime e GetItemTime. Cada função recupera o seu dado correspondente ao tipo de coluna definido no objeto DataWindow. Sintaxe : numeric dwcontrole.GetItemNumber ( long row, string column {,DWBuffer dwbuffer, boolean originalvalue } ) numeric dwcontrole.GetItemNumber ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } ) Onde: dwcontrole : é o nome do controle DataWindow/DataStore. Row : Dado numérico que representa a linha do dado

no objeto DataWindow. Column : Nome ou a posição (numérica) da coluna. Dwbuffer(opcional) : Identifica qual buffer o dado será recuperado na

DataWindow. Originalvalue(optional):Variável booleana, que indica se a

recuperação será da linha corrente ou dos dados originais no buffer. True: Retorna os valores originais (os mesmos do Retrieve na base de dados). False: (Default) Retorna os valores correntes.

Page 164: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 141

Rotina de alteração Segunda solução: Sintaxe: integer dwcontrole.SetItem ( long row, integer column, any value ) integer dwcontrole.SetItem ( long row, string column, any value ) Onde: dwcontrole : é o nome do controle DataWindow/DataStore. row : Dado numérico que representa a linha do dado

no objeto DataWindow. column : Nome ou a posição (numérica) da coluna.

value : Valor que deverá ser incluído na DataWindow. Notando a sintaxe da função SetItem verifica-se a necessidade de se informar que linha deve ser alterada. Essa informação só é possível se obter através do evento “Clicked!” da dw_1. Onde montamos a rotina de recuperação de dados para a dw_2. Para que se passe esse valor para um outro evento de um outro objeto, podemos criar uma variável do tipo Instance, como definido anteriormente. Clique caixa de seleção de script a esquerda da parte superior, selecioneDeclare Instance Variable. Defina a variável long wk_linha conforme a figura abaixo.

Agora clique na aba “Clicked” e atribua o valor da linha clicada (row) a variável de instacia wk_linha.

Adquirido por : Fabrício Moreira da Silva

Page 165: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 142

Rotina de alteração Segunda solução:

Clique na aba Layout e de um duplo clique no controle DataWindow dw_2combinando a função SetItem com a função GetItemNumber e GetItemString. teremos:

Para uma melhor documentação, é sempre melhor utilizar o nome da coluna na sintaxe, mas pode-se utilizar o número (posição) que ela ocupa no banco de dados. Onde : id seria posição 1 e fname posição 2. Caso tenha implementado a primeira opção coloque as linhas dw_Reset( ) e dw_Retrieve( ) como comentário para testar a segunda opção.

Page 166: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 143

Rotina de alteração Segunda solução:

Clique em Save e salve a sua aplicação e em Run para executar. Para completar este exemplo de manipulação de dados em um controle DataWindow. Inclua um botão de exclusão de dados.

Rotina de Exclusão

Clique em CommandButton e depois na posição da janela que você quer incluir o botão(coloque logo abaixo do botão Gravar). E no template Propriedade preencha:

Adquirido por : Fabrício Moreira da Silva

Page 167: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 144

Rotina de Exclusão Agora de um duplo clique no botão cb_excluir. No evento “clicked”,programe a rotina para exclusão usando a função DeleteRow. Sintaxe : integer dwcontrole.DeleteRow ( long row ) Onde : dwcontrole : é o nome do controle DataWindow/DataStore. row : Dado numérico que representa a linha do dado

no objeto DataWindow.

Para excluir uma linha do controle DataWindow primeiro selecionamos a linha que se deseja excluir. Como programamos para a inclusão, a variável wk_linha guardará a linha em que se clicou. Então podemos utilizar esta mesma variável para pegar a linha clicada. Note, que desta vez programamos o botão no modo Enable para desabilitado e este só estará habilitado caso se selecione uma linha à excluir. A exclusão em uma base de dados é uma transação que deve ser cautelosa. Pôs, não tem retorno. Então devemos sempre pedir uma confirmação para executarmos esta tarefa. Para isto utilizaremos a função MessageBox. Sintaxe: MessageBox ( title, text {, icon {, button {, default } } } ) Onde : title : Texto que ira aparecer no header da janela de alerta. text : Um texto que represente o motivo da mensagem. icon : (opcional) Informa ao PowerBuilder 9.0 que tipo de ícone será

apresentado do lado esquerdo da janela de mensagem para chamar atenção. !" Information! (Default) !" StopSign! !" Exclamation! !" Question! !" None!

button: (opcional) Que tipo de botão se queira mostrar dependendo

do tipo de questionamento que se faça. !" OK! — (Default) OK !" OKCancel! — OK e Cancelar !" YesNo! — Sim e Não !" YesNoCancel! — Sim, Não, e Cancelar !" RetryCancel! — Repetir e Cancelar !" AbortRetryIgnore! — Abortar, Repetir e Ignora

Page 168: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 145

Rotina de Exclusão Programando o botão. Dê um duplo clique no objeto DataWindow dw_1 no evento “Clicked” adicione o código abaixo:

Agora de um duplo clique no botão Excluir e programe a rotina de exclusão.

Note que a função DeleteRow apaga o dado selecionado do controle DataWindow. Para se ter o efeito refletido na base de dados precisamos atualizar a base. Utilizaremos a função Update.

Adquirido por : Fabrício Moreira da Silva

Page 169: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 9 146

Rotina de Exclusão Então teremos:

Nesse nosso exemplo poderemos notar a exibição de uma mensagem de erro após se optar por excluir na base de dados. Isso se deve ao fato da tabela customer ter a sua Primary Key apontada para a Foreign Key 'ky_so_customer' na tabela sales_order ou seja, para excluir este item devemos excluir em cascata como vimos no item, Uso do SQL noPowerBuilder. Veremos este processo mais adiante, mas se for retirado ou comentado a função UpDate poderemos ver a funcionalidade da função DeleteRow, apagando o item selecionado no controle DataWindow que é nosso foco. Manipular dados em um controle DataWindow.

Page 170: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 10

DataWindow : Técnicas avançadas

Buffers Internos

Detectar a validação

Detectar o Tipo de dado

Detectar regras de validação

Detectar mudanças no item

Usando Filtros

Classificando

Cláusula Where para Update e Delete

Modify e Describe

Função Evaluate( )

Propriedade Object

Parametrizando com a cláusula DATA

Adquirido por : Fabrício Moreira da Silva

Page 171: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 147

DataWindow : Técnicas avançadas

Neste capítulo veremos algumas expressões utilizadas no controle DataWindow para acessar os dados de um objeto DataWindow, tais expressões permitem acessar um dado específico ou retornar um grande volume de dado. Para isso teremos que entender um pouco mais sobre o controleDataWindow. Esse controle é responsável pela recuperação, manipulação e atualização de dados no banco de dados, dados quando recuperados, serão armazenados em buffers internos do objeto DataWindow. Buffers Internos.

Buffer DescriçãoOriginal Dados recuperados do BD que não se alteram. Primary É a primeira imagem do original, aceita alteração e inserção. Delete Itens que foram apagados do buffer primário. Filter Dados que não serão mostrados, devido ao filtro de seleção

definido no objeto DataWindow. Esses buffers sempre serão criados na máquina cliente e lá permanecerão até a atualização UPDATE() ou descarte dos dados pela aplicação que os solicitou.

Toda manipulação de dado através de um controle DataWindow segue algumas regras para a sua transferência entre o controle DataWindow e

o buffer primário. São elas:

!" Detectar a validação; !" Detectar o tipo de dado; !" Detectar regras de validação; !" Detectar mudanças no item.

Após essas regras retornarem todas como verdade ou zero, o dado do item selecionado é então transferido para o buffer primário.

Page 172: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 148

DataWindow : Técnicas avançadas

Detectar a validação. O controle DataWindow dispara a validação quando:

1. Quando a coluna que foi alterada perde o foco;2. Quando a tecla Enter é pressionada;3. Ou a função AcceptText( ) é executada.

Detectar o Tipo de dado.

Todos os controles de edição são do tipo string, por esse motivo aceitam todos os caracteres. Por isso o controle DataWindow compara o tipo de dado digitado com o tipo de dado no Buffer. Se o tipo de dado não for compatível o evento ItemError é disparado. Detectar regras de validação

Nessa etapa o dado é submetido a regras de validação para a coluna. Estas regras são definidas no banco de dados ou na criação da DataWindow para cada coluna. Detectar mudanças no item

O dado digitado é comparado com o dado no buffer primário da DataWindow. Se o dado não foi alterado, esta etapa termina, caso contrário, o evento ItemChanged é disparado possibilitando a execução de alguma validação de usuário no evento ItemChanged. Após a execução da validação de usuário, se existir, o dado é transferido para o buffer primário.

A execução de um script do evento ItenError será determinada pelos códigos de retorno, são eles:

Código de retorno

Ação

0 (Default) Rejeita o dado e exibe uma tela de mensagem de erro. 1 Rejeita o dado sem exibir uma tela de mensagem de erro. 2 Aceita o dado. 3 Aceita o dado, sem alterar o buffer primário e permite que o foco

mude de coluna.

Adquirido por : Fabrício Moreira da Silva

Page 173: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 149

DataWindow : Técnicas avançadas

Se o evento ItenChanged for disparado, a seqüência de execução será

determinada pelos códigos de retorno, são eles: Código de retorno

Ação

0 (Default) Aceita o dado digitado. 1 Rejeita o dado e dispara o evento ItemError. 2 Rejeita o dado, mas permite que o foco mude de coluna.

Os eventos ItemError e ItemChanged, permitem ao desenvolvedor saber qual coluna, qual linha e que dado do controle DataWindow disparou o evento. Os argumentos para este evento estarão sempre disponíveis caso disparados, são eles : ROW Contém o número da linha do item que esta sendo alterado. DWO Referência para a coluna que disparou o evento. DATA O conteúdo da coluna que disparou o evento. Exemplo: dwo.Type : Retorna o tipo de controle que disparou o evento. dwo.Name : Retorna o nome da coluna que disparou o evento.

Page 174: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 150

DataWindow : Técnicas avançadas

Usando Filtros. O desenvolvedor poderá limitar o acesso que o controle DataWindow tem aos dados seja por segurança ou para facilitar o tratamento pelo usuário. Assim poderá com apenas um acesso a base de dados, disponibilizar os dados de várias maneiras diferentes (filtrados). Como funciona: Depois que o objeto DataWindow recupera os dados, aplica-se o filtro no buffer primário gerando assim o buffer Filter com todas as linhas que não atenderam as condições determinadas pelo filtro. A função utilizada é a SetFilter (condição), para definir e aplicar o filtro utiliza-se a função Filter (). É sempre aconselhável utilizar a função SetRedraw ( boolean redraw ) em conjunto com a função Filter( ) essa função tem como parâmetro TRUE ou FALSE. False - interrompe a montagem em tempo de execução de um controle DataWindow. O que faz a aplicação do filtro ser mais rápido para grandes grades de dados. True - Ativa a montagem em tempo de execução de um controle DataWindow. Exemplo: String s_filtros_filtro = “salario>1000 and departamento=’Informática’ ” dw_1.SetRedraw(FALSE)dw_1.SetFilter(s_filtro)dw_1.Filter( ) dw_1.SetRedDraw(TRUE)

Ao se aplicar um filtro em uma DataWindow com agrupamentos, faz-se

necessário executar a função GroupCalc( ) para se recalcular os agrupamentos.

Adquirido por : Fabrício Moreira da Silva

Page 175: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 151

DataWindow : Técnicas avançadas

Classificando.

Pode-se ordenara a recuperação de dados tanto no servidor quando no cliente. No servidor usamos o ORDER BY no comando SELECT. Em tempo de execução utilizamos SetSort (). Para definir ou modificar a classificação corrente. Este método possibilita a pesquisa pelo usuário por dados específicos. Sintaxe : integer dwcontrole.SetSort ( string format ) Exemplo : //Classifica dw_1, ascendente por nome e descendente por salário dw_1.SetSort(“nome A, salario D”) Pode-se usar o número da coluna, com parâmetro. dw_1.SetSort(“#1 A, #10 D”) Onde : # : É obrigatório antes do número da coluna;

1 : Posição da coluna; A : Ascendente; 10 : Posição da coluna; D : Descendente.

A função SetSort( ) apenas define os critério de classificação. Para efetivar a classificação na DataWindow, utilize a função Sort( ). dw_1.Sort( )

Para uma base com grande volume de dados, utilize a função SetRedraw( ).

Ao se classificar uma DataWindow com agrupamentos, faz-se

necessário executar a função GroupCalc( ) para se recalcular os agrupamentos.

Page 176: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 152

DataWindow : Técnicas avançadas

Conhecendo a função UpDate (). Quando se utiliza a função UpDate internamente o PowerBuilder executa vários comandos de SQL. São eles: DELETE : Um para cada linha antiga do buffer delete; UPDATE : Um para cada linha antiga modificada nos buffers, Primary e

Filter; INSERT : Um para cada linha nos buffers, Primary ou Filter. Sempre que se chama a função UpDate um comando de atualização de banco é enviado por vez. Se algum erro for retornado todo o processo de atualização será interrompido e o evento DBError do controle DataWindow que chamou a atualização será disparado. E a função UpDate retornará -1.

Para visualizar os comandos SQL gerados para atualização dos dados no banco de dados acesse os argumentos do evento SQLPreview no

controle DataWindow que chamou a atualização. O PowerBuilder 9.0 controla as atualizações processadas no banco de dados montando o comando SQL mais apropriado para cada DML de INSERT, DELETE e UPDATE. Você pode dar um “lock” na linha editada internamente o PowerBuilder 9.0 responde a este problema com a técnica de analisar as características definidas pelo desenvolvedor na criação do objeto DataWindow. Estas características são definidas no painter DataWindow. Selecione na PowerBar1, Rows e UpDate Properties.

Adquirido por : Fabrício Moreira da Silva

Page 177: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 153

DataWindow : Técnicas avançadas

O Wizard “Specify UpDate Properties” se abrirá e as propriedades para as atualizações estarão disponíveis para seleção. São eles: Cláusula Where para Update e Delete. !" Key Columns;!" Key and Update Columns;!" Key and Modified Columns.

Key Columns : Somente a chave primária da tabela selecionada é utilizada na cláusula Where.

Vários usuários podem alterar o dado ao mesmo tempo.

Key and UpDate Columns : A chave primária e as colunasatualizáveis da DataWindow serão usadas na cláusula WHERE.

Esta opção pode notificar a outro usuário, que o item foi alterado.

Key and Modified Columns : A chave primária e todas as colunasalteradas da DataWindow serão usadas na cláusula WHERE.

Esta opção permite que usuários alterem itens distintos.

Allow Update : Habilita o update para a tabela. Se desligada a DataWindow é apenas de leitura, normalmente utilizada para relatórios.

UpDateTable Columns : Seleciona as colunas que serão atualizáveis as colunas não selecionadas não serão atualizadas com a função UpDate. Table to Update : Especifica a tabela que será atualizada apenas uma tabela. Se existir junções na query da DataWindow apenas uma delas

poderá ser atualizada.

Page 178: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 154

DataWindow : Técnicas avançadas

Key Modification : Define o modo de alteração da chave primária.

Pode ser definida como: Apaga o item e inclui um novo item na base ou Atualiza o item corrente alterando a chave primária. Essa opção deve ser bem estudada deve-se conhecer bem a base de dados, principalmente os relacionamentos entre as tabelas. Se a base de dados estiver parametrizada com “Delete on Cascate” serão excluídos todos os itens nas tabelas relacionadas.

Unique Key Columns: Especifica as colunas que fazem parte da chave primária.

Adquirido por : Fabrício Moreira da Silva

Page 179: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 155

DataWindow : Técnicas avançadas

Modify e Describe, obtendo o máximo da DataWindow

Sem dúvida a DataWindow é o mais poderoso recurso do PowerBuilder 9.0 para acesso a bases de dados possibilitando a criação de uma interface eficiente e de fácil utilização. No PowerBuilder 9.0 podemos manipular um controle DataWindow e objetos DataWindow através das funções Modify e Describe. Sempre ouço que estas funções são as mais difíceis de se utilizar das funções disponibilizadas pelo PowerBuilder 9.0. Até concordo que em alguns casos seja um emaranhado de linhas de código tornando bastante complexa a sua depuração, mas por outro lado, seguindo-se algumas regras veremos que não é um bicho de sete cabeças. Sintaxe: string dwcontrole.Modify ( string modstring ) Onde : string: Tipo de retorno. Modify retorna vazio se OK e o erro se falhar. dwcontrole: nome da DataWindow. modString : linha a ser modificada da DataWindow. Através do Modify pode-se alterar todos os atributos de um objeto ou controle DataWindow. Suponha que em tempo de execução você queira inibir uma coluna em uma DataWindow. Usando o Modify, ficaria:

//Esconde a coluna dw_1.Modify(“nome_da_coluna.visible=0”) //Esconde o label dw_1.Modify(“label_t.visible=0”)

dw_1.SetTransObject(SQLCA) dw_1.Retrieve(……) Com o Modify podemos também alterar os atributos do Painter de DataWindow contornando o problema de a DataWindow só deixar se especificar uma tabela para atualização.

Page 180: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 156

DataWindow : Técnicas avançadas

Suponha uma DataWindow com colunas exibidas de várias tabelas e se queira atualizar dados em todas as tabelas. Tabelas do processo: empregado e salário Passo 1: !" Aplique o UpDate padrão. //Atualiza a tabela definida no painter DataWindow(empregado) Integer i_ret I_ret = dw_1.Update(TRUE,FALSE)

FALSE – Marca como não reiniciar as flags.

IF i_ret = 1 THEN //desativa a atualização para as colunas da tabela, empregado dw_1.Modify(“empregado_numero.UpDate = No”) dw_1.Modify(“empregado_nome.UpDate = No”) dw_1.Modify(“empregado_endereco.UpDate = No”) dw_1.Modify(“empregado_telefone.UpDate = No”)

//Faz a tabela salário aceitar UpDatedw_1.Modify(“DataWindow.Table.UpdateTable = ~’salario~’ ”) //Faz as colunas da tabela salario aceitarem Update dw_1.Modify(“salario_número_empregado.UpDate = Yes”) dw_1.Modify(“salario_salario.UpDate = Yes”)

Adquirido por : Fabrício Moreira da Silva

Page 181: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 157

DataWindow : Técnicas avançadas

//Atualiza a tabela salário e zera as flags i_ret = dw_1.UpDate( ) IF i_ret = 1 THEN dw_1.ResetUpDate Commit; ELSE Messagebox(“Erro”,”Erro no UpDate da tabela - salário”) RollBack; END IF ELSE Messagebox(“ERRO”,”Erro no UpDate da tabela – empregado”) RollBack; END IF //Desativa a tabela salário dw_1.Modify(“salario_numero.UpDate = No”) dw_1.Modify(“salario_salario.UpDate = No”) //Ativa a tabela empregado(estado original da DW)

dw_1.Modify(“empregado_numero.UpDate = Yes”) dw_1.Modify(“empregado_nome.UpDate = Yes”) dw_1.Modify(“empregado_endereco.UpDate = Yes”) dw_1.Modify(“empregado_telefone.UpDate = Yes”) //Faz a tabela "empregado" aceitar UpDate dw_1.Modify(“DataWindow.Table.UpDateTable = ~´empregado~´”) Não foi tão complicado. Apenas uma seqüência até os sinais (~) til, (~r) til + r e (~t) til + t, seguem uma seqüência. !" Para se incorporar uma string dentro de outra string, apóstrofos(aspas

simples) são reconhecidos como diferentes de aspas (duplas). !" Um apóstrofo (aspa simples) representa ~`. O PowerBuilder 9.0 incorpora um analisador de strings, que é usado para validar os strings submetidos. O “til” é usado para informar ao analisador que o caractere seguinte deve ser usado como literal.

Page 182: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 158

DataWindow : Técnicas avançadas

Alguns atributos do objeto DataWindow disponibilizam a utilização de

expressões. Você pode nota-los com este botão ao lado do atributo.

É o caso do atributo VISIBLE. Você poderá passar uma expressão através da função Modify.

Coluna : salário Expressão IF - dentro do painter DataWindow :

If ( boolean, truevalue, falsevalue ) string s_mod s_mod = “salário.visible = ´0~tIF (salário > 1000,0,1)´” dw_1.Modify(s_mod) Neste exemplo, sempre que o salário for maior que 1000 não ficará visível.

Adquirido por : Fabrício Moreira da Silva

Page 183: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 159

DataWindow : Técnicas avançadas

Todos os atributos estão disponíveis no HELP do PowerBuilder 9.0.

Page 184: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 160

DataWindow : Técnicas avançadas

Função Evaluate()

A função Evaluate( ) deve ser utilizada com a função Describe. A função Evaluate, permite a avaliação de expressões na DataWindow. Sintaxe : "evaluate('expressão', linha)" Onde : expressão : expressão que se deseja avaliar linha : número da linha que se deseja avaliar a expressão Exemplo : O exemplo abaixo retorna a linha corrente da página atual e coloca como título da janela w_1. string s_mod, s_linha s_linha = string(dw_1.GetRow()) s_mod = “Evaluate(´Page()´.” + s_linha +”)” w_1.Title = "Página " + dw_1.describe(s_mod) Evaluate com expressões condicionais Sintaxe : defaultvalue ~t expressão Onde : defaultvalue: Valor padrão da propriedade. ~t : separador obrigatório. expressão : expressão aplicada à função evaluate. Exemplo: Retorna 0 se a linha é nova ou 1 se a linha é antiga. string s_ret s_ret = dw_1.Describe(“Evaluate(´If( IsRowNew ( ), 0, 1) ´,GetRow() ) ” )

Adquirido por : Fabrício Moreira da Silva

Page 185: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 161

DataWindow : Técnicas avançadas

Assim como a função Modify atribui a DataWindow existe a função Describe que recupera as informações da DataWindow. Sintaxe: String Describe (sintaxe) Onde : sintaxe : propriedade a ser recuperada. string : retorno da propriedade solicitada. Exemplo : //Lista todos os atributos da DataWindow dw_1.Describe("DataWindow.Attributes")

Faça este teste no evento OPEN do exemplo1. Messagebox("Atributos da DataWindow", & +

dw_1.Describe("DataWindow.Attributes")) !" Irá retornar uma lista com todos os atributos do controle DataWindow.

Você poderá ter acesso a esses atributos e ver muitos exemplos no HELP do PowerBuilder 9.0. Procure por Describe DataWindow expression functione selecione Controls in a DataWindow and their properties.

As funções Modify e Describe são muitos úteis quando se tratade trabalhar mais profissionalmente com as DataWindow poresse motivo tente sempre que possível utilizar estas funções.

Seu projeto ficará sempre mais dinâmico e o limite das suasfuncionalidades esta no limite da sua criação.

Page 186: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 162

DataWindow : Técnicas avançadas

Propriedade Object. Podemos utilizar a propriedade Object para acessar dados em um objeto DataWindow em forma de expressões. Essas expressões podem se referenciar ao nome da coluna, número da coluna ou a linhas inteiras. Recuperando uma única linha da coluna especificada. Sintaxe : dw_controle.Object.ColumnName[RowNum] Onde : dw_controle : Nome do controle DataWindow que se irá

recuperar ou inserir dados. columnName : Nome da coluna no objeto DataWindow. cowNum : Número da linha que se deseja recuperar.

Sempre retorna um único valor

Exemplo: //RECUPERANDO UM VALOR Long l_salario l_salario = dw_1.Object.salario[1]

Recupera o conteúdo da coluna salario no objeto DataWindow e guarda na variável l_salario.

//ATRIBUINDO UM VALOR Long l_salario = 3450 dw_1.Object.salario[1]=l_salario //OU dw_1.Object.salario[1]=3450

Adquirido por : Fabrício Moreira da Silva

Page 187: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 163

DataWindow : Técnicas avançadas

Recuperando todas as linhas da coluna especificada.

Sintaxe : dw_controle.Object.ColumnName.Buffer Onde : dw_controle : Nome do controle DataWindow que se irá

recuperar ou inserir dados. columnName : Nome da coluna no objeto DataWindow. buffer : designa o Buffer que será recuperado o dado.

Retorna um ARRAY do mesmo tipo de dado definido para acoluna.

Exemplo: //RETORNA OS DADOS DO BUFFER PRIMARIO DO OBJETO DATAWINDOW String s_departamento[ ] s_departamento = dw_1.Object.departamento.Primary //RETORNA OS DADOS DO BUFFER CORRENTE DO OBJETO DataWindow String s_departamento [ ] s_departamento = dw_1.Object.departamento.Current

Recupera para o array “s_departamento” os dados da coluna “departamento” de todas as linhas do objeto DataWindow.

Recuperando as linhas selecionadas da coluna especificada.

Sintaxe : dw_controle.Object.ColumnName.Selected Onde : dw_controle : Nome do controle DataWindow que se irá

recuperar ou inserir dados. columnName : Nome da coluna no objeto DataWindow. selected : Cláusula de acesso as linhas selecionadas na

DataWindow.

Retorna um ARRAY do mesmo tipo de dado definido para acoluna.

Page 188: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 164

DataWindow : Técnicas avançadas

Exemplo: //RETORNA AS LINHAS SELECIONADAS NO CONTROLE DATAWINDOW String s_empregado[ ] S_empregado = dw_1.Object.empregado.Selectd

Se no controle DataWindow nenhuma linha estiver selecionada,retornará um array vazio.

Recuperando um conjunto de linhas da coluna especificada.

Sintaxe: dw_controle.Object.ColumnName.[StartRowNum,EndRowNum] Onde : dw_controle : Nome do controle DataWindow que se irá

recuperar ou inserir dados. columnName : Nome da coluna no objeto DataWindow.

startRowNum : Número da primeira linha a ser recuperada. endRowNum : Número da última linha a ser recuperada.

Retorna um ARRAY do mesmo tipo de dados definido para a coluna e os limites informados.

Exemplo: //RECUPARA OS NOMES DAS LINHAS 20,21,22,23 E 24 DA COLUNA NOME String s_nomes[5] s_nome = dw_1.Object.nome[20,24] //ATRIBUI BRANCOS NAS LINHAS 20,21,22,23 E 24 DA COLUNA NOME dw_1.Object.nome[20,24]=””

Adquirido por : Fabrício Moreira da Silva

Page 189: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 165

DataWindow : Técnicas avançadas

Parametrizando com a cláusula DATA. Caso o nome da coluna seja desconhecido podemos parametrizar o acesso através do número da coluna. Recuperando uma única linha da coluna especificada. Sintaxe: dw_controle.Object.Data.[StartRowNum,StartColNum] Onde : dw_controle : Nome do controle DataWindow que se irá

recuperar ou inserir dados. columnName : Nome da coluna no objeto DataWindow.

startRowNum : Número da primeira linha a ser recuperada. startColNum : Número da coluna.

Sempre retorna um único valor do buffer primário.

//RECUPERA O DADO DA COLUNA 5 DA LINHA 9 Long l_dependentes L_dependentes = dw_1.Object.Data[9,5] //ATRIBUI O VALOR “3” NA COLUNA 5 DA LINHA 9 dw_1.Object.Data[9,5] = 3 Recuperando um bloco especifico de colunas Sintaxe: dw_controle.Object.Data.[StartRowNum,StartColNum,EndRowNum,EndColNum] Onde : dw_controle : Nome do controle DataWindow que se irá

recuperar ou inserir dados. columnName : Nome da coluna no objeto DataWindow.

startRowNum : Número da primeira linha a ser recuperada. startColNum : Número da coluna inicial. sndColNum : Número da coluna final.

Retorna um ARRAY de estrutura do mesmo tipo de dados

definido para a coluna e os limites informados.

Page 190: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 10 166

DataWindow : Técnicas avançadas

Exemplo : //RETORNA OS VALORES DAS LINHAS 1 A 10 DAS COLUNAS DE 1 A 6 Str_departamento str_depto[ ] Str_depto = dw_1.Object.Data[1,1,10,6] A cláusula Data possibilita combinações para manipulação de dados.

Retornar uma linha inteira.

array_ou_estrutura = dw_1.Object.data[linha]

Retorna a DataWindow inteira.

array_tipo_ANY = dw_1.object.data Transfere dados do buffer primário de dw_1 para dw_2.

dw_2.object.data = dw_1.Object.data

Transfere da dw_1 para dw_2 as linhas selecionadas.

dw_2.Object.Data = dw_1.Object.Data.Selected

Adquirido por : Fabrício Moreira da Silva

Page 191: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 11

PipeLine de dados

Page 192: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 11 167

PipeLine de dados O pipeline de dados consiste como mais uma funcionalidade do PowerBuilder 9.0. Com o pipeline se transferem grandes quantidades de dados de um banco para outro banco independente. Podem-se transferir dados de um banco SQL Server para um banco Oracle. Assim como se pode utilizar o pipeline para se atualizar uma rede de dados distribuídos. No painter DataBase selecione a tabela que será transferida do banco e clique em Pipeline para abrir o template do pipeline. No Template pipeline. Teremos:

Table : Nome da tabela que será criada no banco destino. Options: O tipo de transferência de dados, opções:

!" Create-Add Table - Cria uma nova tabela, ela não pode existir na base destino.

!" Replace-Drop/Add Table - Apaga a tabela se ela existir no banco destino e cria uma nova tabela.

!" Refresh-Delete/Insert Rows - Mantém o banco destino, mas faz com que as linhas se correspondam ao banco origem.

!" Append-Insert Rows - Insere apenas as linhas novas no banco destino, linhas repetidas serão apontadas através de mensagens de erro.

!" Update-Update/Insert Rows - Insere linhas novas no banco destino e atualiza as linhas já existentes se alguma informação sofreu alteração.

Adquirido por : Fabrício Moreira da Silva

Page 193: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 11 168

PipeLine de dados Key : O nome da chave primária da tabela destino, normalmente é a usada à mesma chave na tabela do banco origem. Max Errors : A quantidade de erros que sua transferência pode receber até ser suspensa. Commit : A quantidade de instruções SQL executadas antes da instrução de Commit.

No template de definição de dados pode-se definir como os dados serão recebidos pelo banco de destino. Source Name e Source Type não permitem alteração, os itens com fundo em branco, permitem alteração. !" Destination Name - Altera o nome da coluna no banco destino. !" Type - Altera o tipo de dado na tabela destino. !" Key - Indica que itens farão parte da chave primária

na tabela destino. !" Width - Altera o tamanho do item no banco destino. !" Dec - Altera o número de casas decimais no banco

destino !" Nulls - Indica que valores podem ter valores NULL. !" Initial Value - Indica o novo valor padrão para o banco

destino.

Page 194: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 11 169

PipeLine de dados Após completar a definição dos dados para serem transferidos agora defina qual banco irá receber os dados da tabela de origem. Clique em Destination Profile e selecione o banco destino. Clique em Execute e será iniciada a transferência dos dados. Clique em Save para salvar a sua definição do pipeline para ser executada posteriormente. De o nome de U_COPIA_TABELA. O método que acabamos de ver executa o Pipeline no ambiente de desenvolvimento. Pode-se usar o Pipeline em tempo de execução para isso teremos que criar um objeto Pipeline e anexarmos a aplicação. Clique em New selecione PB Object e Standart Class.

Adquirido por : Fabrício Moreira da Silva

Page 195: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 11 170

PipeLine de dados A caixa de dialogo para seleção do tipo de classe a ser usada se abrirá. Então selecione Pipeline.

O template de definição da pipeline se abrirá :

Page 196: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 11 171

PipeLine de dados Clique em Declare Instance Variables.

Então defina os objetos:

statictext st_lidos,st_gravados,st_erros

Agora clique em Event List e escreva o código abaixo.

Agora clique em Save e salve o objeto do usuário como uo_pipeline01 em nossa aplicação exemplo1. Para executar o pipeline em tempo de execução você pode criar uma dropdown com uma lista de objetos e ao selecionar o objeto execute o código abaixo ou crie um botão para isto.

Adquirido por : Fabrício Moreira da Silva

Page 197: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 11 172

PipeLine de dados O código abaixo executa o PipeLine. Nesse exemplo teremos como padrão de execução um botão. Integer li_RC Long ll_Start, ll_End Transaction lt_Source uo_pipeline01 lp_Create st_erros.Text = "0" st_lidos.Text = "0" st_tempo.Text = "0" st_gravados.Text = "0" String erros[18] erros[1] = "-1 Erro ao abrir o Pipeline" erros[2] = "-2 Faltam colunas" erros[3] = "-3 Tabela já existe" erros[4] = "-4 Tabela não existe" erros[5] = "-5 Sem conexão inexistente" erros[6] = "-6 Erro nos parâmetros" erros[7] = "-7 Colunas incompatíveis" erros[8] = "-8 Erro fatal no SQL de origem" erros[9] = "-9 Erro fatal no SQL de destino" erros[10] = "-10 Maximo número de erros excedidos" erros[12] = "-12 Erro na sintaxe do Pipeline" erros[13] = "-13 chave requerido não encontrada" erros[15] = "-15 Pipeline já esta executando" erros[16] = "-16 Erro no database origem" erros[17] = "-17 Erro no database destino" erros[18] = "-18 Base de dados destino e um read-only" SetPointer(HourGlass!) This.Enabled = False cb_executa.Enabled = False transaction lt_origem lt_origem = CREATE Transaction lt_origem.dbms = sqlca.dbms lt_origem.database = sqlca.database

Page 198: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 11 173

PipeLine de dados lt_origem.userid = sqlca.userid lt_origem.dbpass = sqlca.dbpass lt_origem.logid = sqlca.logid lt_origem.logpass = sqlca.logpass lt_origem.servername = sqlca.servername lt_origem.dbparm = sqlca.dbparm Connect using lt_origem; If lt_origem.sqlcode <> 0 Then

Messagebox("Erro ao conectar", lt_origem.sqlerrtext) Return

End If lp_Create = CREATE uo_pipeline01 lp_Create.st_lidos = st_lidos lp_Create.st_gravados = st_gravados lp_Create.st_erros = st_erros //Recupera o pipeline de uma dropdown //lp_Create.DataObject = ddlb_pipeline.text //Ou atribua direto lp_Create.DataObject = "u_copia_tabela" ll_Start = CPU() li_RC = lp_Create.Start(lt_origem, sqlca,dw_erros) ll_End = CPU() st_tempo.Text = String((ll_End - ll_Start)/1000,"##0.0") If li_RC <> 1 Then

Beep(2) MessageBox("Erro", erros[ABS(li_rc)]) st_men.text = "Execução abortada"

End if Commit; DESTROY lp_Create Disconnect Using lt_origem; DESTROY lt_origem This.Enabled = True cb_executa.Enabled = FALSE

Adquirido por : Fabrício Moreira da Silva

Page 199: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 11 174

PipeLine de dados If li_RC = 1 Then

st_men.text = "Execusão terminada com sucesso." End if Nota : Para a “dw_erros” crie somente o controle datawindow.

Este exemplo você poderá testar no CD do PowerBuilder 9.0 Básico.

Page 200: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 12

Criando Relatórios

Adquirido por : Fabrício Moreira da Silva

Page 201: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 175

Criando Relatórios A criação de relatórios com o PowerBuilder 9.0 é muito simples quanto simples é o seu relatório, no PowerBuilder 9.0 a criação de um relatório segue os mesmos critérios da criação de uma DataWindow. O Relatório assim como a DataWindow é o resultado de uma consulta (query) ao banco de dados. A grande diferença é que o relatório não pode ser editado pelo usuário a sua ordem de tabulação é igual a zero. Em um relatório não existe validação de dados nem atualização dos mesmos. As opções de relatórios quanto a estilo de apresentação e origem de dados, são as mesmas disponibilizadas para a DataWindow.

Veja as definições no capítulo 9, sobre DataWindow.

Para se produzir um relatório devemos seguir alguns passos: 1. Determinar o tipo de relatório que se irá produzir; 2. Criar o objeto DataWindow que irá recuperar e exibir os dados; 3. Anexar o objeto DataWindow a um controle DataWindow; 4. Adicionar no controle DataWindow os processos para recuperar os dados e

imprimir. Os tipos: !" Tabular

!" Freeform

!" Grid

!" Label

!" N-Up

!" Group

!" Composite

!" Graph

!" Crosstab

!" OLE 2.0

!" RichText

Page 202: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 176

Criando Relatórios Em um relatório podem-se agregar todas as funcionalidades da DataWindow exceto as funcionalidades de atualização, por uma questão lógica e não por limitação. Então criar um relatório com o PowerBuilder é muito simples. Seguiremos alguns passos criando um relatório em cima da base de dados exemplo EAS Demo DB V9 e descrevendo passo a passo seus eventos, funções e propriedades. Clique em New selecione DataWindow e o estilo Freeform. Selecione no estilo de recuperação de dados Quick Select marque Retrieve onPreview. Clique em Next. Selecione a tabela Department, selecione todas as colunas clicando no botão à direita Add All, agora clique na tabela associada Employee, selecione as colunas emp.id, emp.fname, emp.lname, emp.salary. Clique em “OK” e marque o Save as Default. Clique em Next e em Finish para finalizarmos a criação de nossa DataWindow. A DataWindow foi criada. Como selecionamos o estilo Freeform os dados e label foram disponibilizados na vertical assim teremos que ajustar para que o relatório disponibilize as informações de modo satisfatório e coerente para uma boa visualização e customização de recursos.

Adquirido por : Fabrício Moreira da Silva

Page 203: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 177

Criando Relatórios Teremos então no template de edição o quadro abaixo:

Neste exemplo que iremos criar de relatório utilizaremos os recursos mais comuns para um relatório gerencial. Com cabeçalho, informações

de página, data da impressão, hora da impressão e a utilização de expressões na DataWindow de relatório. O Primeiro passo é maximizar o template de edição para uma melhor visualização dos dados. Com esse procedimento podemos melhor visualizar as bandas disponíveis para manipulação. !" Header - Onde colocaremos nosso cabeçalho. !" Datail - Onde colocaremos as linhas de dados. !" Summary - Onde colocaremos os dados sumarizados. !" Footer - Detalhes de rodapé do relatório.

Page 204: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 178

Criando Relatórios

A figura acima mostra o template de edição maximizado coloque o mouse sobra à banda Header. Na mudança do ponteiro do mouse, clique com o botão direito e mantenha-o pressionado, arrastando para baixo abrindo assim um espaço entre o limite do template e a banda Header.

Adquirido por : Fabrício Moreira da Silva

Page 205: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 179

Criando Relatórios Criando cabeçalho. Na PaintBar1 selecione o objeto Text e clique na parte branca entre o Header e banda limite Header. Para criarmos uma caixa de texto onde começaremos a montar nosso cabeçalho.

Para o objeto texto criado digite: “Demonstrativo : Salário XDepartamento”. Centralize o texto na parte superior da banda Header. Agora selecione o objeto Picture e clique na parte esquerda da banda Header. A caixa de dialogo para se selecionar a figura a inserir no objeto se abrirá. Selecione:C:\Arquivosdeprogramas\Sybase\PowerBuilder9.0\Code\Examples\ExampleApp\nautilus.bmp

Caso a figura fique fora de proporção, coloque o mouse sobre a figura e clique com o botão direito no menu popup que se abrirá. Selecione, “Original Size”.

Selecione outro objeto Text e inclua-o na banda Header. Para cada coluna selecionada na base iremos incluir um objeto texto com a identificação da coluna conforme segue :

Page 206: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 180

Criando Relatórios Algumas colunas estarão agrupadas formando assim uma única informação. Para se quebrar uma linha do objeto Text, digite logo após o texto que se deseja quebrar (~r) Til mais a letra erre. Coloque o mouse sobre cada banda e na mudança do ponteiro do mouse clique com o botão direito mantenha-o pressionado e alinhe cada banda para que o relatório tenha uma proporcionalidade adequada para cada linha que será exibida. Veja figura abaixo.

Note que algumas colunas terão um alinhamento à esquerda e outras à direita podendo até ter colunas que deverão estar centralizadas. Esses ajustes serão necessários para adequar o tipo de dado a visualização

que se queira dar ao relatório. Não existe uma regra definida neste caso vale sempre o bom senso. Lembrando que sempre se deve procurar mostrar o máximo de informações possíveis sem se poluir o relatório. Fazendo-se assim um relatório de fácil leitura e identificação dos dados.

Adquirido por : Fabrício Moreira da Silva

Page 207: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 181

Criando Relatórios Agora vamos incluir algumas funções disponíveis no PowerBuilder 9.0.

Função DescriçãoToday() Retorna a data corrente Now() Retorna a hora corrente Page() Retorna a página corrente PageCount() Retorna o total de páginas

Incluindo a data corrente

Clique em Today´s Date e clique ao lado do título à direita para incluir o objeto Text com a expressão Today().

Note que a expressão Today() retorna a data atual no modelo a qual ela esta definida no painel de controle do MS Windows®.

À direita no template propriedades, em “Compute Expression”. clique no botão de seleção para abrir a caixa de dialogo “Modify Expression” e digite ou selecione na caixa de seleção na parte inferior à esquerda String(x,s), no lugar do “x”, escreva Today() e ignore o “s”. Então teremos: string( today() )

Page 208: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 182

Criando Relatórios Clique em “Ok”. Aumente a célula até que esta disponibilize a data e a hora. Então teremos no relatório : Coloque o mouse sobre a banda “Summary” e na mudança do ponteiro do mouse clique com o botão esquerdo mantenha-o pressionado e arraste abrindo assim um espaço entre a banda “Datail” e “Summary”.

Clique na coluna “salary” da banda “Datail” e clique em para criar uma coluna com a média dos valores recuperados do banco de dados. Agora clique na parte branca da banda “Summary” e o campo computado com a expressão, “avg(employee_salary for all)” será adicionado a

DataWindow. Clique em e crie um novo objeto de texto e digite “MédiaSalarial :”. Alinhe o campo computado com a coluna salário e coloque o objeto texto à frente do campo computado.

Adquirido por : Fabrício Moreira da Silva

Page 209: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 183

Criando Relatórios

Com estes procedimentos montamos uma coluna com a média salarial de todos os departamentos.

Agora incluiremos um controle de página no rodapé do relatório. Coloque o mouse sobre a banda “Footer” e na mudança do ponteiro do mouse clique com o botão esquerdo mantenha-o pressionado e arraste. Abrindo assim um espaço entre a banda “Summary” e “Footer”.

Clique em para criar um campo computado com a expressão: 'Page ' + page() + ' of ' + pageCount(). No template propriedade à direita na propriedade “Compute Expression” clique no botão de seleção na caixa de dialogo que se abrirá e substitua :

1. “Page” por “Página” 2. “of” por “de”

Então teremos : 'Página ' + page() + ' de ' + pageCount() E como resultado:

Page 210: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 184

Criando Relatórios

Criamos controle e total para o relatório geral. Criaremos agora estes

grupo pa

a PowerBar clique em “Rows” e selecione no menu que se abrirá “Create

a caixa de dialogo “Specify Group Columns” que se abrirá clique e arraste

lique em “Ok”.

controles para um determinado grupo. Assim devemos criar um ra dividirmos o relatório e dar e ele uma aparência mais profissional.

NGroup”. Na coluna “department_dept_id” da caixa Source Data para a caixa Columns. Conforme a figura abaixo. C

Adquirido por : Fabrício Moreira da Silva

Page 211: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 185

Criando Relatórios Note que novas bandas foram disponibilizadas a partir da inclusão de um grupo. São elas :

Header group department_dept_id : Cabeçalho específico para o grupo. Trailer group department_dept_id : Rodapé específico do grupo Coloque o mouse sobre a banda “Trailer group” e na mudança do ponteiro do mouse clique com o botão esquerdo mantenha-o pressionado e arraste. Abrindo assim um espaço entre a banda “Trailer group” e “Detail”. Mova os itens da banda “Summary” Média Salarial. O computed Field com o valor da média salarial e a linha para a banda “Trailer Group”. Para continuarmos teremos que entender sobre as propriedades da banda de grupo. As outras bandas exibem propriedades padrão, já para a banda de grupo existem algumas particularidades.

Page 212: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 186

Criando Relatórios Coloque o ponteiro do mouse sobre a banda “Header group” e clique com o botão direito. As propriedades da banda aparecerão à direita.

Color : Define a cor de fundo da banda. Height : Define o tamanho (altura) que a banda vai ter. Group Definition : Definição dos itens que compõe o grupo. Group Sort : O tipo de classificação que o grupo terá. Reset Page Count : Inicia o contador para cada quebra de grupo. New Page on Group Break : Quebra a página a cada quebra de grupo.

Clique no botão de seleção de “Group Sort” e clique e arraste a coluna “department_dept_id” de “Source Data” para “Columns”. Conforme a figura.

Clique em “Ok”.

Adquirido por : Fabrício Moreira da Silva

Page 213: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 187

Criando Relatórios No template propriedade selecione “New Page on Group Break”. Essa seleção fará com se quebre a página a cada novo grupo.

Veja no Template Preview como ficou o relatório. Note que automaticamente uma barra foi incluída em cada quebra, esta barra pode ser inibida, siga os passos abaixo.

Clique na parte branca da banda “Trailer gruop” para acessar as propriedades. Selecione “Hide Gray Line on Group Break”. Se deseja inibir esta barra.

Page 214: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 188

Criando Relatórios Para uma apresentação mais profissional, coloque o mouse sobre a banda “Header group” e na mudança do ponteiro do mouse clique com

o botão esquerdo mantenha-o pressionado e arraste abrindo assim um espaço entre a banda “Header group” e a banda “Header”. Mova as colunas “department_dept_id”, “department_dept_name” e “department_dept_head_id” para a banda “Header group”. Como resultado, teremos:

Adquirido por : Fabrício Moreira da Silva

Page 215: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 189

Criando Relatórios

Clique em Save salve o relatório com o nome “d_rel01”, feche o template DataWindow.

Agora, clique em New selecione “DataWindow” escolha como estilo “Group” em “Choose Data Source for Group DataWindow”

selecione “Quick Select”. Na caixa de dialogo “Quick Select” selecione a tabela “Department” e clique no botão “Add All”. Selecione a tabela “Employee” e selecione as colunas emp.id, emp.fname, emp.lname e emp.salary.

Em “Source Data” clique em “department_dept_id” e arraste para o item “Columns”. Clique em “Next”. Na caixa de dialogo “Set Group Page Data” item “New page on group break” clique em “Next” e na caixa de dialogo “Select Color

and Border Settings” clique em “Next”. Na Caixa de dialogo “Ready toCreate Group DataWindow”, clique em “Finish”.

O Resultado que teremos se aproxima e muito da DataWindow criada anteriormente com a vantagem que só “clicamos”, o PowerBuilder 9.0

construiu tudo automaticamente nesse caso teríamos somente que acertar o cabeçalho e dimensionar melhor as colunas.

Page 216: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 190

Criando Relatórios

Entendendo o estilo Composite.

O Estilo denominado “composite” designa-se a apresentar uma DataWindow cujo seu conteúdo é a inserção de várias DataWindow independentes ou não entre si com estilos de apresentação diferentes. Normalmente este estilo é utilizado para relatórios condensados e complexos. A DataWindow principal receberá a denominação “Composite” (que recebe as outras DataWindow), as DataWindow internas recebem a denominação “Nested Reports” (que compõe a DataWindow de estilo composite). Clique em New selecione DataWindow e o estilo Grid. Selecione no estilo de recuperação de dados Quick Select. Marque Retrieve onPreview. Clique em Next. Selecione a tabela Department. Selecione todas as colunas clicando no botão à direita Add All. Clique em “OK”, e marque o Save as Default. Clique em Next e em Finish para finalizar a criação da DataWindow. Teremos : Clique em Save e salve a DataWindow como “d_relatorio_1”. Feche o template de DataWindow.

Adquirido por : Fabrício Moreira da Silva

Page 217: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 191

Criando Relatórios Vamos criar a segunda DataWindow que será inserida em nosso relatório composite. Clique em New selecione DataWindow e o estilo Tabular. Selecione no estilo de recuperação de dados Quick Select marque Retrieveon Preview. Clique em Next. Na caixa de dialogo “Quick Select” selecione a tabela “employee” e as colunas; “emp_id”, “manager_id”, “emp_fname”, “emp_lname”, “dept_id” e “salary”. Clique em “Ok” , “Next” e “Finish”. Então teremos: Clique em Save e salve a DataWindow como “d_relatorio_2”. Feche o template de DataWindow. Vamos criar a terceira DataWindow que será inserida em nosso relatório composite. Clique em New selecione DataWindow e o estilo Graph. Selecione no estilo de recuperação de dados Quick Select. Marque Retrieve onPreview. Clique em Next.

Page 218: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 192

Criando Relatórios Na caixa de dialogo “Quick Select” selecione a tabela “employee” e as colunas; “salary” e “sex”. Clique em “Ok”, “Next” e “Finish”. Na caixa de dialogo “Define Graph Data” na propriedade “Category” selecione “sex” em “Values” selecione “salary”. Clique em “Next”. Na caixa de dialogo “Define graph Style” na propriedade “Title” escreva “Salário XSexo” e em “Graph Type” selecione “Column”. Clique em “Next” e “Finish”. Então teremos : Agora falta descriminar as variáveis do nosso gráfico nesse exemplo não iremos exemplificar todas as propriedades do objeto gráfico, veremos isto mais adiante. Na propriedade à direita selecione “General” e em “Title” digite; “Sálario XSexo”. Agora selecione a aba “Axis” e selecione na propriedade “Axis” o item “Category” em “Label” digite “Sexo”. Retorne na propriedade “Axis” e selecione “Value” e em “Label” digite “Salário”.

Adquirido por : Fabrício Moreira da Silva

Page 219: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 193

Criando Relatórios Então teremos: Clique em Save e salve a DataWindow como “d_relatorio_gr_3”. Feche o template de DataWindow.

Page 220: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 194

Criando Relatórios Com os relatórios gerados iniciaremos a construção da DataWindow estilo composite. Clique em New selecione DataWindow e o estilo Composite. Na caixa de dialogo “Choose Nested DataWindows for Composite” selecione os relatórios “d_relatório_1”, “d_relatorio_2” e d_relatorio_gr_3”. Clique em Next e Finish. Então teremos:

Adquirido por : Fabrício Moreira da Silva

Page 221: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 195

Criando Relatórios A disposição física dos relatórios é as mesmas efetuadas durante a seleção, podemos modificar esta disposição para uma melhor visualização.

O estilo Composite como todos os outros estilos também disponibiliza algumas propriedades que podem ser configuradas para uma melhor visualização. São: Em General : Name : Nome dado ao relatório e que define o acesso a este Nested. HideSnaked : Faz com que o controle só aparece uma vez por página quando você imprimir a DataWindow caso esta utilize o formato de colunas de jornal. Visible : Habilita ou inibe a visualização do relatório. Border : Define o tipo de contorno que o relatório deve exibir.

Page 222: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 12 196

Criando Relatórios Report : Seleciona ou altera o relatório em foco. New Page :Quebra a página antes da exibição do próximo relatório (Nested). Trail Footer : Força a banda footer a aparecer depois da última linha de dados do relatório. Em Pointer : Pointer : Seleciona o tipo de ponteiro do mouse será exibido. Em Criteria : A condição de filtro da cláusula Where para o relatório. A propriedade de Critérios define a conexão entre o relatório e o DataWindow. Exemplo : emp_id=:id_emp

Adquirido por : Fabrício Moreira da Silva

Page 223: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 13

Gráficos

Page 224: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 197

Gráficos

Um gráfico em linhas gerais é igual a qualquer outro objeto DataWindow. Exceto pelo fato de revelar os dados em forma de gráfico ao invés de apresentar os dados em forma de números. Para se criar um gráfico precisaremos entender alguns padrões. Em um gráfico existem as categorias, os valores e as séries. Onde : Categoria : Os dados independentes, tipo: meses, anos e bimestres. Valor : Os dados dependentes, esta informação normalmente sofre alteração por categoria, tipo : Vendas (por mês) , Vendas (por ano) e Vendas (por bimestre). Série : Os conjuntos de pontos de dados do gráfico.

Para se criar um gráfico deve-se definir as categorias e os valores. As séries estarão presentes no gráfico de acordo com as categorias e os

valores. Normalmente as categorias correspondem a uma coluna da tabela. Os valores também podem provir de uma coluna, mas normalmente provém de agregações, somatórias ou média de uma coluna. Criando um gráfico

Clique em New selecione “DataWindow” e escolha o estilo “Graph” em “Choose Data Source for Graph DataWindow” selecione “QuickSelect” e marque a caixa de seleção “Retrieve on Preview” e tecle “Next”. Na caixa de dialogo “Quick Select” selecione “employee”. No quadro “Columns” selecione “salary” e “sex” e clique em “Ok” Na caixa de dialogo “Define Graph Data” selecione para “Category”; “sex”. Para “Values”; “sum(salary for graph)” e para “Series”; “sex”. Clique em “Next”. Na caixa de dialogo “Define Graph Style” selecione “SolidBar” e clique em “Finish”.

Adquirido por : Fabrício Moreira da Silva

Page 225: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 198

Gráficos

Então teremos:

Com esta primeira visão podemos notar que praticamente o gráfico já está montado. Precisamos alterar algumas configurações para uma melhor precisão dos dados e compreensão do mesmo por qualquer pessoa que o analise. Para isto, existem as propriedades do objeto gráfico. São:

Propriedade Tipo de dado DescriçãoBackColor Long Especifica o valor numérico da cor de

fundo: -2 a 16,777,215 Border Border Especifica se o controle tem uma borda BorderStyle BorderStyle

(Descrita) Especifica o estilo da borda do controle. Seus valores são: StyleBox! StyleLowered! StyleRaised! StyleShadowBox!

Page 226: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 199

Gráficos

Propriedade Tipo de dado Descrição BringToTop Boolean Especifica se PowerBuilder 9.0 moverá o

controle front-to-back na janela ou controle de DataWindow.

Category grAxis Especifica as propriedades do eixo de categoria do gráfico.

CategorySort grSortType Especifica como as categorias são ordenadas.

ClassDefinition PowerObject Um objeto de tipo PowerObject que contém informação sobre a definição de classe do objeto ou controle.

Depth Integer Especifica o percentual de profundidade da largura do gráfico.

DragAuto Boolean Especifica se PowerBuilder porá o gráfico automaticamente em modo de arrastar e soltar. TRUE - Quando o controle é clicado ou, o controle está automaticamente dentro do modo arrastar e soltar. FALSE - Quando o controle é clicado, o controle não está automaticamente dentro do modo arrastar e solta.

DragIcon String Especifica o nome do ícone ou o arquivo que contêm o ícone que você quer exibir quando o usuário arrastar um controle .

Elevation Integer Especifica o ângulo de elevação de frente para a parte de trás.

Enabled Boolean Especifica se o controle é habilitado (pode ser selecionado).True : Habilitado / False : Não habilitado

Adquirido por : Fabrício Moreira da Silva

Page 227: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 200

Gráficos

Propriedade Tipo de dado Descrição GraphType grGraphType

(Decrita) Especifica o tipo do gráfico, os valores são: Area3D! AreaGraph! Bar3DGraph! Bar3DObjGraph! BarGraph! BarStack3DObjGraph! BarStackGraph! Col3DGraph! Col3DObjGraph! ColGraph! ColStack3DObjGraph! ColStackGraph! Line3D!LineGraph! Pie3D! PieGraph! ScatterGraph!

Height Integer Especifica a altura do controle, em unidades do PowerBuilder.

Legend grLegendType (descrita)

Especifica o alinhamento da legenda do gráfico, os valores são: AtBottom! AtLeft! AtRight! AtTop!NoLegend!

Legend DispAttr grDispAttr Especificam o estilo para o tipo de texto da legenda do gráfico, inclusive tamanho, cor, e rotação.

OverlapPercent Integer Especifica o percentual da largura dos marcadores de dados para séries diferentes em um gráfico.

Perspective Integer Especifica a distância que o gráfico é da frente da janela.

PieDispAttr grDispAttr Especificam as propriedades do texto em gráfico de torta com label, inclusive tamanho, cor, e rotação.

Pointer String Contém o nome do ponteiro ou o arquivo que contêm o ponteiro usado para o gráfico.

Page 228: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 201

Gráficos

Propriedade Tipo de dado Descrição Rotation Integer Especifica quanto girar o gráfico da

esquerda para direita. Series grAxis Especifica as séries no gráfico. SeriesSort grSortType Especifica como as séries são ordenadas. ShadeColor Long Especifica a cor usada para o

preenchimento no gráfico. Spacing Integer Especifica o espaço entre marcadores de

dados no gráfico em percentual. TabOrder Integer Especifica o valor do controle TAB na

seqüência da tecla TAB. Tag String Especifica o valor de etiqueta do controle. TextColor Long Especifica a cor a ser usada para o texto no

controle. Title String Especifica o texto do título para o gráfico. TitleDispAttr grDispAttr Especificam o estilo para o texto na

legenda do gráfico, inclusive estilo de texto, tamanho, cor e rotação.

Values grAxis Especifica os valores do eixo de valor do gráfico.

Visible Boolean Especifica se o controle é visível. Se TRUE - Controle é visível. Se FALSE - Controle não é visível.

Width Integer Especifica o modo de texto no controle; por exemplo, 400 para normal ou 700 para tipo negrito.

X Integer Especifica o posicionamento X (à distância da extremidade esquerda da janela principal), em unidades do PowerBuilder.

Y Integer Especifica o posicionamento Y (à distância do topo da janela principal), em unidades do PowerBuilder.

Adquirido por : Fabrício Moreira da Silva

Page 229: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 202

Gráficos

Em todas as propriedades disponibilizadas pelo PowerBuilder 9.0, pode-se usar a notação por pontos através do PowerScript facilitando a interação com o usuário em tempo de execução. Exemplo:

gr_1.BackColor = RGB(255, 255, 0) ou

gr_1.Category.LabelDispAttr.BackColor = RGB(0, 128, 255) ou

gr_1.Category.Label = "Tipos X Produtos" ou

gr_1.Depth = 50

Alterando as propriedades do gráfico no painter DataWindow.

No template “propriedade” à direita clique na aba “General”. Para saber cada propriedade consulte a tabela acima. Title : digite “Salário X Sexo”. Units : selecione PowerBuilder (0) Timer Interval : Selecione (0) Color : Selecione “Black” BackColor : Selecione “White” Name : o padrão sempre é gr_1. Depth : Não estará disponível. Elevation : Não estará disponível.

Page 230: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 203

Gráficos

No template “propriedade” à direita clique na aba “Axix”. Para saber cada propriedade consulte a tabela acima. Na propriedade “Axix” selecione “Category” em “Label”, digite “Sexo”. Na propriedade “Axix” selecione “Label” em “Label”, digite “Salário”. Na propriedade “Axix” selecione “Series” em “Label”, digite “Descrição”. Na propriedade “Scale” marque a caixa “AutoScale”. Então teremos :

Clique em Save salve o modelo do gráfico como “d_grafico”.

Adquirido por : Fabrício Moreira da Silva

Page 231: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 204

Gráficos

Explore as propriedades do objeto gráfico. Normalmente se aplica sua variação em tempo de execução. Os padrões 3D disponibilizam as propriedades “Perspective”, “Elevation” e “Rotation” que oferecem um bom recurso para visualização. Através das instruções de notação de ponto se pode disponibilizar suas definições para o usuário. Até aqui conceituamos funções, objetos e aplicamos suas funcionalidades. O mesmo será feito para o objeto gráfico. Para isto, utilizando o aprendizado até agora iremos alterar o projeto proposto. Adequando-o a novas inserções de objetos e funções. Edite a janela “w_000” altere a propriedade “Window Type” para “mdihelp!”. Salve a janela.

Clique em New selecione “PB Object” e “Window”. O template para criação de um novo objeto Window aparecerá. Altere a propriedade

“Window Type” para “child!”. Selecione a aba “Other” e altere a propriedade “Width” para o valor “3666” e “Height” para “2284”. Salve a janela como “w_003”.

Clique em New selecione “PB Object” e “Menu”. O template para criação de um novo objeto menu se abrirá. Clique no item “untitle0”

com o botão direito do mouse e selecione no menu-popup que se abrirá “Insert Submenu item”.

Na propriedade “Text” digite “Gráfico”. Com um duplo clique no item “Gráfico” selecione o evento “Clicked” e escreva o código PowerScript:

“OpenSheet(w_003, w_000, 2, Layered! )”. Salve como “m_menu02”.

Edit a janela “w_000” no template propriedade substitua à propriedade “MenuName” pelo novo menu “m_menu02”. Salve a janela “w_000”.

Page 232: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 205

Gráficos

Incluindo o objeto gráfico na janela principal.

Edite a janela “w_003” clique em “Select Control” e selecione “CreateDataWindow control”. Clique na janela para incluir o objeto DataWindow. No template propriedade do controle DataWindow inclua na propriedade “DataObject” o objeto gráfico “d_gráfico”. Ajuste o controle DataWindow para que se visualize todo o objeto DataWindow. Então teremos:

Adquirido por : Fabrício Moreira da Silva

Page 233: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 206

Gráficos

Habilitando a DataWindow.

Clique em “Select Control” e selecione “Create CommandButtoncontrol”. Clique na janela para incluir o objeto CommandButton. No template propriedade na propriedade “Text” digite “Retrieve”. Dê um duplo clique no objeto CommandButton. Selecione o evento “Clicked” e digite: // Desconecta o DBMSDisconnect;

// Aplica os parâmetros do DBMS de teste a transação SQLCAsqlca.dbms ="ODBC"sqlca.dbparm ="ConnectString='DSN=EAS Demo DB

V9;UID=dba;PWD=sql'"

// Conecta com o banco connect;

//Testa a conexão

If sqlca.sqlcode < 0 ThenMessageBox ("Erro: Impossível conectar com o banco de

dados", sqlca.sqlerrtext, Exclamation!) HALT End If

dw_1.SetTransObject(SQLCA)dw_1.Retrieve()

Page 234: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 207

Gráficos

Clique em “Select Control” e selecione “Create CommandButtoncontrol”. Clique na janela para incluir o objeto CommandButton. No template propriedade na propriedade “Text” digite “Fechar”. Dê um duplo clique no objeto CommandButton selecione o evento “Clicked” e digite: // Desconecta do DBMSDisconnect;

// Apaga todos os dados de um controle DataWindowdw_1.Reset()

Clique em Save. Salve o modelo do gráfico. Então teremos :

Adquirido por : Fabrício Moreira da Silva

Page 235: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 208

Gráficos

Em tempo de execução podemos alterar o modelo do gráfico. para tal usamos notação de pontos. Clique em DropDownListBox. Clique na janela para incluir o objeto DropDownListBox.

No template propriedades à direita na propriedade “Text” digite; “4Bar3Dobj”.

Marque nas propriedades “Visible”, “Enabled”, “AllowEdit” e “VscrollBar”.

No template propriedade selecione a aba “Items” e digite para cada linha da tabela disponibilizada as linhas abaixo:

1 — Area 2 — Bar 3 — Bar3D 4 — Bar3Dobj 5 — BarStacked 6 — BarStacked3Dobj 7 — Col 8 — Col3D 9 — Col3Dobj 10 — ColStacked 11 — ColStacked3Dobj 12 — Line 13 — Pie 14 — Scatter 15 — Area3D 16 — Line3D 17 — Pie3D Essa tabela, representa os tipos de gráficos disponíveis no PowerBuilder 9.0.

Salve sua aplicação. Essa é uma forma de nunca perdermos um trabalho, a cada etapa ou de tempos em tempos no nosso trabalho, salve sua aplicação.

Page 236: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 209

Gráficos

Clique em HtrackBar e clique na janela para incluir o objeto HtrackBar. Inclua este objeto na parte superior do controle DataWindow. Repita a operação para a inclusão de mais um objeto HtrackBar. Posicione esse objeto na parte inferior do controle DataWindow. Clique em VtrackBar e clique na janela para incluir o objeto VtrackBar. Inclua este objeto na lateral direita do controle DataWindow. Então teremos: Agora para que os controles tenham sua funcionalidade iremos escrever através de notação de pontos, sua programação.

OBS : Inclua quatro “StaticText”. No primeiro escreva; “Elevação”, no segundo; “Perspectiva” no terceiro; “Rotação” e no quarto; “Tipo do Gráfico” e distribua conforme a figura acima.

Adquirido por : Fabrício Moreira da Silva

Page 237: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 210

Gráficos

Selecione com um duplo clique o objeto “HtrackBar” definido como “htb_1” que será utilizado para “Elevação”. Selecione o evento “Moved” esse evento sempre será disparado se a barra do controle HtrackBar for movimentada. Escreva o código PowerScript : dw_1.Object.gr_1.Elevation = This.Position

Selecione com um duplo clique o segundo objeto “HTrackBar” definido como “htb_2” que será utilizado para “Rotação”. Selecione o evento “Moved” esse evento sempre será disparado se a barra do controle HTrackBar for movimentada. Escreva o código PowerScript : dw_1.Object.gr_1.Rotation=This.Position

Selecione com um duplo clique o terceiro objeto “VTrackBar” definido como “vtb_1” que será utilizado para “Perspectiva”. Selecione o evento “Moved” ess evento sempre será disparado se a barra do controle VTrackBar for movimentada. Escreva o código PowerScript : dw_1.Object.gr_1.Perspective = This.Position

Selecione com um duplo clique a “DropDownListBox” definido como “ddlb_1”. Selecione o evento “selectionchanged” ess evento sempre será disparado quando o conteúdo da ddlb for alterado. Como resultado desta alteração a variável “index” será preenchida com a posição física da seleção formando assim um indexador. Como o texto na tabela segue uma numeração uniforme podemos utilizar o conteúdo da variável “index” como um parâmetro para seleção.

Escreva o código PowerScript: integer l_index l_index = index

dw_1.Object.gr_1.GraphType = l_index

Page 238: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 211

Gráficos

Salve a aplicação e execute. Então teremos:

Adquirido por : Fabrício Moreira da Silva

Page 239: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 13 212

Gráficos

Para que as barras HtrackBar e VtrackBar tenham funcionalidade escolha na “DropDownListBox” um tipo de gráfico com padrão 3D. Tipo : Bar3D Agora movimente as barras e veja os efeitos que se pode proporcionar.

Page 240: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 14

XML

Conceito

Exportando DataWindow

(DataWindow Export)

Importando um padrão XML para a

DataWindow

Adquirido por : Fabrício Moreira da Silva

Page 241: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 213

XML

Conceito

A XML (eXtensible Markup Language, ou Linguagem de Marcação Estendida) é um subconjunto da SGML (Standard Generalized Markup Language, ou Linguagem de Marcação Padrão Generalizada) que permite que uma marcação específica seja criada para especificar idéias e compartilhá-las na rede. Ela tem as virtudes da SGML e da HTML sem qualquer das limitações óbvias. Pontos fortes da XML

Inteligência: a XML é inteligente para qualquer nível de complexidade. A marcação pode ser alterada de uma marcação mais geral como: <função> Desenvolvedor </função> para uma mais detalhista, como: <função> <Diretoria de Informática>

<Informática> Desenvolvedor </Informática> </Diretoria de Informática>

</função> As idéias são bem marcadas para que : <Informática> Desenvolvedor </Informática> e, <Jurídico> Adv. Junior </Jurídico> sejam sempre valores diferentes. A informação conhece a si mesma. Não é necessária mais nenhuma idéia indesejável; Manutenção: a XML é fácil de manutenção. Ela contém somente idéias e marcações. Folhas de estilos e links, vêm em separado, e não escondidas no documento. Cada um pode ser alterado separadamente quando preciso com fácil acesso e fáceis mudanças;

Page 242: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 214

XML

Ligação: a XML possui uma maneira de ligar que inclui todas as formas de ligação. Não só isso; ela liga de maneira que a HTML não pode. A HTML pode fazer de uma maneira simples, onde um objeto se liga a outro. A XML faz isso, mas também pode ligar dois ou mais pontos a uma idéia. Existem ainda links gêmeos que ligam todas as idéias dentro de uma mesma. Qualquer link entre uma idéia pode ser manipulado de uma única maneira; Portabilidade: a XML é de fácil portabilidade. A razão da sua existência é força e portabilidade. A SGML tem força. A HTML tem portabilidade. A XML têm ambas. A XML pode ser navegada com ou sem o seu DTD (Document Type Definition, ou Definição de Tipo de Documento - as normas que definem como as tags são estruturas nos documentos XML), tornando o download mais rápido. Tudo que um navegador precisa para ver XML é ter a noção que ela própria e a folha de estilos, controlam a aparência. Se uma validação restrita é necessária, o seu DTD pode acompanhá-lo e fornecer detalhes exatos da sua marcação. Como a XML é definida

A XML é definida pelas seguintes especificações: Extensible Markup Language (XML) 1.0: define a sintaxe da XML; XML Pointer Language (XPointer) e XML Linking Language (XLink): define um padrão para representar os links entre os recursos. Além dos links simples, como a tag <A> da HTML, a XML possui mecanismos para ligar recursos múltiplos e diferentes. A XPointer descreve como endereçar um recurso, e a XLink descreve como associar dois ou mais recursos; Extensible Style Language (XSL): define a linguagem de folhas de estilos padrão para a XML.

Adquirido por : Fabrício Moreira da Silva

Page 243: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 215

XML

Uma DTD (Document Type Definition) pode ser definida como um conjunto de regras que define quais tipos de dados e entidades fará parte de um documento XML. Estas regras serão utilizadas para que o analisador sintático verifique se o documento está correto ou não. A DTD pode estar definida dentro do próprio arquivo XML ou em um arquivo à parte com extensão .dtd, que deve ser incluído no código XML. A DTD pode ser usada para padronizar um documento XML e torná-lo bastante coerente com as necessidades do desenvolvedor, porém sua criação não é obrigatória. DTDs Externas: Quando temos um documento XML muito extenso, é melhor utilizarmos um DTD externo, o que traz boa qualidade com super organização dos dados. DTDs Internas: A DTD interna é melhor trabalharmos quando usamos pequenos documentos XML. Como criar uma DTD Para criarmos um arquivo DTD devemos analisar vários aspectos como por exemplo: Tipos de dados que o arquivo XML irá conter etc. Criando uma DTD Interna. Abaixo esta uma pequena demonstração de dados de uma DTD interna. <?xml version='1.0' encoding="iso-8859-1" ?> <! DOCTYPE NOTA [ <! ELEMENT NOTA (PARA,DE,ASSUNTO) <! ELEMENT PARA (#PCDATA)> <! ELEMENT DE (#PCDATA)> <! ELEMENT ASSUNTO (#PCDATA)> <! ENTITY NOME "JOSÉ DA SILVA"> ]> <NOTA> <PARA>PEDRO XAVIER</PARA> <DE>&NOME;</DE> <ASSUNTO>HORARIO DA REUNIÃO</ASSUNTO> </NOTA>

Page 244: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 216

XML

Onde :

<!DOCTYPE NOTA [ Esta linha diz que tudo o que estiver entre os colchetes será o DTD de um documento cujo elemento raiz é <NOTA>. Como mencionado anteriormente, o elemento raiz contém todos os outros.

<! ELEMENT NOTA (PARA,DE,ASSUNTO) Isto define a tag <NOTA>. Os parênteses dizem que estes dois outros conjuntos de tags devem aparecer dentro das tags <NOTA>, naquela ordem específica.

<! ELEMENT PARA (#PCDATA)> #PCDATA, significa Parsed Character Data ou dados de caractere analisados (isto é, qualquer coisa que não seja dados binários, como uma imagem). Neste caso, o #PCDATA será texto por exemplo, "PEDRO". Criando uma DTD Externa. O Código desta demonstração será o mesmo do que da DTD interna acima somente iremos dividir o DTD e XML em dois arquivos com as extensões .xml e .dtd. Abaixo o arquivo .xml <?xml version='1.0' encoding="iso-8859-1" ?> <! DOCTYPE NOTA SYSTEM "dtdexterna.dtd"> <NOTA> <PARA>PEDRO</PARA> <DE>&NOME;</DE> <ASSUNTO>CARTA DO USUARIO</ASSUNTO> </NOTA> Note que no arquivo .xml, adicionamos uma linha para chamar o arquivo .dtd

Adquirido por : Fabrício Moreira da Silva

Page 245: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 217

XML

Agora abaixo o arquivo .dtd <?xml version='1.0' encoding="iso-8859-1" ?> <! ELEMENT NOTA (PARA,DE,ASSUNTO) <! ELEMENT PARA (#PCDATA)> <! ELEMENT DE (#PCDATA)> <! ELEMENT ASSUNTO (#PCDATA)> <! ENTITY NOME "JOSE DA SILVA"> ValidaçãoExistem duas categorias de documentos XML: bem formatados e válidos. Documentos Bem Formatados

Um documento somente pode ser bem formatado se ele obedece à sintaxe da XML. Um documento que inclui seqüências de caracteres de marcação que não podem ser analisadas ou são inválidas não podem ser bem formatados. Além disso, o documento deve atender a todas as seguintes condições (subentendendo-se que algumas destas condições podem exigir experiência com SGML): !" A instância do documento deve estar conforme a gramática dos

documentos XML. Em particular, algumas construções de marcações (referências a entidades parâmetro, por exemplo) são somente permitidas em locais específicos. O documento não é bem formatado se tais ocorrerem em outros locais, ainda que o documento esteja bem formatado nos outros casos.

!" O texto de substituição para todas as entidades parâmetro referenciadas

dentro de uma declaração de marcação consiste em zero ou mais declarações de marcações completas. (Nenhuma entidade usada no documento pode consistir de somente uma parte de uma declaração de marcação.)

!" Nenhum atributo pode aparecer mais do que uma vez na mesma marca de

início. !" Valores de atributos cadeias de caracteres não podem conter referências a

entidades externas. !" Marcas não-vazias devem ser apropriadamente aninhadas.

Page 246: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 218

XML

!" Entidades parâmetro devem ser declaradas antes de serem usadas. !" Todas as entidades devem ser declaradas, exceto as seguintes: amp, lt,

gt, apos e quot. !" Uma entidade binária não pode ser referenciada no fluxo do conteúdo; ela

pode ser usada somente em um atributo declarado como ENTITY ou ENTITIES.

Documentos

Um documento bem formatado é válido somente se ele contém uma declaração de tipo de documento e se o documento obedece às restrições da declaração. Documentos com DTD Definição

Na XML as regras que definem um documento são ditadas por DTDs (Document Type Definitions), as quais ajudam a validar os dados quando a aplicação que os recebe não possui internamente uma descrição do dado que está recebendo. Mas os DTDs são opcionais e os dados enviados com um DTD são conhecidos como dados XML válidos. Um analisador de documentos pode checar os dados que chegam analisando as regras contidas no DTD para ter certeza de que o dado foi estruturado corretamente. Os dados enviados sem DTD são conhecidos como dados bem formatados. Nesse caso, o documento pode ser usado para implicitamente se autodescrever. Com os dados XML válidos e com os bem-formatados, o documento XML se torna autodescritivo porque as tags dão idéia de conteúdo e estão misturadas com os dados. Devido ao formato do documento ser aberto e flexível, ele pode ser usado em qualquer lugar onde a troca ou transferência de informação é necessária. Desta forma, podemos usar o XML para descrever informações sobre páginas HTML, ou descrever dados contidos em objetos ou regras de negócios, ou transações eletrônicas comerciais.

Adquirido por : Fabrício Moreira da Silva

Page 247: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 219

XML

O XML pode ser inserido dentro de documentos HTML, o que foi definido pelo W3C como "data-islands". Esse recurso permite que um documento HTML possa ter múltiplas formas de visualização quando se faz uso da informação de semântica contida no XML. O que define formalmente quais elementos e quais combinações possíveis é permitida dentro de um documento XML é o "schema", ou seja, esquema. Existem novos esquemas propostos ao W3C, dentre eles estão o DCD (Document Content Description), que provêm à mesma funcionalidade dos DTDs, e que, pelo fato de linguagens esquema serem extensíveis, os desenvolvedores podem aumentá-los com informações adicionais, tais como regras de apresentação, tornando essas novas linguagens esquema mais poderosas que os DTDs. Resumo As DTDs são formas de se descrever classes de documentos XML (como gramáticas para outras linguagens). Problemas com DTDs: !" se muito simples não tem poder expressivo de descrição. !" se for muito complexa terá uma sintaxe horrível. A solução para as DTDs: usar linguagens de esquemas (schema languages) tais como DSD,XML Schema, etc… Os documentos, para serem validados, têm que ser bem formatados e também estarem em conformidade com a DTD dada.

Page 248: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 220

XML

XML é case sensitive. XML é case sensitive <MinhaTag> é diferente de </ Minhatag>, pertence a dois elementos diferentes. Nulo ou Branco.

Colunas com branco ou nulo devem ser representadas, a XML não interpreta estes tipos de dados, se uma coluna não contém dados deve ser representada por; <dado></dado> ou <dado/>, onde a tag dado não disponibiliza um conteúdo.

Após conceituarmos a XML, aplicaremos este conceito ao PowerBuilder 9.0, utilizando as novas propriedades de importação e exportação de dados de uma DataWindow para XML.

As linhas de uma DataWindow podem ser exportadas e importadas utilizando eXtensible Markup Language (XML), neste capitulo vamos abordar a exportação e importação de dados utilizando XML. O exemplo abaixo, é um XML simplificado que contém a declaração do documento XML, seguida pela TAG que descreve o elemento denominado raiz, <d_dept_list>, a definição da linha <d_dept_list_row>, a definição da coluna <dept_id>, <dept_name> e <dept_head_id>, os dados e a tag de finalização de cada coluna </dept_id>, </dept_name> e </dept_head_id>. Finalizando o bloco </d_dept_list_row>. Teremos : <?xml version="1.0">

<d_dept_list><d_dept_list_row>

<dept_id>100</dept_id><dept_name>R &amp;D</dept_name><dept_head_id>501</dept_head_id>

</d_dept_list_row>...

</d_dept_list>

Adquirido por : Fabrício Moreira da Silva

Page 249: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 221

XML

Modelo XML DOM em árvore.

<?xml version=“1.0” encoding=“UTF-8”?> <!DOCTYPE menu SYSTEM menu.dtd> <menu>

<refeição nome=“Café da manhã”> <descrição>

Ovos mexidos </descrição> <descrição>

Queijo quente </descrição> <bebidas>

Suco de laranja </bebidas>

</refeição> <refeição nome=“lanche”>

<descrição> Frios fatiados

</descrição> </refeição>

</menu>

Page 250: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 222

XML

A partir da versão 9.0 do PowerBuilder, foram incorporadas novas características para XML, como exportação e importação de DataWindow / DataStores. A essas novas características se denominou “Serviços de XMLNativos” e “XML Parser interface”. Exportando DataWindow (DataWindow Export) DataWindow Export, é um componente novo da DataWindow, possibilita exportar linhas da DataWindow em uma estrutura de dados padrão XML. O modelo de exportação de uma DataWindow mapeia os elementos da DataWindow ao gerar o XML correspondente. Os seguintes objetos de uma DataWindow podem ser usados em modelos de exportação.

• Column • Computed Column • Text Control • Computed Field • Nested Report

Um template de exportação é uma parte da definição da DataWindow. Uma DataWindow pode conter vários template de exportação. São permitidos template em formato PBL e SRD de uma DataWindow. A propriedade DataWindow , “Export.XML.UseTemplate”, é usada para especificar um objeto (template) para uso em uma determinada operação de exportação.

Esta propriedade pode ser fixada em runtime e designtime.

Adquirido por : Fabrício Moreira da Silva

Page 251: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 223

XML

Exemplo de um template de exportação XML.

export.xml(usetemplate="t_lista01"metadatatype=2 savemetadata=1template=(comment="Lista de funcionários saída DTD"name="t_lista01"publicid="c:\dwxml\lista01.dtd"xml="<?xml version=~"1.0~"

encoding=~"UTF-8~"standalone=~"no~"?><!DOCTYPE Lista> <Orders><!-- ....... --></Orders>" )

)

Exemplo de exportação utilizando a interface gráfica.

Page 252: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 224

XML

Na painter DataWindow do PowerBuilder 9.0 foi incluído um novo template, onde se permite; definir, editar e exportar a DataWindow em um padrão XML.

Este template, visualizado em modo default do layout do painter DataWindow, se localiza na parte inferior à esquerda e se intitula “ Export / Import Template XML ”.

A visão deste novo template no painter DataWindow caracteriza-se por um controle TreeView representando a estrutura XML. Nesta estrutura fica explicito; as Entidades, os Marcadores e os Dados. Diferentes ícones e fontes diferem os tipos de dados e seus elementos. Apenas um modelo de exportação pode ser editado. Ícones usados no template de Export/Import. Ícone Descrição

Declaração de XML ou declaração de tipo de documento.

Raiz ou elemento descendente.

Elemento do Group header.

Referência da coluna da DataWindow.

Referência de controle Static text.

Referência Computed field.

Referência de expressão DataWindow.

Texto.

Comentário

Instrução de processamento

Seção CDATA

Nested report

Adquirido por : Fabrício Moreira da Silva

Page 253: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 225

XML

Explorando o template “Export / Import Template - XML” Clique com o botão direito do mouse em qualquer área de fundo do template para ter acesso ao menu popup de edição do template.

Item DescriçãoNew Cria um modelo novo de XML com a raiz e

elementos de linha de detalhe vazio. New Default Cria um modelo novo de XML com a raiz e

elementos de linhas de detalhes para cada elemento mapeado, colunas e campos computados.

Open Abre um modelo de XML previamente salvo

Save Salva o modelo de XML atual atribuindo-lhe um nome. Se o modelo atual é um template novo, uma caixa de dialogo será exibida, solicitando um nome e comentários "opcional".

Save As Salva o modelo de XML atual como uma cópia debaixo de um novo nome, será aberta uma caixa de dialogo solicitando um nome e comentários "opcional".

Delete Apaga o modelo de XML atual. Uma caixa de dialogo solicitando confirmação será exibida antes desta ação, permitindo o usuário cancelar ou não.

A seleção no menu popup do item “Delete” apaga o template atual, para apagar itens do template, simplesmente o marque e pressione a tecla “Del”.

Page 254: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 226

XML

Pressionando o botão direito do mouse em cima de qualquer elemento do template, disponibilizará o menu popup correspondente, por exemplo : Clicando-se na “Declaração de XML ou declaração de tipo de documento”, teremos :

Item DescriçãoEdit Exibe uma caixa de diálogo para edição da

versão da XML, disponibiliza codificar se haverá remarcações externas no documento standalone = Yes, caso contrário standalone = No (default)

Delete Apaga a declaração de XML Pressionando o botão direito do mouse em cima da “Referência da coluna da DataWindow” disponibilizará o menu popup com as opções :

Item DescriçãoEdit Exiba caixa de diálogo de edição do nome do

DOCTYPE e seu identificador. Insert Before abre o menu popup tipo cascata listando todos

os modos disponíveis para construção do contexto da XML.

Delete Apaga a declaração contexto do Documento O menu popup para uma “Raiz ou elemento descendente”, exibe :

Item DescriçãoEdit Permite adicionar um rótulo à raiz ou elemento

descendente. Se a raiz ou elemento descendente tem um ou mais atributos, selecione Edit para habilitar a caixa de diálogo para editar o nome da raiz ou elemento descendente ou acrescentar um atributo.

Edit/Add Attribute

Abre a caixa de diálogo para editar o nome da raiz ou elemento descendente permitindo a definição de um atributo.

Add Child abre o menu popup tipo cascata listando todos os modos disponíveis que podem ser adicionados a uma raiz ou elemento descendente de um XML.

Adquirido por : Fabrício Moreira da Silva

Page 255: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 227

XML

Insert Before abre o menu popup tipo cascata listando todos os modos disponíveis que podem ser adicionados antes da definição de uma raiz ou elemento descendente.

Schema Option

Abre uma caixa de diálogo para editar o nome da raiz do documento gerado no esquema da XML

Template Export - Detalhes

Descrição : Seção de detalhe : Esta seção é separada graficamente por uma barra cinza separando a seção de cabeçalho da seção de detalhe. Esta marcação poderá ser alterada pelo desenvolvedor através da opção “Starts Detail” no menu popup dos elementos da árvore de dados. Só um elemento pode ser marcado como elemento de “Inicio de detalhe” (Starts Detail).

Page 256: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 228

XML

Exportando uma DataWindow. Pode-se exportar uma DataWindow utilizando a mesma função utilizada para exportar para HTML ou PSR, a função “SaveAs” ;

dw_1.SaveAs( "c:\minha_aplicação\d_lista01.xml", XML!, TRUE )

Assim como notação de pontos;

dw_sua_datawindow.object.datawindow.data.xml Ou a função Describe;

dw_sua_datawindow.Describe( "datawindow.data.xml" ) O PowerBuilder 9.0 disponibiliza em suas novas propriedades para exportação XML funções que permitem ajustes de seleção de modos, tanto em “Design Time” quanto em “RunTime”, São elas: Sintaxe : Export.XML.UseTemplate – Utilizada para informar o modelo que será usado para exportação. Esse modelo deverá estar criado. Onde: valor = Uma string que especifica o nome do template xml de exportação previamente criado no painter do objeto DataWindow. PowerScript; dw_sua_datawindow.Object.DataWindow.Export.XML.UseTemplate = "valor" Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.UseTemplate {= ’ valor ’}" )

Adquirido por : Fabrício Moreira da Silva

Page 257: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 229

XML

Sintaxe: Export.XML.MetaDataType - É usado para especificar que “metadato” será associado ao XML gerado na exportação da DataWindow. Essa propriedade pode ser utilizada em “DesignTime” ou em “RunTime”.

Onde: valor = Uma string que especifica um valor para Export.XML.MetaDataType, dado descrito ou codificado.(veja a tabela abaixo para os valores possíveis para a utilização da sintaxe de exportação). dw_sua_datawindow.Object.DataWindow.Export.XML.MetaDataType = "valor" Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.MetaDataType {= ’ valor’}" ) Sintaxe : Export.XML.SaveMetaData - É usado para especificar o “metadado” que será gerado em tempo de execução (RunTime) ou em tempo de desenho (Design Time). Onde valor = Uma string que especifica um valor para Export.XML.SaveMetaData, dado descrito ou codificado. PowerScript; dw_sua_datawindow.Object.DataWindow.Export.XML.SaveMetaData = " valor " Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.SaveMetaData {= ’ valor}" )

Page 258: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 230

XML

Sintaxe : Export.XML.HeadGroups - É usado para especificar como serão geradas as linhas de cabeçalho do XML, em tempo de desenho (DisignTime), selecione na tabela de propriedades (Data Export) o item “Interate Header for Group”, aplicando-se expressões condicionais. Em tempo de execução (RunTime) usa-se a sintaxe : Onde: valor = Pode assumir, “Yes”, “No”, “TRUE”, “FALSE”, “O” ou “1” dw_sua_datawindow.Object.DataWindow.Export.XML.HeadGroups = "valor"

Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.HeadGroups {= ’valor’}" ) Sintaxe : Export.XML.IncludeWhiteSpace - É usada para especificar se espaço em branco deve ser preservado no XML gerado. Essa propriedade pode ser selecionada em Tempo de desenho (DesignTime) selecionando na tabela de propriedades (Data Export) o item “Include WhiteSpace” aplicando-se expressões condicionais. Ou em Tempo de execução (RunTime) usa-se a sintaxe : Onde: valor = Pode assumir, “Yes”, “No”, “TRUE”, “FALSE”, “O” ou “1” PowerScript; dw_sua_datawindow.Object.DataWindow.Export.XML.IncludeWhiteSpace = "valor"

Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.IncludeWhiteSpace {= ’valor’}" )

Adquirido por : Fabrício Moreira da Silva

Page 259: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 231

XML

Os valores possíveis para a utilização da sintaxe de exportação são :

Valor descrito Valor numérico

Descrição

XMLNone! 0 O esquema do XML ou DTD, não serão gerados na exportação do documento XML .

XMLSchema! 1 O esquema do XML será gerado junto com a produção documento de XML.

XMLDTD! 2 DTD será gerado junto com a produção documento de XML.

MetaDataInternal! 0 O metadato será gerado na seção de DOCTYPE no momento da geração do XML.

MetaDataExternal! 1 O metadado será salvo como um arquivo externo com o mesmo nome do documento de XML, com a extensão ". dtd" (para XMLDTD! ). A produção do documento XML incluirá um DOCTYPE se referenciando para o arquivo de metadata.

Page 260: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 232

XML

Visão da propriedade de exportação do template DataWindow XML. Modificando e testando cada propriedade. Veja a seguir os resultados obtidos.

Adquirido por : Fabrício Moreira da Silva

Page 261: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 233

XML

Exemplo 1. Template : t_lista01Meta Data Type : XMLNone!Save Meta Data Type : MetaDataInternal!Include White Space : Marcado Head Group : Não marcado

Resultado exemplo 1:

Page 262: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 234

XML

Exemplo 2: Template : t_lista01Meta Data Type : XMLDTD!Save Meta Data Type : MetaDataInternal!Include White Space : Marcado Head Group : Não marcado Resultado exemplo 2:

Adquirido por : Fabrício Moreira da Silva

Page 263: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 235

XML

Exemplo 3: Template : t_lista01Meta Data Type : XMLSchema!Save Meta Data Type : MetaDataExternal!Include White Space : Marcado Head Group : Não marcado Resultado exemplo 3: Conteúdo do arquivo exportado exemplo3.xml

Page 264: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 236

XML

Conteúdo do arquivo exportado exemplo3.xsd

Adquirido por : Fabrício Moreira da Silva

Page 265: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 237

XML

Exemplo 4: Template : t_lista01Meta Data Type : XMLSchema!Save Meta Data Type : MetaDataExternal!Include White Space : Marcado Head Group : Não marcado Resultado exemplo 4:

Page 266: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 238

XML

Conteúdo do arquivo exportado exemplo4.xsd

Adquirido por : Fabrício Moreira da Silva

Page 267: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 239

XML

Importando um padrão XML para a DataWindow. Você pode importar o conteúdo de um documento XML para uma DataWindow ou DataStore usando técnicas semelhantes usadas para

importar outros formatos de dados estruturados. !" Para isto o template XML deverá existir. !" modelo do template deve ser bem formatado.!" Composite, Gráfico, objetos OLE DataWindow Composite,

Gráfico e OLE não podem ser importados usando um template.!" Você tem que usar o formato default.

As declarações abaixo são equivalentes. Ambas importarão os conteúdos do arquivo padrão XML de nome exemplo1.xml.

dw_1.ImportFile(exemplo1.xml)

dw_1.ImportFile(XML!, exemplo1) Visão da propriedade de importação do template DataWindow XML.

Page 268: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 240

XML

Quando você importa dados de um arquivo XML com ou sem um modelo, você pode criar um arquivo de “log” para verificar se o processo de importação executou a contento. O conteúdo deste arquivo mostra o que foi importado; como o modelo, os elementos e as linhas. Para criar esta “log”, basta selecionar a opção do template de importação “Trace XML Import” e em “Trace File Name” definir o caminho e o nome do arquivo que receberá as informações. Tipo: C:\LOGS\TRACE01.LOG. Modelo de um arquivo “Tracer log”.

Adquirido por : Fabrício Moreira da Silva

Page 269: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 241

XML

Nesse capítulo, mudou-se a forma de apresentação, devido a aparente complexidade desta nova funcionalidade, a de Exportação e Importação de dados em padrão XML do PowerBuilder 9.0, mas como foi visto, o PowerBuilder 9.0, minimiza em muito desenvolvimento desta tarefa. Aplicações clientes bem como aplicações com componentes de servidor ganharam características mais robustas que permitem uma melhor inteligibilidade com outras aplicações e componentes. Para uma melhor fixação dos conceitos até agora vistos, realizaremos um pequeno modelo demonstrando os conceitos vistos. Em nossa aplicação exemplo denominada exemplo1. Edite a DataWindow d_lista01. Então teremos:

Page 270: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 242

XML

No template “Export / Import Template - XML” clique na área em branco com o botão direito do mouse e selecione no menu popup que surgirá, a opção Save.

Na caixa de dialogo que se abrirá. Digite um nome para este template XML. Digite t_lista01 clique em “Ok”. O template XML denominado “t_lista01” foi criado. Agora edite o objeto menu denominado “m_menu02”. Clique com o botão direito do mouse no item “m_menu02” do template de edição do menu e selecione no menu popup que se abrirá “Insert Submenu Item”. No novo item que se disponibilizará. Digite “XML” e tecle “Enter”. Selecione com um duplo clique o item “XML” disponibilizando assim o template de eventos para este item do “m_menu02”. Selecione o evento “Clicked”.

Adquirido por : Fabrício Moreira da Silva

Page 271: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 243

XML

Digite no evento “Clicked”: OpenSheet(w_004,w_000, 2, Layered! )

Clique em New e selecione “PB Object” e “Window”. No painter de edição da Window no template "Propriedades" à direita. Selecione “Other”. Na propriedade “Width” escreva “3666” e em “Height” escreva “2284”. Clique em “Select Control” e selecione o objeto DataWindow. Clique na janela que acabou de criar e inclua o objeto DataWindow. No template propriedade do objeto DataWindow que acabou de incluir defina: Name : dw_1 DataObject : d_lista01 Title : Janela 04 – XML

Page 272: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 244

XML

Selecione a aba “Other” e defina:

Salve a nova janela como w_004. Volte ao painter de edição do menu e salve o menu “m_menu02”.

Até este ponto; criamos um novo item para o menu(m_menu02) e uma nova janela com um novo objeto DataWindow associado ao controle

DataWindow d_lista01. Agora vamos montar a Exportação e a Importação dos dados da DataWindow para o padrão XML. Clique em “Select Control” e selecione o objeto CommandButton. Clique na janela que acabou de criar e inclua o objeto CommandButton. Com o mouse em cima do botão clique com o botão direito do mouse e no menu popup que aparecerá selecione “Duplicate”. Repita esta operação 3 vezes. Assim teremos 4 Objetos CommandButton na janela w_004.

Adquirido por : Fabrício Moreira da Silva

Page 273: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 245

XML

Com um duplo clique no primeiro botão selecione o evento “Clicked”. Digite : dw_1.Object.DataWindow.Export.XML.HeadGroups = "No" dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes"

dw_1.SaveAs( "c:\exemplo1.xml", XML!, TRUE )

Com um duplo clique no segundo botão selecione o evento “ Clicked”. Digite : dw_1.Object.DataWindow.Export.XML.HeadGroups = "No" dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes"

dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'")

dw_1.Modify("DataWindow.Export.XML.MetaDataType = 2")

dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 2")

dw_1.SaveAs( "c:\exemplo2.xml", XML!, FALSE )

Page 274: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 246

XML

Com um duplo clique no terceiro botão selecione o evento “Clicked”. Digite : dw_1.Object.DataWindow.Export.XML.HeadGroups = "No" dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes"

dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'")

dw_1.Modify("DataWindow.Export.XML.MetaDataType = 1")

dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 1")

dw_1.SaveAs( "c:\exemplo3.xml", XML!, FALSE )

Com um duplo clique no quarto botão selecione o evento “Clicked”. Digite :

dw_1.Object.DataWindow.Export.XML.HeadGroups = "Yes" dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes"

dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'")

dw_1.Modify("DataWindow.Export.XML.MetaDataType = 1")

dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 1")

dw_1.Modify("Export.XML.SaveMetaData = MetaDataExternal!")

dw_1.SaveAs( "c:\exemplo4.xml", XML!, FALSE )

Adquirido por : Fabrício Moreira da Silva

Page 275: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 247

XML

Clique na janela w_004 e selecione o evento “OPEN”. Digite : // Desconecta o DBMS Disconnect;

// Aplica os parametros do DBMS de teste à transação SQLCA sqlca.dbms ="ODBC" sqlca.dbparm ="ConnectString='DSN=EASDemoDB

V9;UID=dba;PWD=sql'"

// Conecta com o banco connect;

//Testa a conexão

If sqlca.sqlcode < 0 Then MessageBox ("Erro: Impossivel conectar com o banco de dados", sqlca.sqlerrtext, Exclamation!)

HALT End If

dw_1.SetTransObject(SQLCA) dw_1.Retrieve()

Page 276: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 14 248

XML

Salve a janela w_004. Teremos:

Execute a aplicação. Clique nos botões para gerar os arquivos. Edite os arquivos gerados e analise.

Adquirido por : Fabrício Moreira da Silva

Page 277: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 15

Preparando sua aplicação final

Criando o objeto “Project”

Criando o arquivo executável

Page 278: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 15 249

Criando o objeto “Project” O PowerBuilder 9.0 disponibiliza um “Wizard” para criação do executável da sua aplicação. Você pode gerar dois tipos de executável: PseudoCódigo ou Código de máquina. (só na versão Enterprise) Código de máquina (machine code) : Esta opção poderá ser selecionada no template de geração do executável. Se em sua aplicação, você utilizou a expressão Try-Catch não utilize como opção o código de máquina. Essa seleção lhe retornará um erro de compilação.

Se a sua aplicação precisa de velocidade de processamento o código de máquina é uma boa opção embora o tempo de compilação seja muito maior. Se sua aplicação não necessita de uma grande velocidade de processamento o mais aconselhável é a compilação em Pcode, é mais rápida a compilação e consome menos memória em tempo de execução pôs os objetos não estarão todos na memória e sim só os objetos necessários para o processamento naquele momento.

Bibliotecas dinâmicas: Você pode criar também bibliotecas dinâmicas para sua aplicação. Podem ser usadas bibliotecas dinâmicas para armazenar os objetos da aplicação. Usando bibliotecas dinâmicas você pode quebrar a aplicação em unidades menores que são mais fácil de administrar e também reduzir o tamanho do arquivo executável.

Para aplicações de pequeno porte você não precisa utilizar bibliotecas dinâmicas.

Para se criar um objeto “Project” clique em “New” e selecione “Project”. Na caixa de dialogo que aparecerá selecione “Application Wizard” e clique em “Ok”. Na caixa de dialogo “About Application Wizard” clique em “Next”. Na caixa de dialogo “Specify Destination Library” selecione a biblioteca a qual o objeto “Project” será incluído. No nosso caso selecione “exemplo1.pbl”. Na caixa de dialogo “Specify Project Object” dê um nome ao seu objeto ou assuma o que o PowerBuilder gerar. Clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 279: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 15 250

Criando o objeto “Project” Na caixa de dialogo “Specify Executable and Resurce Files” especifique o caminho a qual será gravado o arquivo “.exe” e o seu nome, no caso do exemplo seria : C:\Manual PB\exemplo1.exe

Neste caso o arquivo de recursos “.pbr” não existe. Então deixe em branco e clique em “Next”. Na caixa de dialogo “Specify Build Option” serão disponibilizados quatro opções:

“Prompt for Overwrite” – Abre uma tela de dialogo perguntando se regrava o arquivo se este já existir. “New Visual Style Controls” – Ativa o estilo de exibição para o modelo Windows XP. Só terá funcionalidade se você utiliza o MS Windows XP.

Page 280: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 15 251

Criando o objeto “Project” “Full Build” – Verifica e pré-compila toda a aplicação “Incremental Build” – Verifica e pré-compila só as pbl´s que sofreram alteração.

Para o nosso exemplo marque as opções conforme a figura acima.

Clique em “Next”. Na caixa de dialogo “Generate Machine Code” você poderá escolher que tipo de compilação deseja realizar. Para o nossa exemplo selecione a primeira opção conforme a figura abaixo.

Clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 281: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 15 252

Criando o objeto “Project” Na caixa de dialogo “Specify Dynamic Options” selecione a opção disponibilizada se você deseja criar bibliotecas dinamicas ou deixe desmarcado se você só quiser gerar um arquivo do tipo “.exe”.

Para o nosso exemplo marque a opção. Clique em “Next”.

Page 282: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 15 253

Criando o objeto “Project”

Na caixa de dialogo “Specify Version Information” os campos disponibilizados já estarão previamente preenchidos, mas você poderá alterar estas informações para melhor compor o seu projeto.

Clique em “Next”. Na caixa de dialogo “Ready to Create Application” clique em “Finish”.

Adquirido por : Fabrício Moreira da Silva

Page 283: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 15 254

Criando o objeto “Project”

Então teremos:

O seu objeto “Project” já esta configurado e pronto para compilar a sua aplicação. Clique em Deploy para compilar. Note que ao final, foram gerados os arquivos exemplo1.exe e o arquivo exemplo1.pbd. Faça um teste gerando seu executável em código de máquina. Assinale “Machine Code” e clique em Deploy. Compare os arquivos.

Page 284: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 15 255

Criando o objeto “Project”

Os arquivos da primeira compilação têm um “.exe” reduzido e uma biblioteca “.pbd” maior. Já o arquivo gerado na segunda compilação (machine code) tem um tamanho maior para o “.exe” e para a “.dll” gerada. Além de a compilação demorar um pouco mais.

Adquirido por : Fabrício Moreira da Silva

Page 285: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 16

Criando uma aplicação WEB

Criando um sítio WEB com

PowerDynamo

Page 286: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 256

Criando um sítio WEB com PowerDynamo

Os capítulos a seguir descrevem as funcionalidades do PowerBuilder 9.0 voltado para a WEB. Para estas funcionalidades alguns softwares da Sybase deverão estar instalados. São :

!" PowerDynamo 3.6 ou maior

!" Internet Explorer 6.0 ou maior Embora você possa executar o PowerDynamo em baixo do EAServer esse e-book estará se referenciando ao PowerDynamo Personal Web

Server. Um sítio Web com PowerDynamo são arquivos ou repositórios de banco de dados onde você pode; criar, armazenar e administrar o acesso de documentos HTML e de dados. O PowerDynamo permite embutir instruções de server-side em uma página Web. Possibilitando o processamento destas instruções quando uma chamada cliente é efetuada na página. O PowerDynamo é um servidor de aplicação que gera conteúdo de Web dinâmico. Possibilita recuperar informações de seus bancos de dados retornando os resultados para o servidor Web. O PowerDynamo também disponibiliza um servidor da Web Pessoal (PowerDynamo Personal Web Server) para uso durante o desenvolvimento. Para se desenvolver em PowerDynamo deve-se como em todo servidor de aplicação definir suas configurações. O PowerBuilder 9.0 disponibiliza um Wizard bem simples para esse processo onde automaticamente se poderá mapear todos os objetos utilizados em sua aplicação WEB.

Adquirido por : Fabrício Moreira da Silva

Page 287: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 257

Criando um sítio WEB com PowerDynamo Utilizando passo a passo o Wizard do PowerBuilder 9.0 criaremos um sítio WEB com PowerDynamo. Clique em New e selecione “Target”. Selecione “PowerDynamo WebSite” e clique em “Next”. Na caixa de dialogo “Why PowerDynamo?” clique em “Next”. Na caixa de dialogo “Select Target Location and Folder” no item “Web Target” digite o nome da “Target” onde será organizada toda a sua aplicação WEB. Para o nosso exemplo digite conforme a figura abaixo. Não é necessário digitar todos os campos apenas na linha “Web Target” digite ex1.pbt os

demais campos serão automaticamente preenchidos. Clique em “Next”.

Page 288: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 258

Criando um sítio WEB com PowerDynamo Na caixa de dialogo “Create Url Prefix Mapping” no item “URL Prefix Mapping” confirme “/exemplo” e clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 289: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 259

Criando um sítio WEB com PowerDynamo Na caixa de dialogo, “Create or Select ODBC Data Source” escreva ou confirme “exemplo” e clique em “Next”.

Page 290: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 260

Criando um sítio WEB com PowerDynamo Na caixa de dialogo “Specify Database File” digite ou confirme o local onde será acondicionado o banco de dados.

Clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 291: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 261

Criando um sítio WEB com PowerDynamo Na caixa de dialogo “Specify Login Information” informe a identificação de usuário. Por default é dba e a senha de acesso que por default é sql.

Clique em “Next”.

Page 292: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 262

Criando um sítio WEB com PowerDynamo Na caixa de dialogo “Load Help Files And Samples” deixe desmarcado. Clique em “Next”. Na caixa de dialogo “Name New Deployment Configuration” dê o nome para esta nova configuração ou assuma o default.

Clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 293: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 263

Criando um sítio WEB com PowerDynamo Na caixa de dialogo “Specify HTTP Server Information” informe para “HTTP Server Name”, localhost e como “HTTP Port” o default, 80.

Clique em “Next”.

Page 294: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 264

Criando um sítio WEB com PowerDynamo Na caixa dialogo “Select Object Model” assuma “default Object Model” e clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 295: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 265

Criando um sítio WEB com PowerDynamo Na caixa de dialogo “Choose File Deployment Options” assuma o default e clique em “Next”.

Page 296: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 266

Criando um sítio WEB com PowerDynamo Na caixa de dialogo “Specify Local Copy Folder” assuma o default e clique em “Next”.

E em seguida em “Finish” para criar o PowerDynamo Web Site.

Adquirido por : Fabrício Moreira da Silva

Page 297: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 267

Criando um sítio WEB com PowerDynamo Na caixa de dialogo “Specify Local Copy Folder” assuma o default e clique em “Next”. Então teremos em “Ready to Create PowerDynamo Web Site” todas as especificações para criação. Clique em “Finish”.

Page 298: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 16 268

Criando um sítio WEB com PowerDynamo Em nossa aplicação:

Após a criação do ambiente agora podemos criar nossa primeira página no sítio “ex_1”.

Adquirido por : Fabrício Moreira da Silva

Page 299: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Capítulo 17

Criando a primeira página Web

Utilizando 4GL Web/JSP Page wizard

Page 300: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 269

Criando a primeira página Web. Utilizando o Wizard 4GL Web / JSP page você cria páginas no seu ambiente PowerDynamo muito facilmente. Nesse capítulo vamos criar uma página de abertura e adicionar no ambiente ex_1. No template TreeView clique com o mouse direito em cima de ex_1 e selecione “New”. Clique em “Web” e selecione “4GL Web / JSP Page” e clique em “Ok”.

Na tela acima clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 301: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 270

Utilizando o Wizard 4GL Web / JSP Page Na caixa de dialogo, “Specify New HTML File” digite o título para a abertura da página que será criada. Para o nosso exemplo digite “Bem-vindo”, em “File Name”. Automaticamente será assumido o nome do titulo como nome do arquivo “.htm”.

Clique em “Next”.

Page 302: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 271

Utilizando o Wizard 4GL Web / JSP Page Se a sua aplicação Web utilizará estilos de apresentação padronizados tipo arquivos “.css”, nessa caixa de dialogo você poderá identifica-los. Caso contrário deixe em branco a opção “Style Sheet” e clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 303: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 272

Utilizando o Wizard 4GL Web / JSP Page

Na caixa de dialogo “Specify Background Characteristics” você pode especificar uma imagem de fundo. Para o nosso exemplo deixe em branco e em “Background Color” escolha uma cor de fundo. Em nosso exemplo utilizaremos o defaul “White”.

Clique em “Next”.

Page 304: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 273

Utilizando o Wizard 4GL Web / JSP Page

Na caixa de dialogo “Specify Page Context” pode-se definir um cabeçalho e um rodapé para a página em construção. Nesse caso o cabeçalho será preenchido pelo título da página e o rodapé com a data atual. Ambos os dados poderão ser alterados posteriormente. Marque as duas caixas e clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 305: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 274

Utilizando o Wizard 4GL Web / JSP Page

Na caixa de dialogo “Specify Error e Tracing Options” marque os itens conforme a figura abaixo. Assim os erros que por ventura surgirem serão apresentados no rodapé da página. Para desenvolvimento é uma boa opção, mas não muito apresentável quando em produção. Portanto ao selecionar este modo lembre-se que essa opção pode ser alterada para se inibir a exibição das mensagens de erro. O “Trace” é uma boa opção se deixar ativado.

Clique em “Next”.

Page 306: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 275

Utilizando o Wizard 4GL Web / JSP Page

Na caixa de dialogo “Define Page Parameters” você pode definir variáveis e atribuir-lhes escopo se for necessário. Automaticamente estas variáveis serão adicionadas a variáveis globais para serem usadas do lado servidor de sua aplicação. No nosso exemplo defina em “Parameter Name”, “ID” e em “Default Value”, deixe em branco.

Clique em “Next”.

Adquirido por : Fabrício Moreira da Silva

Page 307: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 276

Utilizando o Wizard 4GL Web / JSP Page

Na caixa de dialogo “Choose EAServer Profile” marque a caixa “Skip EAServer Components” e clique em “Next”. Caso existisse algum componente do EAServer definido e este fizesse parte da sua aplicação. poderia ser selecionado aqui, mas no caso do exemplo que estamos desenvolvendo ainda não criamos nenhum componente.

Page 308: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 277

Utilizando o Wizard 4GL Web / JSP Page

Então teremos a caixa de dialogo final do 4GL Web / JSP Page. Clique em “Finish” para gerar a primeira página da aplicação ex_1.

Adquirido por : Fabrício Moreira da Silva

Page 309: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 278

Utilizando o Wizard 4GL Web / JSP Page

Visão da página gerada.

Nesse ponto já estamos com a primeira página html criada através do 4GL Web / JSP Page para o ambiente PowerDynamo “ex_1”. O PowerBuilder 9.0 ainda disponibiliza o painter de edição e visualização html possibilitando a manutenção e melhoramento da página html gerada.

Page 310: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 279

Conhecendo o painter de edição html No painter de edição html do PowerBuilder 9.0 esta disponibilizada uma nova barra de ferramentas.

Alguns objetos do PowerBuilder estão disponíveis para inclusão em seu projeto Web. Não entraremos nestes detalhes considerados

avançados. Alguns desses controles precisam de configurações mais detalhadas para o EAServer. O que não é o propósito deste livro.

Descrevendo a barra de ferramenta PainterBar3.

Inserir linha Horizontal Inserir botão

Inserir fim de linha(Line Break) Inserir botão com imagem

Inserir tabela Inserir texto estático

Inserir figura Inserir DataWindow

Inserir HiperLink Inserir objeto

Inserir Ancora Inserir Applet

Inserir Caixa de marcação Inserir plug-in

Inserir botão de rádio

Inserir campo de linha simples

Inserir área de texto

Inserir ListBox

Após estar familiarizado com a barra de ferramenta procederemos à familiarização do painter de edição. Para isto modificaremos a página Bem-vindo.htm.

Adquirido por : Fabrício Moreira da Silva

Page 311: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 280

Alterando a página Bem-vindo.htm Com a página editada coloque o cursor no final do texto “Bem-vindo” e tecle “Enter”. Marque o texto “Bem-vindo” e clique com o botão esquerdo do mouse no menu popup que aparecerá. Selecione “Header Properties”. Na caixa de dialogo que surgirá selecione a tabela “Inline Style” e clique na caixa de rádio “Inline” e no botão “Edit”. Esta opção disponibiliza as opções de edição de texto como fontes, fundo, margens e etc.

Page 312: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 281

Alterando a página “Bem-vindo.htm” Selecione a fonte “Arial Black” clique no botão com a seta para direita para transferir a fonte. No grupo “Font Size” clique no botão de rádio marcado como “Specific” para o tipo digite “20” e selecione “pt”. Selecione “Nave” para “Color”. Varrendo a dropdownlistbox de cores. Clique na “aba” “Backgrond” e marque o botão de rádio “Relative” e selecione “center” para horizontal e vertical. Selecione “White” para “BackGround” Color. Clique em “Ok”. E teremos :

Clique em “Ok” para aceitar a seleção dos dados e permitir ao PowerBuilder 9.0 alterar a página Bem-vindo.htm.

Adquirido por : Fabrício Moreira da Silva

Page 313: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 282

Alterando a página “Bem-vindo.htm” A figura abaixo representa a alteração realizada na página Bem-vindo.htm.

Clique em “Save” para guardar as alterações.

Page 314: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 283

Incluindo uma imagem na página “Bem-vindo.htm” Clique como o botão do mouse direito no item “ex_1”. No menu popup que surgirá selecione “New Folder” e digite “Imagens” para o nome da nova pasta e tecle “Enter”. Clique com o botão do mouse direito sobre a nova pasta e selecione no menu popup “Import File”. Selecione em “Tipo de arquivo”, “All Files”. Navegue na pasta onde o PowerBuilder 9.0 esta instalado e no diretório “PowerBuilder 9\Tutorial” selecione a imagem “tshirtw.jpg”. A imagens será copiada para a pasta “Imagens”. Clique na página Bem-vindo.htm. Coloque o cursor no final da linha “Bem-vindo”. Tecle “Enter” para incluir uma nova linha.

Coloque o cursor nesta nova linha e clique no menu (PowerBar3) em Incluir figura. Clique no botão (...) para procurar a figura a ser inserida. Abra a pasta Imagens e selecione a imagem “tshirtw.jpg”.

Adquirido por : Fabrício Moreira da Silva

Page 315: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 284

Incluindo uma imagem na página “Bem-vindo.htm”

Teremos :

Clique em “OK”. E Em “OK” outra vez.

Page 316: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 285

Incluindo uma imagem na página “Bem-vindo.htm” Teremos :

Melhorando : Clique na imagem como botão direito do mouse e selecione “Position” e “Use Absolute Positioning”. Mova a imagem conforme sua preferência. Clique em “Save” para guardar as alterações.

Adquirido por : Fabrício Moreira da Silva

Page 317: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 286

Criando uma página Inicial Para o projeto ficar um pouco mais profissional e treinarmos um pouco mais, criaremos uma página inicial utilizando o mesmo processo da criação da página Bem-vindo.htm. No template TreeView clique com o botão do mouse direito em cima de ex_1 e selecione “New”. Clique em “Web” e selecione “4GL Web / JSP Page”. Clique em “Ok”. Clique em “Next”.

Na caixa de dialogo “Specify New HTML File” digite o título para a abertura da página que será criada. Para o nosso segundo exemplo “Abertura”, em “File Name” automaticamente será assumido o nome do titulo como nome do arquivo “.htm”. Clique em “Next”. Deixe em branco a opção “Style Sheet” e clique em “Next”. Na caixa de dialogo “Specify Background Characteristics” você pode especificar uma imagem de fundo. Para o nosso segundo exemplo deixe em branco e em “Background Color” escolha uma cor de fundo. Em nosso segundo exemplo utilizaremos o default “White”. Clique em “Next”.

Na caixa de dialogo “Specify Page Context” pode-se definir um cabeçalho e um rodapé para a página em construção. Nesse caso o cabeçalho será preenchido pelo título da página e o rodapé com a data atual. Ambos os dados poderão ser alterados posteriormente. Marque as duas caixas e clique em “Next”.

Na caixa de dialogo “Specify Error e Tracing Options” deixe em branco. Clique em “Next”.

Page 318: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 287

Criando uma página Inicial Na caixa de dialogo “Define Page Parameters” você pode definir variáveis e atribuir-lhes escopo se for necessário. Automaticamente estas variáveis serão adicionadas a variáveis globais para serem usadas do lado servidor de sua aplicação. No nosso segundo exemplo deixe em branco. Clique em “Next”. Na caixa de dialogo “Choose EAServer Profile” marque a caixa “Skip EAServer Components” e clique em “Next”. Então teremos a caixa de dialogo final do 4GL Web / JSP Page clique em “Finish” para gerar a segunda página da aplicação ex_1.

Adquirido por : Fabrício Moreira da Silva

Page 319: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 288

Criando uma página Inicial Então teremos:

Marque o texto “Put your data here” e troque o texto por : “Clique para entrar”. Clique em “Save” para guardar as alterações. Então teremos:

Page 320: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 289

Criando uma página Inicial

Agora marque o texto “Clique para entrar” no menu principal e selecione “Format” e “Hyperlink”. E preencha os campos conforme a figura abaixo.

Clique em “OK”. Teremos: Clique em “Save” para guardar as alterações.

Adquirido por : Fabrício Moreira da Silva

Page 321: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 290

Depurando e executando sua aplicação Web. Coloque o mouse sobre a aplicação Web “ex_1” clique no botão direito do mouse e selecione “Deploy”. Acompanhe no template “Output” a depuração da aplicação Web “ex_1”. Ao final, se tudo estiver correto a mensagem “Finished Deploy of Targetex_1” será exibida.

Para executar a sua aplicação você precisa estar com o “PowerDynamo Personal Web Server” ativo. Clique em “Iniciar” e procure no seu diretório do PowerBuilder 9.0 a chamada para o atalho “PowerDynamo 3.6” e selecione “Personal Web Server”. Quando o “Personal Web Server” estiver ativo o ícone será visualizado na Taskbar do MS Windows!. Então selecione no menu principal “Run” e “Select and Run”. Selecione ex_1. E clique em “OK”.

Page 322: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 291

Depurando e executando sua aplicação Web.

Então teremos:

Adquirido por : Fabrício Moreira da Silva

Page 323: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Capítulo 17 292

Finalizando Seu projeto agora já possui uma ligação Web. O PowerBuilder 9.0 pode disponibilizar dados via DataWindow direto pelo browser, possibilitando uma interação ambiente cliente/servidor e Web, mas para que isto seja possível é necessária à utilização EAServer. Este livro, conforme nos referenciamos no inicio é uma literatura básica, cujo objetivo é possibilitar aos iniciantes ter uma referência, um ponto de partida. Para cada vez mais desbravar as possibilidades oferecidas por esta ferramenta de desenvolvimento. O Sybase PowerBuilder 9.0. Em breve e com o pensamento positivo de todos, estarei escrevendo um modulo sobre as técnicas avançadas do Sybase PowerBuilder 9.0. Até Breve. Paz e prosperidade a todos.

Page 324: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Nomenclaturas

Guia de Referência

Nomenclaturas

Adquirido por : Fabrício Moreira da Silva

Page 325: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Nomenclaturas

293

Nomenclatura dos Tipos de Objetos Nome do Objeto Convenção Exemplo Objeto de DataWindow d_ d_cliente Função (global) f_ f_exibir _ erro Menu m_ m_cliente Estrutura s_ s_empregado Consulta q _ q _

clientes_para_agentes Objeto do usuário u_ u _ pedido Janela w _ w_ ancestral Nomenclatura dos Controles da Janelas Nome do Controle Convenção Exemplo ChekBox cbx_ cbx_rascunho CommandButton cb_ cb_ok DataWindowControle dw_ dw_dados DropDowListBox ddlb_ ddlb_agentes EditMask em_ em_telefone WindowsFunction wf_ wf_errosql Graph gr_ gr_chegadas_por_agentes GrupBox gb_ gb_opção_de_saida HscrollBar hsb_ hsb_vermelho Line ln_ ln_linhacurta ListBox lb_ lb_agentes MultiLineEdit mle_ mle_comentários Oval oval_ oval_equipe Picture p_ p_empregado PictureButton pb_ pb_atualizar RadioButton rb_ rb_construção Rectangle r_ r_ret RoundRectangle rr_ rr_tela SingleLineEdit sle_ sle_nome_do_cliente StatleText st_ st_prompt_do_cliente UserObject uo_ uo_pedido VscrollBar vsb_ vsb_percentual_feito

Page 326: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Nomenclaturas

294

Nomenclatura por Espaço Escopo da Variável Convenção Local lx_ ou nada (o prefixo é opcional nas variáveis

locais) Global gx_ Instância ix_ Compartilhada sx_ Argumento ax_ Nomenclatura por Tipo de Dados Tipo de Dados Convenção Janela (Window) w Item de Menu (MenuItem) m Controle de DataWindow dw Estrutura(structure) str Objeto do usuário (User Object) uo Inteiro (Integer) i Inteiro sem Sinal (Unsigned Integer) ui Longo (Long) l Longo sem Sinal (Unsigned Long) ul Booleano (Boolean) b String (String) s Duplo (Double) db Real (Real) r Decimal (Decimal) dc Data (Date) d Hora (Time) t DataHora (DateTime) dt ou st (TtimeStamp)

Adquirido por : Fabrício Moreira da Silva

Page 327: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Nomenclaturas

295

Exemplos de Nomenclaturas de Variáveis Nome da Variável Descrição do Tipo de Dados sstr_pontos_de_dados [] Array de Shared Structure (estrutura

compartilhada) iul_id_do_cliente Instância de um Unsigned Long

(inteiro longo sem sinal) ss_nome Shared String (string compartilhada) ii_contagem Instância de um inteiro contagem_de_loops Variável Local (prefixo não

obrigatório) li_contagem_de_loops Inteiro Local (prefixo opcional

acrescentado) lw_inst_de_janela Instância Local de uma variável de

janela as_erro String de argumento (passado|) Nomenclatura das Funções de Objetos. Tipo de Objeto da Função Convenção Exemplo Função Global f_ f_erro_sql Função de Menu mf_ mf_sair Função de Objeto do Usuário

uf_ uf_pedido

Função de Janela wf_ wf_atualizar

Page 328: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

Guia de Referência

Atributos e Eventos

Adquirido por : Fabrício Moreira da Silva

Page 329: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

296

Atributos de Aplicações Atributos Valores Descrição AppName String Uma string contendo o nome da aplicação DDETimeOut Integer Um inteiro especificando, em segundo, o

intervalo de tempo reservado para uma conversação DDE

DwMessageTitle String Uma string contendo o título das caixas de mensagens de datawindow exibidas durante a execução

MicroHelpDefault String Uma string contendo o texto básico para o MicroHelp

ToolbarText Boolean Um valor TRUE ou FALSE indicando se o texto da barra de ferramentas deve ou não ser exibido: Este atributo só tem efeito em uma janela de quadro MDI

ToolbarFrameTitle String Uma string indicando o título da barra de ferramentas do quadro, quando ela é uma barra de ferramentas flutuante. Este atributo só tem efeito em uma janela de quadro MDI

ToolbarSheefTitle String Uma string indicando o título da barra de ferramentas da folha, quando ela é uma barra de ferramentas flutuante. Este atributo só tem efeito em uma janela de quadro MDI

Eventos de Aplicações Evento Descrição Close Executado no fechamento da execução Idle Executado quando ocorre o número

especificado de segundos sem qualquer atividade durante a execução da aplicação

Open Executado na abertura da aplicação SystemError Executado durante um erro do sistema em

qualquer local da aplicação

Page 330: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

297

Atributos de Janelas Atributos Valores Descrição BackColor Long Um indicador da cor de fundo Border Boolean Um valor TRUE ou FALSE

indicando se a janela possui ou não uma borda

BringToTop Boolean Um valor TRUE ou FALSE indicando a suposição de que a janela deve estar no primeiro plano

ColumnsPerPage Integer Um inteiro indicando o número de unidades a rolar quando há um clique sobre a barra de rolagem

Controle [] Array de objetos

Um array relacionando os controles. Você não pode alterar os valores desta variável

ControlMenu Boslean Um valor TRUE ou FALSE indicando a presença da caixa de controle e do menu da caixa de controle

Enabled Boolean O valor TRUE permite à janela transmitir e receber mensagens

Height Integer Indica à altura da janela HscrollBar Boolean Um valor TRUE ou FALSE

indicando a presença de uma barra de rolagem horizontal

Icon String O ícone associado com uma janela quando a janela se encontra minimizada

LinesPer|Page Integer Um inteiro indicando o número de unidades a rolar quando há um clique sobre a barra de rolagem para baixo

Adquirido por : Fabrício Moreira da Silva

Page 331: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

298

Atributos de Janelas Atributos Valores Descrição MaxBox Boolean Um valor TRUE ou FALSE indicando a

presença de uma caixa de maximizar na barra de titulo da janela

MenuID String O item do menu associado a janela MenuName String O nome do menu associado com a

identificação de menu MinBox Boolean Um valor TRUE ou FALSE indicando a

presença de uma caixa de minimizar na barra de titulo da janela

Pointer String Uma string contendo o nome do arquivo que guarda o ponteiro para o objeto ou controle

Resizable Boolean Um valor TRUE ou FALSE indicando se a janela é ou não redimensionável

Tag String Uma string contendo o valor da tag da janela

Title String Uma string contendo o título da janela TitleBar Boolean Um valor TRUE ou FALSE indicando a

presença de uma barra de titulo na sua janela. A modificação deste atributo em um script pode provocar um erro durante a execução

ToolbarAlignment Enumerated Controla-se uma barra de ferramentas, está na parte superior, inferior, esquerda ou direita, da janela, ou se é uma barra de ferramentas flutuante. Este atributo só terá efeito em quadros MDI e folhas

ToolbarHeight Integer Estabelece a altura da barra de ferramentas. Este atributo só tem efeito em quadros MDI e folhas

ToolbarVisible Boolean Torna a barra de ferramentas visível ou invisível (TRUE ou FALSE). Este atributo só tem efeito em quadros MDI e folhas

Page 332: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

299

Atributos de Janelas Atributos Valores Descrição ToolbarWidth Integer Especifica a largura de uma barra de

ferramentas flutuante. Este atributo só tem efeito em quadros MDI e folhas

ToolbarX Integer A coordenada X de uma barra de ferramentas flutuante. Este atributo só tem efeito em quadros MDI folhas

ToolbarY Integer A coordenada Y de uma barra de ferramentas flutuante. Este atributo só tem efeito em quadros MDI e folhas

UnitsPercolumn Integer Indica o número de unidades de rolagem do PowerBuilder quando o usuário efetua a rolagem através de um clique á esquerda ou á direita da caixa de rolagem

UnitsPerLine Integer Indica o número de unidades de rolagem do PowerBuilder quando o usuário efetua a rolagem através de um clique acima ou abaixo da caixa de rolagem

Visible Boolean Torna a janela visível ou invisível VscrollBar Boolean Um valor TRUE ou FALSE indicando a

presença de uma barra de rolagem Width Integer Indica a largura da janela

Adquirido por : Fabrício Moreira da Silva

Page 333: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

300

Atributos de Janelas Atributos Valores Descrição WindowState Enumerated Indica o estado (maximizada, minimizada ou

normal) em que a janela esta sendo exibida no momento.

WindowType Enumerated Indica o tipo de janela (principal, instantânea, MDI< Frame, etc).

X Integer Indica a coordenada X do canto superior esquerdo da janela

Y Integer Indica a coordenada Y do canto esquerdo da janela

Eventos de Janelas Eventos Descrição Activate A janela recebeu o foco Clicked O usuário deu clique na janela Close A janela esta sendo fechada CloseQuery A janela esta sendo fechada através da caixa de

controle Deactivate A janela esta perdendo o foco DoubleClicked O usuário de um clique duplo na janela DragDrop Um objeto arrastado foi solto na janela DragEnter Um objeto arrastado entrou na janela DragLeave Um objeto arrastado deixou a janela DragWithin Um objeto esta sendo arrastado no interior da janela Hide A janela se torna oculta HotLinkAlarm Uma aplicação servidora transmitiu novos dados (ou

dados alterados) através de DDE Key Uma tecla foi pressionada (exceto alt) Mouse Down Um botão do mouse foi pressionado em uma área

vazia da janela MouseMove O mouse esta sendo movimentado

Page 334: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

301

Eventos de Janelas Eventos Descrição MouseUp O botão do mouse foi liberado em uma área vazia da

janela. Open A janela se abre. Other Ocorreu um evento do Windows que não foi definido

pelo PowerBuilder. RbuttonDown O usuário está mantendo pressionado o botão direito

do mouse na janela RemoteExec Uma aplicação, cliente transmitiu uma solicitação

através da DDE RemoteHotLinkStar Uma aplicação, cliente quer iniciar um vinculo ativo

através da DDE. RemoteHotLinkStop Uma aplicação, cliente quer encerrar um vinculo ativo

através da DDE. RemoteSend Uma aplicação, cliente transmitiu dados através da

DDE. Resize O usuário esta redimensionando a janela. Show A janela estava oculta e agora esta sendo exibida. SystemKey A tecla Alt ou Alt+outra foi pressionada. Timer O evento foi disparado pela função Timer em algum

intervalo de tempo determinado.

Atributos de Itens de Menus Atributos Valores Descrição Checked Boolean Um valor TRUE ou FALSE

indicando se item de menu esta assinalado.

Enabled Boolean Um valor de TRUE ou FALSE indicando se o item de menu é capaz de transmitir é receber mensagens.

Item[] Array de menus Uma lista de itens de menu MicroHelp String A Microhelp associada a esse

menu. ParentWindow Window A janela que contém o menu.

Adquirido por : Fabrício Moreira da Silva

Page 335: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

302

Atributos de Itens de Menus Atributos Valores Descrição Tag String Uma string contendo o valor da tag do

item de menu. Text String O texto associado a esse item de menu ToolbarItemDown Boolean Um valor TRUE ou FALSE indicando se o

item da barra de ferramentas esta embaixo como padrão.

ToolbarItemDownName String O nome da figura exibida quando há um clique sobre um item de uma barra de ferramentas.

ToolbarItemName String O nome da figura exibida no item correspondente da barra de ferramentas.

ToolbarItemOrder Integer Um inteiro especificando a ordem dos itens na barra de ferramentas.

ToolbaritemVisible Boolean Um valor TRUE ou FALSE indicando se o item da barra de ferramentas esta ou não visível.

Visible Boolean Um Valor TRUE ou FALSE indicando se o item do menu esta ou não visível.

Page 336: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

303

Atributos de Controles de Janelas Atributos Valores Descrição Accelerator Integer Um inteiro contendo o valor ASC II que

indica a tecla que você quer atribuir como aceleradora para um controle

Alignment Enumerated Um tipo de dados enumerados, especificando o alinhamento do texto em um controle MultiLineEdit, StaticText ou PictureButton. Os valores válidos são; Center!, Left! ou Right!.

AutoHScroll Boolean Um valor TRUE ou FALSE indicando se você quer que a rolagem de um campo no sentido horizontal seja automática.

AutoSkip Boolean Um atributo da máscara Edit indicando se você quer ou não saltar automaticamente esse campo e passar para o campo seguinte na ordem de tabulação.

AutoVScroll Boolean Um valor TRUE ou FALSE indicando se você quer que a rolagem de um campo no sentido vertical seja automática.

AllowEdit Boolean Um valor TRUE ou FALSE permitindo ou não a entrada de um valor na tabela de código em uma DrogDownListBox.

Automatic Boolean Um valor TRUE ou FALSE indicando se o controle CheckBox ou RadioButton deve ser assinalado ou desmarcado automaticamente por um clique do mouse.

BackColor Long Um recurso que utiliza a função RGB para determinar a cor do segundo plano de um controle de janelas, por exemplo: para definir a cor do fundo de uma edição em várias linhas como púrpura você digitaria, mle_field.backcolor = RGB(255,0,255) .

BeginX Integer O ponto X inicial de um controle de linha em uma janela em relação ao canto superior esquerdo.

Adquirido por : Fabrício Moreira da Silva

Page 337: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

304

Atributos de Controles de Janelas Atributos Valores Descrição BeginY Integer O ponto Y inicial de um controle de linha

em uma janela em relação ao canto superior esquerdo.

Border Boolean Um valor TRUE ou FALSE indicando se o controle da janela tem ou não uma borda

BorderStyle Enumerated Uma variável enumerada descrevendo o estilo da borda.

BringToTop Boolean Um valor TRUE ou FALSE indicando se o controle da janela deve ser levado ou não para frente dos outros controles.

Cancel Boolean Um valor TRUE ou FALSE indicando se este CommandButton ou PictureButton deve ou não ser usado como um botão de cancelamento.

Category ObjetogrAxis Define os atributos do eixo das categorias em um controle gráfico.

Checked Boolean Um valor TRUE ou FALSE indicando se uma CheckBox (caixa de verificação, esta selecionada com um X ou se um RadioButton (Botão de rádio) esta preenchida).

ClassName String Uma string contendo o nome do controle da janela.

Columns PerPage Integer Um inteiro indicando o número de unidades a serem roladas quando houver um clique acima da caixa de rolagem.

Controle[] WindowObject Um array relacionando os controles. Você não pode alterar os valores pela variável.

ControMenu Boolean Um valor TRUE ou FALSE indicando a presença de uma caixa de controle de m menu de caixa de controle no controle da janela.

CornerHeight Integer A altura do canto arredondado em um RoundRectangle.

Page 338: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

305

Atributos de Controles de Janelas Atributos Valores Descrição CornerWidth Integer A largura do canto arredondado em um

RoundRectangle. DateObject String Uma string indicando o objeto de DataWindow

associado com o controle de DataWindow. Default Boolean Um valor TRUE ou FALSE denotando se esta

CommandButton ou PictureButton deve ou não ser usado como botão padrão.

Depth Integer Um inteiro indicando a porcentagem da profundidade em relação a largura do gráfico, por exemplo, se o valor da profundidade é 75, a profundidade do gráfico corresponde a 75% da sua largura.

Disabledname String O nome da figura a ser exibida quando um PictureButton estiver inativo.

DisplayDate String Uma string contendo os dados que aparecem inicialmente em uma EditMask.

DisplayOnly Boolean Um valor TRUE ou FALSE indicando se este campo pode ou não ser alterado pelo usuário.

DragAuto Boolean Um valor TRUE ou FALSE indicando se um clique coloca automaticamente o controle de janela no modo Drag (Quando DragAuto e não um evento Clicked).

DragLcon Dtring O icone aparece quando o usuário arrasta o controle da janela.

Elevation Integer Um inteiro especificando o ângulo de alteração da parte frontal para a posterior em um gráfico

Enabled Boolean Um valor TRUE ou FALSE indicando se o controle de janela pode ou não transmitir e receber mensagens.

Adquirido por : Fabrício Moreira da Silva

Page 339: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

306

Atributos de Controles de Janelas Atributos Valores Descrição EndX Integer O ponto X final de um controle de linha em

uma janela em relação ao canto superior esquerdo.

FaceName String Uma string contendo o nome da face de tipo (por exemplo, Arial) para o texto de um controle de janela.

FiLLColor Long A cor de preenchimento em um controle oval retângulo ou retângulo arredondado

FillPatt5ern Enumerated O padrão para preenchimento em um controle de texto estático, oval, retângulo ou retângulo arredondado.

FocusRectangle Boolean Um valor TRUE ou FALSE indicando se deve ou não ser exibido um retângulo em torno do controle

FontCharSet Enumerated (CharSet)

Especifica o conjunto de caracteres da fonte. Os valores validos são: ANSI!, ChineseBigA!, DefaultCharSet!, HangEul!, Shiftjis!, OEM e Symbol

FontFamily Enumareted (Family!)

Especifica um grupo de faces de tipos com caracteristicas semelhantes para o texto. Os valores válidos são: AnyFont!, Decorative!, Modern!, Roman!, Scripte Swiss.

FontPitch Enumerated (Pitch!)

Especifica o esoaçamento horizontal (pitch) do texto. Os valores válidos são: Default! – utiliza o espaçamento padrão correspondente a fonte (fixo ou variável ); Fixed – usa espaçamento fixo; Variable – usa espaçamento variável.

GraphType Enumerated Um tipo de dados enumerado grGraphType especificando o tipo de um gráfico.

Height Integer Um número indicando a altura do controle da janela.

Page 340: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

307

Atributos de Controles de Janelas Atributos Valores Descrição HscrollBar Boolean Um valor TRUE ou FALSE indicando se o

controle de janela tem ou não uma barra de rolagem horizontal.

HscrollBar Boolean Um valor TRUE ou FALSE indicando se o controle de janela tem ou não uma barra de rolagem horizontal.

HsplitScrol Boolean Um valor TRUE ou FALSE indicando se o controle de janela permite ou não dividir a rolagem.

HtextAlign Enumerated Um recurso que especifica o alinhamento do texto em um controle PictureButton. Os valores válidos são Center, Left e Right.

Icon String Uma string indicando o icone (arquivo ICON) exibido se o controle de janela estiver minimizado.

Increment Double Um recurso que especifica um incremento usado em uma máscara Edit numérica com controle de rotação.

Invert Boolean Um valor TRUE ou FALSE indicando se um controle de figura esta ou não invertido

Italic Boolean Um valor TRUE ou FALSE especificando e o texto em um controle esta ou não itálico.

Item[] Array de String

Um array de strings de exibição em uma tabela de código de ListBox ou DropDownListBox.

LeftText Boolean Um valor TRUE ou FALSE indicando se o texto deve ser exibido no lado esquerdo (TRUE) ou no lado direito (FALSE) de uma caixa de verificação ou de um botão de rádio.

Adquirido por : Fabrício Moreira da Silva

Page 341: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

308

Atributos de Controles de Janelas Atributos Valores Descrição Limit Integer Um inteiro contendo o número máximo de

caracteres (de 0 até 32767) que o usuário pode digitar em um controle. O valor 0 indica um número ilimitado de caracteres.

Legend Enumerated ( gr Legend Type )

Um número indicando a localização da legenda de um gráfico. Os valores válidos são: 0 – None, 1 – Left, 2 – Right, 3 – Top, 4 – Botton.

LegenDispAttr Gráfico de objeto grDispAttr

Define como você deseja que a legenda apareça.

LibraryName String O nome da biblioteca de vínculos dinâmicos (DLL) que contém uma classe de objetos personalizados do usuário.

LineColor Integer A cor para desenho de linhas em um controle Line, Oval, Rectangle ou RoundRectangle.

LinesPerPage Integer Um inteiro indicando o número de unidades a serem roladas quando houver um clique na parte inferior da barra de rolagem.

LineStyle Enumerated (Style)

Um tipo de dados enumerados Style! Especificando o estilo da linha de um controle, Line Oval, Rectangle ou RoundRectangle.

LineTrickness Integer Um inteiro determinando a espessura da linha em um controle Line, Oval, Rectangle ou RoundRectangle.

LiveScroll Boolean Um valor TRUE ou FALSE indicando se o acionamento das barras de rolagem possibilita a rolagem DataWindow.

Mask String Uma string contendo um formato de um controle de máscara de edição.

Page 342: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

309

Atributos de Controles de Janelas Atributos Valores Descrição MaskdataType Enumerated Uma variável enumerada atribuindo um

formato predefinido a um controle de máscara de edição.

MaxBox Boolean Um valor TRUE ou FALSE indicando a presença de uma caixa de maximizar na DataWindow.

MaxPosition Integer Um inteiro contendo o valor do atributo da posição quando uma barra de rolagem horizontal esta na extremidade direita ou uma barra de rolagem vertical se encontra na extremidade inferior. Somente para uso em controle HscrollBar e VscrollBar.

MicroHelpHeight Integer Um inteiro no controle MDIClient (MDI_1) determinando a altura da MicroHelp

MinBox Boolean Um valor TRUE ou FALSE indicando a presença de uma caixa de minimizar na DataWindow.

MinPosition Integer Um inteiro contendo o valor do atributo de posição quando uma barra de rolagem horizontal esta na extremidade esquerda ou uma barra de rolagem vertical se encontra na extremidade superior.

MinMax String Uma string contando os valores mínimo e máximo para um controle de rtotação em uma máscara de edição. Os valores mínimo e máximo são separados por uma tabulação (por exemplo, em_campo.minmax= “1000 5000”).

MultiSelect Boolean Um valor TRUE ou FALSE indicando se o usuário pode ou não selecionar diversos valores em uma ListBox.

Adquirido por : Fabrício Moreira da Silva

Page 343: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

310

Atributos de Controles de Janelas Atributos Valores Descrição ObjectType Enumerated Um tipo de dados enumerado especificando o

tipo de objeto do usuário. OriginalSize Boolean Um valor TRUE ou FALSE indicando se devem

ou não ser ignorados os atributos Height e Midth em um controle PictureButton sendo exibida em seu tamanho original a figura associada com o controle.

OverlapPercent

Integer Um inteiro especificando a porcentagem da largura dos indicadores de dados (por exemplo) barras ou colunas de diferentes séries que se sobreoõem em um gráfico.

Password Boolean Um valor TRUE ou FALSE indicando se uma Single Line Edit deve ser criada como campo de senha.

Perspective Integer Um valor inteiro (de 1 a 100), indicando a distância do gráfico até a parte frontal da janela. Quanto maior o número maior a distância e menor o tamanho do gráfico.

PictureName String Uma string contendo o nome do mapa de bits em um controle Pictyre ou PictureButton.

Pointer String Uma string contendo o ponteiro do mouse para este objeto.

Position Integer A posição atual de uma barra de rolagem. Somente para uso nos atributos HscrollBar e VscrollBar.

Resizable Boolena Um valor TRUE ou FALSE indicando se o DataWindow é ou não redimensionável.

Rotation Integer Um valor inteiro indicando o quanto você deseja girar um gráfico da esquerda para a direita.

Page 344: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

311

Atributos de Controles de Janelas Atributos Valores Descrição Series Objeto GrAxis Define os atributos do eixo das séries em um

controle de gráfico. ShadeColor Integer Um inteiro determinando a cor do sombreado

de um gráfico. ShowList Boolean Um valor TRUE ou FALSE indicando se a lista

de uma DroDowmListBox deixa ou não ser sempre exibida.

Sorted Boolean Um valor TRUE ou FALSE indicando se os elementos em uma ListBox ou DropDowmListBox devem ou não ser classificados de acordo com seu valor de exibição.

Spacing Integer Um inteiro determinando o espaço entre as categorias.

Spin Boolean Um valor TRUE ou FALSE indicando se uma máscara de edição tem ou não controle de rotação.

StdHeight Boolean Um valor TRUE ou FALSE indicando deve ser usado a altura da barra de rolagem horizontal padrão (TRUE) ou a altura da barra de rolagem horizontal do sistema (FALSE).

StdWicth Boolean Um valor TRUE ou FALSE indicando se deve ser usada a largura da barra de rolagem vertical padrão (TRUE ou a largura da barra de rolagem vertical do sistema (FALSE)).

Style Long Controla a aparência do objeto do usuário. TabOrder Integer Um inteiro que descreve a ordem de

tabulação do controle de janela em relação a outros controles.

TabStop [] Array de inteiros

Um array de inteiros com sinais, contendo a posição das paredes de tabulação em uma máscara Edit, ListBox ou Line Edit.

Adquirido por : Fabrício Moreira da Silva

Page 345: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

312

Atributos de Controles de Janelas Atributos Valores Descrição Tag String Uma string contendo o valor da tag do

controle de janela. Text String O texto associado a um controle de janela TextCase Enumerated

(case) Uma variável enumerada Case! Denotando a altura dos caracteres em um campo texto.

TextColor Long Um inteiro longo indicando a cor do texto em um campo.

TextSize Integer Um inteiro indicando o tamanho do texto em um campo texto.

ThirdState Boolean Um valor TRUE ou FALSE indicando se uma caixa de verificação encontra-se ou não no seu terceiro estado.

ThreeState Boolean Um valor TRUE ou FALSE indicando se uma caixa de verificação tem três estados, (TRUE) ou somente dois estados (FALSE).

Title String Uma string contendo o título da DataWindow ou do gráfico.

TitleBar Boolean Um valor TRUE ou FALSE indicando se a DataWindow tem ou não uma barra de titulo.

TitleDispAttr Objeto gr DispAttr

Um objeto DispAttr definindo o estilo de um titulo em um gráfico.

Underline Boolean Um valor TRUE ou FALSE especificando se o texto em um controle deve ou não estar sublinhado.

UnitsPerColumn

Integer Um recurso que indica o número de unidades do PowerBuilder na rolagem efetuada pelo usuário ao dar um clique no lado esquerdo ou direito da barra de rolagem.

Page 346: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

313

Atributos de Controles de Janelas Atributos Valores Descrição UnitsPerLine Integer Um recurso que indica o número de

unidades do PowerBuilder na rolagem efetuada pelo usuário ao dar um clique na parte superior ou inferior da barra de rolagem.

UseCodeTable Boolean Um valor TRUE ou FALSE indicando se uma máscara Edit irá utilizar tabelas de códigos. Esse atributo útil em controles de rotação de campos não-numéricos.

Values Objeto gr Axis Um recurso que estabelece os atributos dos valores em um controle de gráfico.

Visible Boolean Um valor TRUE ou FALSE indicando se controle de janela esta ou não visível.

VscrollBar Boolean Um valor TRUE ou FALSE indicando se controle de janela possui ou não uma barra de rolagem vertical.

VtextAlign Enumerated Um tipo de dados enumerado especificando o alinhamento do texto em um controle PictureButton. Os valores válidos são: Bottom, MultiLine, Top! E Vcenter! .

Weight Integer Um inteiro contendo o peso (espessura das linhas) do texto. O peso é medido em pontos. O PowerBuilder sugere o valor “400” para o texto normal ou “700” para o texto em negrito.

Width Integer Um número indicando a largura do controle de janela.

X Integer A coordenada X do controle de janela em relação à janela.

Y Integer A coordenada Y do controle de janela em relação à janela.

Adquirido por : Fabrício Moreira da Silva

Page 347: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

314

Eventos de Controles de DataWindows Eventos Descrição Clicked O usuário deu um clique sobre um controle de janela. Constructor A janela foi aberta e o controle da janela esta sendo

construído. DBError Ocorreu um erro do banco de dados no controle de

dataWindow. Destructor A janela superior esta sendo fechada e o controle esta se

fechando sendo destruído com ela. DoubleClicked O usuário de um clique duplo sobre o controle. DragDrop O usuário soltou um objeto sobre o controle de janela. DragEnter Um objeto arrastado entrou na área do controle de

janela. DragLeave Um objeto arrastado esta deixando a área do controle de

janela. DragWithin O usuário esta arrastando um objeto no interior da área

do controle de janela. EditChanged O usuário esta digitando em um controle de edição. GetFocus O controle de janela recebeu o foco. ItemChanged Um item mudou de valor no controle DataWindow. ItemError Um item não passou em seu teste de validação. ItemFocusChanged O foco no interior do controle DataWindow foi modificado. LineLeft Uma HscrollBar acabou de se deslocar uma linha para a

esquerda. LineRight Uma HscrollBar acabou de ser deslocar uma linha para a

direita. LineUp Uma VscrollBar acabou de se deslocar uma linha para

cima. Line Dow Uma VscrollBar acabou de se deslocar uma linha para

baixo.

Page 348: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência: Atributos e Eventos

315

Eventos de Controles de DataWindows

Eventos Descrição LoseFocus O controle de janela esta a ponto de perder o foco. Modifed Um controle de edição em várias linhas de edição em

uma única linha, caixa de listagem ou caixa de listagem DropDowm perdeu o foco e foi alterado (modificado).

Other Ocorreu um evento do Windows 3x que não é especifico do PowerBuilder .

PageLeft Uma HscrollBar acabou de se deslocar uma página para a esquerda.

PageRight Uma HscrollBar acabou de se deslocar uma página para a direita.

PageUp Uma VScrollBar acabou de se deslocar uma página para cima.

PageDown Uma VScrollBar acabou de se deslocar uma página para baixo.

PrintEnd O controle de DataWindow terminou sua impressão. PrintPage Uma nova página esta a ponto de iniciar sua impressão. PrintStart O controle de DataWindow esta a ponto de ser impresso. RbuttonDown O botão direito do mouse é acionado sobre o controle de

janela. Resize O controle de DataWindow esta sendo redimensionado. RetrieveEnd Uma recuperação acabou de ser completada. RetrieveRow Uma linha foi recuperada. RetrieveStart Uma recuperação esta a ponto de se iniciar. RowFocusChanged Uma nova linha recebeu o foco. ScrollHorizontal O controle de DataWindow esta sendo rolado no sentido

horizontal. ScrollVertical O controle de DataWindow esta sendo rolado no sentido

vertical. SelectionChanged A seleção foi alterada em uma caixa de listagem ou caixa

de listagem DropDown. SQLPreview Acabou de ser emitida uma chamada a função Retrieve,

UpDate, ou ReselectRow, mais a função ainda não foi executada.

UpDateEnd Uma atualização acaba de ser completada. UpdateStart Uma atualização esta a ponto de se iniciar.

Adquirido por : Fabrício Moreira da Silva

Page 349: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

Guia de Referência

Dados Enumerados

Page 350: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

316

Tipos de dados Enumerados Categorias Valores Comentários ArrangeOpen Casacaded!

Layered! Original!

Como as folhas MDI estão organizadas quando são abertas.

ArrangeType Cascade! Icons! Layer! Tile! TileHorizontal!

Como as folhas MDI abertas são organizadas.

Border Box! Lowered! BoBorder! Raised! ResizeBorder! ShadowBorder! Underline!

O tipo da borda.

BorderStyle StyleBox! StyleLowered! StyleRaised! StyleShadowBox!

O estilo da borda.

Button OK! OKCancel! RetryCancel! YesNo! YesNoCancel!

Message Box Button.

ConvertType XpixelsToUnits! XunitsToPixels! YpixelsToUnits! YunitsToPixels!

De que maneira você quer converter unidades ou pixels nas funções PixelsToUnit e UnitsToPixels.

DragModes Begin! Cancel! End!

O modo Drag para um objeto.

DwBuffer Delete! Fitter! Primary!

O buffer da DataWindow.

Adquirido por : Fabrício Moreira da Silva

Page 351: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

317

Tipos de dados Enumerados

Categorias Valores Comentários Dwltemstatus DataModifed!

New! NewModifed! NotModifed!

O status de um item DataWindow.

FileAcess Read! Write!

O acesso permitido ao arquivo.

FileLock LockReady! LockReadyWrite! LockWrite! Shared!

O bloqueio do arquivo para outro usuário.

FileMode LineModel! StreamModel!

O modo File para leitura e gravação.

FillPatern Bdiagonal! Diamond! FDiagonal! Horizontal! Solid! Square! Vertical!

O padrão de preenchimento usado para preencher um desenho ou um objeto gráfico.

FontCharSet Ans! ChineseBigS! DefaultCharSet! HangEu!Shiftjis! OEM! Symbol!

O conjunto de caracteres da fonte.

FontFamily AnyFont! Decorative! Modern! Roman! Script! Swiss!

A família das fontes.

FontPitch Default! Fixed! Variable!

O pitch da fonte.

Page 352: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

318

Tipos de dados Enumerados

Categorias Valores Comentários GrColorType Background!

Foreground! LineColor! Shade!

Um tipo de cor em um gráfico.

GrDataType Xvalue! Yvalue!

O valor de um ponto de dados em um gráfico.

GrGraphType Area3d! AreaGraph! Bar3dGraph! Bar3dObjGraph! BarGraph! BarStack3dObjGraph! BarStackGraph! Col3dGraph! Col3dObjGraph! ColGraph! Colstack3dObjGraph! ColStackGraph! Line3d! LineGraph! Pie3d! PieGrapha! ScatterGraph!

O tipo de Gráfico.

GrLegend Type AtBottom! AtLeft! AtRight! AtTop! NoLegend!

A localização da legenda do gráfico.

Adquirido por : Fabrício Moreira da Silva

Page 353: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

319

Tipos de dados Enumerados

Categorias Valores Comentários GrObjectType TypeCategory!

TypeCategoryAxis! TypeCategoryLabel! TypeData! TypeGraph! TypeLegend! TypeSeries! TypeSeriesAxis! TypeSeriesLabel! TypeTitle! TypeValueAxis! TypeValueLabel!

O tipo de objeto do gráfico.

GrResetType All! Category! Data! Series!

Os dados que você deseja reinicializar em um gráfico.

GrScaleType Linear! Log10! LogE!

O tipo de escala em um gráfico.

GrScaleValue Actual! Cumulative! CumulativePercent! Percentage!

O valor da escala em um gráfico.

Page 354: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

320

Tipos de dados Enumerados

Categorias Valores Comentários GrSimbolType NoSymbol!

SymbolHollowBox! SymbolHollowCircle! SymbolHolloWDiamond! SymbolHollowDownArrow! SymbolHollowUpArrow! SymbolPlus! SymbolSolidBox! SymbolSolidCircle! SymbolSolidDiamond! SymbolSolidDownArrow! SybolSolidArrow! SymbolStar! SymbolX!

O símbolo que você deseja usar para uma série em um gráfico.

GrTicType Inside! NoTic! Outside! Straddle!

O tipo de marcas de escala de um gráfico.

HelpCommand Index! Keyword! Topic!

O tipo de comando da função Showl Help.

Icon Exclamation! Informações! None! Question! StopSign!

O ícone de Message Box (Caixa de Mensagem).

Adquirido por : Fabrício Moreira da Silva

Page 355: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

321

Tipos de dados Enumerados

Categorias Valores Comentários KeyCode

Key0! Key1! Key2! Key3! Key4! Key5! Key6! Key7! Key9! KeyA! KeyAdd! KeyAlt! KeyB! KeyBack! KeyBackQuote! KeyBackSlash! KeyC! KeyCapsLook! KeyComma! KeyControl! KeyD! KeyDash! Keydecimal! KeyDelete! KeyDivide!numérico! KeyDowmArrow! KeyE! KeyEnd! KeyEnter! KeyEqual! KeyEscape! KeyF1! KeyF10! KeyF11! KeyF12! KeyF2! KeyF3!

O argumento do código de tecla(KeyCode) na função(KeyDowm). Tecla + no teclado numérico. TeclaBackspace Teclas e – Teclas(e) Teclas < Teclas – e Tecla . no teclado numérico quando NumLock esta ativa No teclado Teclas = e +

Page 356: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

322

Tipos de dados Enumerados

Categorias Valores Comentários KeyCode KeyF4!

KeyF5! KeyF6! KeyF7! KeyF8! KeyF9! Key|G! KeyH! KeyHome! KeyI! KeyInsert! KeyJ! KeyK! KeyL! KeyLeftArrow! KeyLeftBracket! KeyM! KeyMultiply! KeyN! KeyNumLock! KeyNumPad0! KeyNumPad1! KeyNumPad2! KeyNumPad3! KeyNumPad4! KeyNumPad5! KeyNumPad6! KeyNumPad7! KeyNumPad8! KeyNumPad9! KeyO! KeyP! KeyPageDowm! KeyPageUp! KeyPause! KeyPeriod!

Adquirido por : Fabrício Moreira da Silva

Page 357: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

323

Tipos de dados Enumerados

Categorias Valores Comentários KeyCode

KeyPrintscreen! KeyQ! KeyQuote! KeyR! KeyRightArrow! KeyRightBracket! KeyS KeyscrollLock! KeySemiColon! KeyShift! KeySlash! KeySpaceBar! KeySubtract! KeyT! KeyTab! KeyU! KeyUpArrow! KeyV! KeyW! KeyX! KeyY! KeyZ!

Page 358: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

324

Tipos de dados Enumerados

Categorias Valores Comentários LibDirType DirAll!

DirApplication! DirdataWindow! DirFunctin! DirMenu! DirStructure! DirUserObject! DirWindow!

O tipo dos objetos a serem incluídos na lista de diretórios.

LibExportType ExportAplicattion! ExportDataWindow! ExportFunction! ExportMenu! ExportStructure! ExportUserObjet! ExportWindow!

O tipo de objeto a ser exportado.

LibImportType ImpotDataWindow O tipo de objeto a ser importado. LineStyle Continuous!

Dash! DashDot! DashDotDot! Dot! Transparent!

O estilo da linha.

mailFileType mailAttach! mailOLE! mailOLEStatic!

Tipos de arquivos de correio.

mailLogonOption mailDownLoad! mailNewSession! mailNewSessionWithDowmLoad! mailReadOption! mailBodyAsFile! mailEntireMessage! mailEnvelopeOnly! mailSuppressAttach!

Opções de logon de correio. Opções de leitura de correio.

Adquirido por : Fabrício Moreira da Silva

Page 359: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

325

Tipos de dados Enumerados

Categorias Valores Comentários mailRecipeientType mailBCC!

mailCC! mailOriginator! mailTo!

Tipos de destinatários de correio.

mailReturnCode mailReturnAccessDenied! mailReturnAttachment! NotFound! OpenFailmailReturnAttachmentWrite! Failure! mailReturnDiskFull! mailReturnFailure! mailReturnInsufficientMemory! mailReturnLoginFailure! mailReturnMessagelnUse! mailReturnNoMessage! mailReturnSucess! mailReturnTextTooLarge! mailReturnTooManyFiles! mailReturnTooManyRecipients! mailReturnTooManySessions! mailReturnUserAbort!

Código de retorno das funções de correio.

Page 360: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

326

Tipos de dados Enumerados

Categorias Valores Comentários MaskdataType DataMask!

DataTimeMask! DecimalMask! NumericMask! StringMask! TimeMask!

O tipo de dados de EditMask.

MajorTic Inside! NoTic! Outside Stradde!

O tipo das marcas de escalas principais na escala do gráfico.

MinorTic Inside! Notic! Outside! Stadde!

O tipo de das marcas da escala secundárias na escala de gráficos.

Adquirido por : Fabrício Moreira da Silva

Page 361: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

327

Tipos de dados Enumerados

Categorias Valores Comentários Object Checkbox!

Commandbutton! DataWindow! Dropdownlistbox! Editmask! Graph! Groupbox! Hscrolibaqr! Line! Listbox! Mdiclient! Menu! Multilineedit! Nonvisualobject! Oval! Picture! Picturebutton! Radiobutton! Rectangle! Roundectangle! Singlelineedit! Stalictext! Userobject! Vscrollbar! Window!

O tipo do objeto.

ParmType TypeBoolean! TypeDate! TypeDataTime! TypeDecimal! TypeDouble! TypeInterger! TypeLong! TypeReal! TypeString! TypeTime! TypeUlnt! TypeULong! Unknown!.

O tipo de dados do parâmetro.

Page 362: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

328

Tipos de dados Enumerados

Categorias Valores Comentários Pointer Arrow!

Beam! Cross! HourGlass! SizeNESW! SizeNS! SizeNWSE! SizeWE! UpArrow!

A forma do ponteiro correspondente a função SetPointer

RowFocuslnd FocusRect! Hand! Off!

O método que será usado para indicar que uma determinada linha de uma DataWindow detém o foco.

SaveAsType Csv! ClipBoard! DBase2! DBase3! Dif! Excel! SQLInsert! Sylk! Text! Wk1! Wks!

O tipo de arquivo a ser criado quando forem gravadas as linhas de uma DataWindow.

SeekType FromBeginning! FromCurrent! FromEnd!

A posição na qual você quer iniciar uma busca em FileSeek.

SetPosType Behind! NoTopMost! TopBottom! TopMost! ToTop!

Define a ordem de exibição em controle de janela.

TextCase AnyCase! Lower! Upper!

A altura dos caracteres do texto.

Adquirido por : Fabrício Moreira da Silva

Page 363: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

329

Tipos de dados Enumerados

Categorias Valores Comentários ToolbarAlignment! AlignAtBottom!

AlignAtLeft! AlignAtRight! AlignAtTop! Roating!

O alinhamento da barra de ferramentas.

TrigEvent Activate! Cliked! Close! CloseQuery! DBError! Deactivate! DoubleCliked! DragDrop! DragEnter! DragLeave! DragWithin! EditChanged! GetFocus! Hide! HotLinkAlarm! Idle! ItemChanged! ItemError! ItemFocusChanged! Key! LineDow! LineLeft! LineRight! LineUp! LoseFocus! Modifed! MouseDown! MouseMove! MouseUp! Moved! Open! Other! PageDown!

O tipo de evento a ser disparado pela função TriggerEvent.

Page 364: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

330

Tipos de dados Enumerados

Categorias Valores Comentários PageLeft!

PageRight! PageUp! PrintEnd! Printpage! PrintStart! RemoteExec! RemoteHotLinkStart! RemotHotLinkStop! Remoterequest! Remotesend! Resize! RetrieveEnd! RetrieveRow! Retrievestart! RowFocuschanged! ScrollHorizontal! ScrollVertical! Selected! SekectionChanged! Show! SQLPrewiem! SystemError! Timer! UpDateEnd! UpDatestart!

Adquirido por : Fabrício Moreira da Silva

Page 365: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

PowerBuilder 9.0 Básico Guia de Referência : Dados Enumerados

331

Tipos de dados Enumerados

Categorias Valores Comentários VtextAlign Bottom!

MultiLine! Top! VCEnter!

O alinhamento do texto.

UserObjects! CustomVisual! ExternaVisual!

O tipo de objeto do usuário.

WindowState Maximized! Minimized! Normal!

O estado no qual a janela ou o programa estará em execução.

WindowType Child! Main! MD! MDHelp! Popud! Response!

Tipo da janela.

WriteMode Aqppend! Replace!

O modo correspondente a função FileOpen.

Page 366: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão

Adquirido por : Fabrício Moreira da Silva

Page 367: Adquirido por : Fabrício Moreira da Silvadanielmoraes.com.br/PB9Basico.pdfPowerBuilder 9.0 Básico Pensamentos ... Exportando DataWindow (DataWindow Export) 228 Importando um padrão