Anda di halaman 1dari 367

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

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 pacincia; 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. Crtes.

Morder o fruto amargo e no cuspir mas avisar aos outros quanto amargo, cumprir o trato injusto e no falhar mas avisar aos outros quanto injusto, sofrer o esquema falso e no ceder mas avisar aos outros quanto falso; dizer tambm que so coisas mutveis... E quando em muitos a noo pulsar do amargo e injusto e falso por mudar ento 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 algum de sucesso"
Albert Einstein Celso S. Crtes brasileiro, carioca de Vila Isabel e atualmente reside na cidade de Niteri-RJ, onde, em todos os sentidos, se apaixonou.

... Niteri! Niteri! como s formosa! Eu me glorio de dever-te o brao! Montanhas, vrzeas, lagos, mares, ilhas, Prolfica Natura, cu ridente, Lguas e lguas de prodgios tantos....

poema de Gonalves de Magalhes


Foto : Museu de Arte Contempornea (MAC) Rio de Janeiro Niteri - Projeto de : Oscar Niemeyer 1994 1 Poema extrado do livro "Geir Campos - Antologia Potica", Lo Christiano Editorial Ltda. - Rio de Janeiro, 2003, pg. 89, organizada por Israel Pedrosa. 2 Pensamentos de Albert Einstein

PowerBuilder 9.0 Bsico



PowerBuilder 9.0 Bsico


Celso S. Crtes.

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

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico



Bibliografia : Getting Started PowerBuilder 9 DOCUMENT ID: 37772-01-0900-01 LAST REVISED: March 2003 Copyright 1989-2003 by Sybase, Inc. All rights reserved. Capa : Gilberto Santana lvvg@ig.com.br Projeto Grfico e Composio: Celso S. Crtes Reviso do texto: Eduardo Olimpio Mota Fialho Endereo eletrnico : http://www.pb9basico.net Email : pb9basico@pb9basico.net Autor : Celso S. Crtes Analista de Sistemas Snior IBGE/DI/COADS Supervisor de Pesquisas, Sistema Pesquisas Continuas Agropecurias www.pca.ibge.gov.br Usurio do Sybase PowerBuilder PB4,PB5,PB6,PB7,PB8 e PB9. Enterprise desde 1993, verses

Desenvolvedor Java,JavaScript,VBScript,ASP,PHP Criador e mantenedor do stio na internet sobre Sybase PowerBuilder www.celso.cortes.nom.br, desde 1996. Email: celso.cortes@celso.cortes.nom.br

PowerBuilder 9.0 Bsico

Agradecimentos


Pessoas inovadoras que chamam a si a misso de desbravar novas tecnologias enfrentam sempre dois grandes desafios. O primeiro intrnseco ao pioneirismo. Elas tm que acreditar em seus propsitos e correr os riscos e as incertezas que acompanham todas as inovaes. O segundo desafio est em disseminar, nas suas reas de atuao, uma nova cultura tecnolgica que venha a se constituir no ambiente propcio para a evoluo profissional. Em conseqncia, cria-se um processo sinrgico onde h um crescimento cultural tanto das Empresas como das Comunidades com as quais elas interagem. Foi dentro deste esprito que surgiu a iniciativa de oferecer aos desenvolvedores brasileiros um livro em portugus para iniciantes sobre a ferramenta de desenvolvimento para MS Windows, o Sybase PowerBuilder 9.0. Com esta edio, mais que simplesmente preencher uma lacuna existente na bibliografia em portugus de informtica, est sendo dado um forte impulso para que se evolua no esforo comum de criar outras publicaes sobre esta tima ferramenta de desenvolvimento. Agradeo ao meu amigo, Maycon J. Oleczinski que muito tem me auxiliado tanto neste trabalho, quanto na hospedagem do stio na internet, dirigido comunidade de PowerBuilder no Brasil, www.celso.cortes.nom.br. Agradeo tambm a todos os participantes do nosso frum http://groups.yahoo.com/group/powerbuilder-br/ que esto sempre a disposio com valorosos textos. Aos meus filhos, Daniel e Thiago, pela pacincia 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 Contnuas Agropecurias IBGE/DI/COADS) pelo companheirismo, incentivo e profissionalismo que compartilhamos nestes onze anos de convvio e trabalho. E, em especial, a Eduardo Olimpio Mota Fialho, Analista de Sistemas (Sistema Pesquisas Contnuas Agropecurias - IBGE/DI/COADS), Estatstico, Mestre em Estudos Populacionais e Pesquisas Sociais, um grande amigo, pelo interminvel incentivo e reviso desta obra. Celso S. Crtes.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Apresentao



Sobre o livro Este livro tem o objetivo de ajudar os iniciantes desta tima ferramenta de desenvolvimento o PowerBuilder 9.0 em portugus. O roteiro de desenvolvimento para essa ajuda se dar de modo aplicado. Alguns conceitos bsicos sero explicados para em seguida desenvolvermos uma aplicao modelo, utilizando os mdulos bsicos do PowerBuilder, visando uma maior fixao dos seus conceitos. Sobre o Sybase PowerBuilder 9.0 O PowerBuilder 9.0 uma ferramenta de desenvolvimento padro MS Windows , orientada a objetos, que permite desenvolver aplicaes cliente, cliente/ servidor e para internet. Em verses anteriores do PowerBuilder voc poderia trabalhar s nos objetos da sua aplicao . A partir do PowerBuilder 8.0 foi introduzido a WorkSpace no qual voc pode trabalhar em vrias aplicaes ou objetos. Para trabalhar com objetos, voc tem que ter uma WorkSpace aberta. Voc s pode ter uma nica WorkSpace aberta, mas, voc incluir vrios objetos. H dois tipos de objetos: PowerScript cliente e Objetos de Rede. Um objeto de PowerScript pode ser qualquer aplicao que voc trabalha, como uma aplicao cliente. Um objeto de Rede pode conter todos os elementos que voc precisa para construir um sitio (HTML) , cdigos, imagens, componentes, bem como definies para conexes de banco de dados. Para trabalhos corporativos, sem dvida, ser um grande ganho no desenvolvimento, pois se podero compartilhar cdigos, objetos sem ter que inclu-los a sua aplicao. Alm disso, o workspace possibilita a incluso de vrios diretrios que podem ser abertos e linkados sua aplicao.

PowerBuilder 9.0 Bsico

Sumrio



Sumrio
Captulo 1 Barras de Ferramentas Conhecendo as suas funes Criando a WORKSPACE Criando uma aplicao Captulo 2 Criando uma WINDOW (janela) Configurando as barras de menu Template Properties Salvando a WINDOW Captulo 3 Criando um menu Escrevendo em PowerScript Como definir tipos de janelas Uso dos tipos de janela Tipos de controle Captulo 4 Implementao da Herana de Janelas Captulo 5 Projetando o menu 31 29 16 19 22 23 24 6 8 9 15 1 1 4 5

i
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Sumrio



Sumrio
Captulo 6 A Linguagem PowerScript Eventos Ambiente de Script A Linguagem PowerScript Fundamentos da Linguagem PowerScript Variveis Tipos de Dados Escopo de Variveis Encapsulamento Objetos e Controle Execuo de uma funo por meio da notao de ponto Estruturas Arrays Arrays multidimensionais Arrays variveis Dados de objetos Operadores Operadores Aritmticos Operadores binrios Operadores unrios Operadores de combinao Operador de string Operadores lgicos Operadores relacionais Operadores de conjuno Procedncia e Parnteses Comandos do PowerBuilder O Uso da estrutura IF Estrutura Choose Case Estrutura de iterao(Loops) Estrutura de Do Loop Estrutura For Next 36 37 38 39 41 41 42 44 45 46 46 48 50 51 51 52 52 52 53 53 54 54 54 55 55 56 56 56 57 58 58 59

ii

PowerBuilder 9.0 Bsico

Sumrio



Sumrio
Captulo 7 Transaes de Bancos de Dados Definindo uma transao Montando a transao em PowerScript O uso do SQL no PowerBuilder Captulo 8 DataWindow Objeto DataWindow Fonte de dados Interface inteligente Interface com o usurio Como criar um objeto DataWindow Fontes de dados SQL Select Query Stored Procedure External Montando uma DataWindow com SQL Select Template de SQL Argumentos Personalizando sua DataWindow Composite Crosstab (planilha) FreeForm (Formulrio livre) Graph (Grfico) Grid (Grade) Group(Grupo) Label (Etiquetas) N-up (Mltiplas linhas) Ol 2.0 RichText Tabular Cores e Bodas 67 67 68 68 68 69 70 71 71 71 71 72 74 75 77 78 79 80 81 82 83 84 84 85 85 86 87 60 61 61 63

iii
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Sumrio



Sumrio
Captulo 9 Recuperao de dados a partir de uma DataWindow Funes para o controle DataWindow Montando um Objeto DataWindow Aperfeioando a visualizao da DataWindow Vinculando duas DataWindow Vinculando objeto DataWindow a um controle DataWindow Incluindo controle DataWindow a Window (janela) Incluindo parmetros de atualizao Rotina de incluso Rotina de alterao Rotina de Excluso Captulo 10 DataWindow : Tcnicas avanadas Buffers Internos Detectar a validao Detectar o Tipo de dado Detectar regras de validao Detectar mudanas no item Usando Filtros Classificando Clusula Where para Update e Delete Modify e Describe Funo Evaluate( ) Propriedade Object Parametrizando com a clusula DATA Captulo 11 PipeLine de dados Captulo 12 Criando Relatrios 175 167 88 90 105 110 114 123 123 130 131 137 144

147 148 148 148 148 150 151 153 155 160 162 165

iv

PowerBuilder 9.0 Bsico

Sumrio



Sumrio
Captulo 13 Grficos Captulo 14 XML Conceito Exportando DataWindow (DataWindow Export) Importando um padro XML para a DataWindow Captulo 15 Preparando sua aplicao final Criando o objeto Project Criando o arquivo executvel Captulo 16 Criando uma aplicao Web Criando um stio WEB com PowerDynamo Captulo 17 Criando a primeira pgina Web Utilizando 4GL Web/JSP Page wizard Guia de Referncia Nomenclaturas Atributos e Eventos Dados Enumerados 293 296 316 269 270 256 256 249 249 254 197

213 228 239

v
Adquirido por : Fabrcio Moreira da Silva

Captulo 1
Barras de Ferramentas Conhecendo as suas funes Criando a WORKSPACE Criando uma aplicao

PowerBuilder 9.0 Bsico

Captulo 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 aplicao. Em qualquer local da PowerBar1, clicando-se com o boto esquerdo do mouse pode-se customizar suas funes, incluindo ou inibindo seus mdulos. A barra acima um padro que aparecer na primeira vez que voc iniciar o PowerBuilder e caso seja customizada as alteraes sero mantidas. Conhecendo as suas funes

SEARCH - Ativa o tpico AJUDA no modo SEARCH (pesquisa) HELP - Ativa o tpico AJUDA no modo padro. NEW - Ativa o template de habilitao 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 aplicao.

SYTEM TREE Mostra ou esconde a janela de descrio do seu projeto. OUTPUT Mostra ou esconde a janela de informaes de sada do seu projeto.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 1


Conhecendo as suas funes

NEXT ERROR/MESSAGE Exibe a prxima mensagem de erro da aplicao (se existir).

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

SYSTEM OPTION Ativa o template de configurao pessoal da sua mscara de trabalho. TO-DO-LIST Monta uma lista de pendncias BROWSER Ativa o template de viso dos objetos da WorkSpace, com suas propriedades. CLIP WINDOW Abre o template CLIP. Serve como um bloco de notas para sua aplicao possibilitando copiar e colar. LIBRARY Abre o template tipo EXPLORER para seleo de aplicao ou objetos.

DB PROFILE Abre o template que possibilita configurar o tipo de conexo e a base de dados qual seu projeto estar associado. EASERVER PROFILE Abre o template que possibilita configurar o tipo de conexo com o servidor de aplicao EASERVER. DATA BASE Abre o template de consulta, edio e alterao das bases de dados associadas ao DB PROFILE.

PowerBuilder 9.0 Bsico

Captulo 1


Conhecendo as suas funes

FILE EDITOR Abre o template de edio de arquivo. Com esse editor possvel criar qualquer funo ou objetos para serem utilizados pelo POWERBUILDER. DEBUG Abre o template para auxilio a depurao de sua aplicao. RUN Ao clicar neste boto o POWERBUILDER ir aplicao em modo interpretado. executar sua

SELECT and RUN Executa a aplicao selecionada, em modo interpretado. EXIT Sair do POWERBUILDER. Conhecendo as funes bsicas da POWERBAR1 podemos iniciar a nossa primeira aplicao. Desse modo iremos, passo a passo conhecendo o PowerBuilder 9.0.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 1


Criando a WORKSPACE

Clique no boto NEW e selecione WORKSPACE. Clique em OK. Selecione o diretrio onde voc ira salvar a WorkSpace e d um nome para ela (para acompanhar corretamente a aplicao neste livro atribua o nome exemplo_01 e clique em salvar). Se tudo deu certo no template Sytem Tree aparecer :

PowerBuilder 9.0 Bsico

Captulo 1


Criando uma aplicao.

Clique em clique em OK.

NEW e selecione Target em seguida Application e

Aparecer a tela de definio da sua aplicao. Em Application Name digite : exemplo1. Em Library selecione o diretrio onde voc salvou a WorkSpace. Em Target repita o procedimento anterior. Clique em Finish OBS: No necessariamente voc precisa atribuir os mesmos diretrios na criao de uma aplicao. Neste caso fizemos isso, para facilitar o exemplo. Se tudo deu certo voc visualizar :

Agora que estamos com a WorkSpace e a Aplicao criada. Vamos criar nosso primeiro objeto.

Adquirido por : Fabrcio Moreira da Silva

Captulo 2
Criando uma WINDOW (janela) Configurando as barras de menu Template Properties Salvando a WINDOW (janela)

PowerBuilder 9.0 Bsico

Captulo 2


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 trs 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 descries: Layout, Open, Event List, Function List e Declare Instance Variables. Open : Abre o template dos eventos padro do objeto assim como o quadro de funes e de declarao de variveis e funes compartilhadas. Event List : Como o prprio nome diz, lista os eventos padro da window. Function List :Abre o template das funes padro da window. Declare Instance Variables : Abre o template para as declaraes das variveis e funes compartilhadas que podem ser de instncia ou global. Instancia Pertence ao objeto e s estar disponvel se o objeto estiver ATIVO. Global Pertence APLICAO

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 2


CRIANDO UMA WINDOW (JANELA)

Para uma visualizao mais limpa, clique em template de OUTPUT e clique em template de trabalho.

OUTPUT para inibir o

CLIP WINDOW para inibir o

Voc agora tem uma viso mais limpa da sua WINDOW(janela).

PowerBuilder 9.0 Bsico

Captulo 2


CRIANDO UMA WINDOW (JANELA) Configurando as barras de menu Coloque o mouse sobre uma barra de menu e clique no boto esquerdo. Um menu-popup aparecer conforme a figura abaixo:

A PowerBar1 a barra de trabalho do POWERBUIDER. As barras PainterBarX so as barras de trabalho do objeto que voc selecionou para trabalhar - neste caso, o objeto WINDOW. Clique em cada opo do menupopup para conhecer as barras. Voc pode tambm definir o seu posicionamento, colocando o mouse sobre a barra e clicando nas opes de posicionamento: Left, Top, Right, Botton ou Floating. O PowerBuilder possibilita personalizar a sua barra, incluindo ou excluindo itens que sero exibidos. Posicione o mouse na barra, clique no boto esquerdo, selecione Customize e utilize o processo de arrastar e soltar.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 2


CRIANDO UMA WINDOW (JANELA) Template Properties Desvendando as Propriedades da janela que acabamos de criar.

Title : O ttulo que aparecer no topo da janela que voc est criando. Tag : Uma descrio para a sua janela ou um alerta ao utiliz-la. Poder conter qualquer texto e poder ser acessada em tempo de execuo atravs, por exemplo, da funo 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 visvel ou invisvel ao usurio. Enable: Define se a sua janela estar ativa ou inativa para o usurio. Titlebar: Define se a sua janela ter uma barra de titulo. Controlmenu: Define se a sua janela ter os itens direita da janela. MaxBox: Define se a sua janela ter MinBox : Define se a sua janela ter no controlmenu. no controlmenu. na lateral

ClientEdge: Define se a sua janela apresentar um padro de apresentao chanfrado.

PowerBuilder 9.0 Bsico

Captulo 2

10


CRIANDO UMA WINDOW (JANELA) Center : Centraliza automaticamente a sua janela. Resizable: Ativa a permisso de redimensionar a janela em modo de execuso. WindowType: Define o tipo da janela. Template Properties WindowState: Define o modo de apresentao em modo de execuo: Normal desenvolvimento. do mesmo tamanho que foi definido no

Maximized Ser redimensionada para o tamanho mximo da resoluo do monitor em modo de execuo. 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 padro. Voc pode associar qualquer imagem padro .ICO. O PowerBuilder disponibiliza vrios cones. NOTA : Alguns itens no foram descritos, devido a sua complexidade, sero vistos mais frente.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 2

11


CRIANDO UMA WINDOW (JANELA)

Com a janela aberta, e agora que conhecemos algumas de suas propriedades, vamos configurar-la. Assim comearemos nosso projeto, exemplo1. No template properties, na aba GENERAL digite : Tiltle Tag MenuName : Exemplo 01 : Janela principal do exemplo 01 : Deixe em branco

Marque as caixas de verificao conforme as figuras abaixo:

PowerBuilder 9.0 Bsico

Captulo 2

12


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

PREVIEW e veja como ficar a sua janela. Para fechar na janela que voc criou.

e voltar ao editor clique em

Podemos notar que o tamanho da janela no est no padro. 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 vrtice, verificar a mudana do cone do mouse, pressionar o boto 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 no estiver visvel clique na barra de rolagem (parte superior direita do template Properties

nas setinhas ai ao lado) e a ela aparecer.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 2

13


CRIANDO UMA WINDOW (JANELA) Ao selecionar o item Other nos deparamos com novos itens a serem configurados. Ento vamos entend-los para poder configur-los com segurana. X Posio inicial na esquerda do seu monitor. margem

Y Posio inicial que sua janela ocupar de cima para baixo. OBS : As duas opes s tero efeito se a opo Center estiver desmarcada. Width Define a largura da sua janela. Height Define a altura da sua janela. OBS: As opes s tero efeito, se a opo Normal em WindowState estiver selecionada. Pointer Define que o ponteiro do mouse ser apresentado quando o mouse passear pela janela.

O padro apresentado acima estabelece uma tomada completa do monitor, padro 800x600, resoluo que aconselho utilizar, devido a quantidade de informaes que o PowerBuilder, assim como outros Front-End, hoje disponibilizam.

PowerBuilder 9.0 Bsico

Captulo 2

14


CRIANDO UMA WINDOW(JANELA) J que comeamos 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 padro o mesmo do MS Windows.

Clique agora na aba ToolBar. Quando anexamos um menu em nossa aplicao, podemos definir automaticamente o seu posicionamento assim como deix-lo visvel, ou no. Esse procedimento pode ser padro, configurando-se a propriedade Toolbar ou em modo de execuo.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 2

15


CRIANDO UMA WINDOW (JANELA) Note que a maioria das propriedades de uma janela no PowerBuilder, j esta configurada para a utilizao do padro MS Windows, o que facilita bastante, voc s ter que configurar itens a qual queira personalizar sua aplicao. Nesta primeira vez, percorremos todos os passos para que pudssemos conhecer as caractersticas e propriedades de uma janela no POWERBUILDER, da prxima vez, ser muito mais tranqilo. SALVANDO A WINDOW (JANELA) Clique em SAVE e preencha :

Windows : w_001 Comments: Janela principal do exemplo 1 Clique em OK e sua Janela j estar criada e anexada a aplicao exemplo1.

Captulo 3
Criando um menu Escrevendo em PowerScript Como definir tipos de janelas Uso dos tipos de janela Tipos de controle

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 3

16


CRIANDO UM MENU A criao de objetos no PowerBuilder segue sempre o mesmo padro. A diferena recai na particularidade das propriedades de cada objeto que se queira criar. A criao de um menu segue os passos da criao de uma WINDOW (JANELA). Clique em NEW, na aba PB Object e selecione

. O Template de criao do MENU se abrir:

Coloque o mouse sobre o texto untitled0, clique no boto direito e selecione a opo do menu-popup Insert Submenu Item. O Template de Properties se abrir no lado esquerdo. Ento deveremos montar o nosso menu preenchendo os campos a seguir.

PowerBuilder 9.0 Bsico

Captulo 3

17


CRIANDO UM MENU

Clique em untitled0 e com o boto esquerdo do mouse selecione a opo 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 fcil no? No final dessa operao o seu quadro de menu ficar assim.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 3

18


CRIANDO UM MENU Clique em SAVE e preencha o quadro Menu com m_menu01 e o quadro Comments com Menu 01 da aplicao. Clique em OK. Seu menu j foi criado e salvo na aplicao 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 boto

de seleo

, e selecione o menu que acabamos de

criar, m_menu01. Pronto, nossa janela j possui um menu.

Agora clique em

PREVIEW e teste.

PowerBuilder 9.0 Bsico

Captulo 3

19


Escrevendo em PowerScript. At agora montamos nossa Janela e adicionamos um menu sem funcionalidade. Agora, vamos escrever nosso primeiro cdigo em PowerScript, O PowerScript a linguagem que o PowerBuilder aceita. Assim poderemos escrever comandos para que o PowerBuilder os execute. no template TREEVIEW, esquerda, D um duplo clique em uma janela de Script aparecer no centro.

A traduo desta tela : A aplicao exemplo1, este Script est direcionado para o evento open e este evento no prev cdigo de retorno. Agora digite conforme a tela abaixo:

Clique em

SAVE, depois em

RUN e veja-a sua aplicao executando.

Para fechar a aplicao clique em

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 3

20


Escrevendo em PowerScript. Para ficar mais fcil, e treinarmos um pouco mais vamos selecionar no TREEVIEW esquerda, com um duplo clique, m_menu01. O objeto menu ser editado. Clique com o boto esquerdo do mouse sobre o item m_menu01 e selecione Insert Submenu Item. Na opo que se abriu ao final da lista de itens digite Sair.

No template Properties a direita, no item MicroHelp, digite Sair do exemplo 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 opo Sair e ento vamos escrever em PowerScript o comando para sair da aplicao.

PowerBuilder 9.0 Bsico

Captulo 3

21


Escrevendo em PowerScript. Digite : Close(w_001).

Salve a aplicao Save e clique em Run para executar fechar a aplicao, clique em Sair do menu. Analisando :

e testar. Para

At aqui voc criou uma aplicao 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 prximos itens, iremos : x x x x Delinear e fazer a distino entre diferentes tipos de janela; Definir atributos de janela; Adicionar e implementar controles de janela; Implementar a herana 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 3

22


Como definir tipos de janelas Janelas MDI (Multiple Document Interface). Dificilmenta sua aplicao no apresentar uma tela principal. Normalmente utilizamos o padro 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 opo para exibio de mensagens resumidas para os usurios do seu aplicativo, MDIhelp tem um aspecto mais profissional do que as janelas independentes. Janelas Popup (Instantnea) As janelas instantneas so abertas normalmente a partir do interior de outra janela, Embora esta janela no possa ser encoberta por sua janela superior, ela pode se estender alm daqueles limites da janela superior. Quando a janela superior fechada ou minimizada a janela instantnea tambm fechada, ou minimizada. Janelas Child (filhas) As janelas filhas tambm so abertas a partir de outra janela, assim como as janelas instantneas elas possuem uma janela superior, mas com alguns conceitos fundamentais. x x x x Nunca podem existir fora da janela superior; Nunca so consideradas ativas; Quando maximizadas, s preenchem o espao da janela superior; No possuem menus.

Janelas Response (Resposta) As janelas de resposta so um tipo de janela instantnea. Elas diferem das janelas pelo fato de serem modais aplicao. Nenhuma outra janela na aplicao pode ser acessada enquanto a janela de resposta no for fechada. As janelas de resposta so muitas vezes chamadas de caixa de dilogos. Voc ir utilizar com freqncia essas janelas de resposta.

PowerBuilder 9.0 Bsico

Captulo 3

23


Uso dos tipos de janela MDI e MDI com microhelp Um MDI uma janela(quadro) que contm outras janelas (folhas). Voc s tem um quadro por aplicao mas pode ter muitas folhas dentro do seu quadro. Em qualquer aplicao complexa e em geral qualquer aplicao simples do MS WIndows voc deve empregar um quadro MDI. A MDI microhelp funciona bem como um meio fcil de transmitir uma mensagem para o usurio, sem interromper a aplicao. Incluso de controles de janela Um controle de janela qualquer elemento que voc insere em uma janela. A quase totalidade da PainterBar de janelas contm diferentes controles que voc pode colocar na sua janela. Os controles so necessrios para toda a janela. Sem controles uma janela simplesmente um retngulo sem qualquer funcionalidade, que exibido na sua tela.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 3

24


Tipos de controle Existem diversos tipos diferentes de controles, tais como : Boto de comandos O boto de comando um objeto que tem por finalidade executar processos quando clicados. Quando so acionados aparecem como se fossem empurrados enquanto o boto do mouse se encontra pressionado. Para inserir Command um boto de comando na sua janela, d um clique no cone Button na barra PowerBar1 e depois clique no local em que deve ficar o boto de comando no interior da janela que voc esta definindo. Boto de figura O boto de figura semelhante ao boto de comando, exceto pelo fato de terem figuras sobre eles. Para colocar na sua janela um controle boto de Picture Button e depois clique no local em que o figura, clique no cone boto 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 esttico O Texto esttico uma frase ou descrio exibida na sua janela. Para inserir Static Text, e depois um controle de texto na sua janela clique no cone um clique no local em que deve aparecer o texto esttico. Atravs 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.

PowerBuilder 9.0 Bsico

Captulo 3

25


Tipos de controle DataWindow

Para acrescentar um controle DataWindow sua janela, clique no cone DataWindows 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 prtico quando voc est tentando unir sua aplicao a um banco de dados, alm disto, so fundamentais para o desenvolvimento do PowerBuilder. A DataWindow tambm apresenta vrios recursos avanados de edio. Edio em vrias linhas

Para inserir na sua janela um controle de edio em vrias linhas, clique sobre MultLineEdit , e depois d um clique no local em que o controle de edio em vrias linhas deve ficar posicionado na janela que voc est definindo. Diferente dos controles de edio em nica linha (veremos a seguir), que s permitem a introduo ou visualizao de uma linha de texto, o controle de edio em vrias linhas um controle que permite a digitao pelo usurio de diversas linhas de texto. A edio em vrias linhas usada com freqncia nos comentrios de forma livre. Pelo fato de incorporarem muitos recursos de edio, as edies em vrias linhas so indispensveis durante a introduo de grandes quantidades de dados em campos. Entretanto, os controles de edio em vrias linhas no so utilizados com freqncia pois possvel conseguir maior funcionalidade atravs de uma coluna DataWindow.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 so controles que fazem referncia a mapas de bits que sero exibidos em uma janela. Da mesma forma que o texto esttico, as figuras so utilizadas apenas para a exibio de informaes, a partir da verso 7.0, links da web podem ser associados atravs dos Picture HiperLink control que tem as mesmas propriedades da Picture e mais o HiperLink. Edio em uma nica linha Para inserir na sua janela um controle de edio em uma nica linha, clique SingleLineEdite Control , e depois clique no local em que edio sobre em uma nica linha deve ficar posicionado na janela que voc esta definindo. Os controles de edio em uma nica linha so 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 edio em uma nica linha no so usados normalmente, porque a maior parte de entrada de dados realizada em uma DataWindow. Mscara de Edio

Para inserir na sua janela um controle de edio em uma nica linha, clique EditMask Control , e depois d um clique no local em que mscara sobre de edio deve ficar posicionada na janela que voc esta definindo. As mscaras de edio constituem um tipo de edio em uma nica linha e permitem voc especificar a formatao necessria no momento da entrada. Essa formatao definida quando voc acrescenta inicialmente o controle mscara de edio por meio do template Properties, Mask.

PowerBuilder 9.0 Bsico

Captulo 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 edio em uma nica linha e oferece ao usurio diversas opes para a resposta correta. Podem ser usadas barras de rolagem caso exista uma quantidade muito grande de opes, como ocorre com muitos outros controles de janela que se relacionam com entrada de dados. Caixa de verificao Para inserir na sua janela uma controle de caixa de verificao, clique sobre CheckBox control , e depois clique no local em que a caixa de verificao deve ficar posicionada na janela que voc est definindo. As caixas de verificao funcionam com questes do tipo sim-no que podem ser ativadas ou desativadas. Internamente, uma tabela de cdigos descreve o valor de dados retornado quando uma caixa de verificao ativada ou desativada. Botes de rdio e Caixas de grupo Para inserir na sua janela uma controle de caixa de verificao clique sobre RadioButton control , e depois clique no local em que o boto de rdio deve ficar posicionado na janela que voc esta definindo.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 boto de rdio um tipo de caixa de verificao. Vrios botes de rdio so agrupados no interior de uma caixa de grupo. Esses botes de rdio, assim como as caixas de verificao, podem estar ativos ou inativos. Somente um boto de rdio no interior de uma caixa de grupo pode ser ativado de cada vez. Manipulao de controles e janelas Muitas vezes voc desejar manipular seus controles. Atravs de um clique simples sobre um controle ser exibido o template de propriedades na lateral direita. Com um clique com o boto direito do mouse sobre o controle far surgir um menu de opes possveis para essse controle. Ordem e tabulao Voc pode utilizar o teclado em lugar do mouse. Para se deslocar entre os controles, o usurio tem de pressionar a tecla Tab Entretanto a ordem de tabulao padro dos controles de janela a ordem na qual esses controles so acrescentados. Para alterar a ordem de tabulao em uma janela, abra o menu Format e escolha Tab Order. Essa opo exibe a ordem de tabulao de cada controle, incrementada pelo valor de 10. Se quiser mudar a ordem de tabulao simplesmente altere a numerao dos controles. Em seguida escolha de novo Format e Tab Order, a fim de desativar a ordem de tabulao.

Captulo 4 Implementao da Herana de Janelas

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 4

29


Implementao da Herana de Janelas A herana o modo pelo qual usamos nossos prottipos no PowerBuilder. Atravs da herana o objeto filho obtm todos os controles, powerscript e atributos do objeto ancestral. Quaisquer mudanas adicionais efetuadas no objeto ancestral se refletem automaticamente no objeto filho. O Objeto filho pode ento acrescentar outras caractersticas ou modificar as que herdaram. As janelas e os menus podem ser herdados. Para entender melhor vamos criar uma janela herana da janela w_001 do nosso exemplo. Com o PowerBuilder aberto, no TREEVIEW esquerda, clique com o boto 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 ttulo do template da window que voc acabou de criar:

A janela w_002 foi criada como uma herana da w_001. Toda mudana que voc implementar na w_001 ser herdada pela w_002 e esta poder ter objetos que s pertenam a ela prpria. Essa funcionalidade de herana, assim como a DataWindow, faz a grande diferena no desenrolar de um projeto com PowerBuilder.

PowerBuilder 9.0 Bsico

Captulo 4

30


Implementao da Herana 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 ento escreva : OpenSheet(w_002, w_001, 2, Layered!) Salve o m_menu01. Execute a aplicao, clique na opo "Item 01" e veja a janela w_002 abrir dentro da janela w_001. Para uma melhor visualizao selecione no TREEVIEW esquerda a janela w_001, e no template "propriedade" selecione a opo "ClientEdge". Salve a janela w_001. Execute a aplicao.

Adquirido por : Fabrcio Moreira da Silva

Captulo 5
Projetando o menu

PowerBuilder 9.0 Bsico

Captulo 5

31



Projetando o menu.
O menu constitui uma parte importante de qualquer aplicao, seja ela padro MS Windows, Linux, Solares, MAC ou outro qualquer. Atravs do menu disparamos eventos, emitimos comandos e controlamos o fluxo de uma aplicao. 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 compreenso dos menus. Antes de projetar o menu importante ter uma idia da aparncia que voc deseja para ele. Usando uma planilha eletrnica, 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 aplicaes a fim de examinar as opes que elas apresentam nos seus menus. Dica : Para manter a coerncia dos menus, desenvolva um nico com todas as suas opes em vez de projetar vrios menus diferentes. Este menu mestre ser usado como layout bsico 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 conseqncia ao rodarmos a nossa aplicao 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 prpria 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 boto 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 operao, crie um novo quadro e digite &Sair. No item MicroHelp digite, Fechar a aplicao. 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 aplicao quando ento teremos.

PowerBuilder 9.0 Bsico

Captulo 5

33



Projetando o menu.
Selecione o item Arquivo : Clique em Sair ou tecle Alt + S para sair da aplicao. Ainda no item Arquivo pode-se implementar um pouco mais e tornar o menu mais agradvel 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 coerncia 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 marcado indica que a Toolbar estar visvel. . Este item

. Este item sem No Item ToolbarItemDown deixe desmarcado marcao indica que o ToolbarItemName selecionado aparecer sempre, como se estivesse pressionado.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 5

34



Projetando o menu.
No item ToolbarItemSpace mantenha 0 esse item define a quantidade de espaos 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 opo 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 coerncia 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, indica que a Toolbar estar visvel.

. Esse item

. Esse item sem No Item ToolbarItemDown deixe desmarcado marcao indica que o ToolbarItemName selecionado aparecer sempre como se estivesse pressionado.

PowerBuilder 9.0 Bsico

Captulo 5

35



Projetando o menu
No item ToolbarItemSpace mantenha 0. Esse item define a quantidade de espaos 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 opo Menu Cascate para o caso de seu menu ter subItens. Ser visto adiante. Os primeiros passos para montagem do menu principal da aplicao 01 j foram dados, adiante teremos a necessidade de incluir novos itens no menu, quando outras tcnicas sero apresentadas.

Adquirido por : Fabrcio Moreira da Silva

Captulo 6
A Linguagem PowerScript Eventos Ambiente de Script A Linguagem PowerScript Fundamentos da Linguagem PowerScript Variveis Tipos de Dados Escopo de Variveis Encapsulamento Objetos e Controle Execuo de uma funo por meio da notao de ponto Estruturas Arrays Arrays multidimensionais Arrays variveis Dados de objetos
(continua)

Captulo 6
Operadores Operadores Aritmticos Operadores binrios Operadores unrios Operadores de combinao Operador de string Operadores lgicos Operadores relacionais Operadores de conjuno Procedncia e Parnteses Comandos do PowerBuilder O Uso da estrutura IF Estrutura Choose Case Estrutura Choose Case Estrutura de iterao (Loops) Estrutura de Do Loop Estrutura For Next

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

36

 A Linguagem PowerScript.


At aqui foi aplicado o conceito de criao de janelas, janelas com herana e menu. Para continuarmos com o nosso exemplo teremos que abordar outros conceitos, como o uso de eventos, funes e da linguagem PowerScript. A linguagem PowerScript, sendo a linguagem de programao do PowerBuilder, controla o fluxo de um programa, atualiza banco de dados, exibe informaes 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 :
x x x x x Ambiente de Script Compreender os eventos Tipos de variveis do PowerScript Entender as estruturas, objetos e os controles Escopo das variveis

Programao a eventos no um conceito novo no desenvolvimento de software. A programao mais antiga tem natureza seqencial onde cada funo pode ser considerada como resultante de uma instruo anterior. Contudo, no mundo real, a maior parte das funes de negcios so baseadas em eventos, no sendo seqenciais. Funes baseadas em eventos so funes independentes e no obedecem a uma seqncia lgica. Em vez disso, certos eventos fazem com que as funes sejam executadas. Como conseqncia, o desenvolvimento de software se tornava difcil porque se tentava mapear o mundo baseado em eventos, nos programas de natureza seqencial. A codificao 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. Programao de eventos se adapta melhor maneira pela qual o usurio final ir utilizar sua aplicao. Programao de eventos um dos muitos pontos de destaque do PowerBuilder.

PowerBuilder 9.0 Bsico

Captulo 6

37



A Linguagem PowerScript.
importante diferenciar Programao baseada em eventos de Ambiente de programao baseado em objetos. Muito poderia ser dito a respeito da programao baseada em objetos (OOP Object-Oriented Programming). Para simplificar, as linguagens baseadas em objetos consistem em trs maneiras principais para realizar a atividade de programao. 1. Toda funo e grupo de funes inter-relacionadas (classes) no devem afetar os valores de dados em outras funes.A a isto chamamos "Encapsulamento". 2. A linguagem deve permitir que seja reutilizada grande parte do seu cdigo antigo e seja efetuada alterao. 3. As funes que herdam caractersticas de cada uma das outras devem ter a possibilidade de se personalizarem, quando necessrio. 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 esforo do desenvolvedor, e nele consiste em criar uma pequena parte de sua aplicao de cada vez. O projeto interativo um subproduto do desenvolvimento baseado em objetos, o que permite desenvolver sua aplicao em blocos, desde o incio 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 verso 8.0 do PowerBuilder foi implantado a WorkSpace onde este conceito, antes implcito, agora fica explicito desde a inicializao do seu projeto. O PowerBuilder visual, com implementaes que no existem em outras Ferramentas de desenvolvimento "visual". No PowerBuilder voc no programa sua aplicao, mas desenha a aplicao. Quando necessrio qualquer atividade de programao ela implementada por trs dos objetos projetados. Isto pode parecer um pouco estranho, mas na construo das nossas janelas e menus voc no programou para que isso acontecesse, simplesmente voc desenhou, utilizando os painter para desenvolver sua aplicao.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 aplicaes so exemplos de objetos. Os controles do PowerBuilder so construes que se associam aos objetos. Botes de comando, Figuras e DataWindow so exemplos de controles. Nota : H uma diferena 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 vrias "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 disponveis para o objeto em foco.

Function List: Exibe as funes pr-definidas para o objeto em foco. Declare Instance Variable : Exibe o template de declarao de variveis de Instancia, Compartilhadas e Globais, assim como, declaraes de funes externas Globais e Locais.

PowerBuilder 9.0 Bsico

Captulo 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 cdigo, 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. Sero disponibilizados os objeto(s), o template para declaraes de funes, seja do PB ou qualquer outro que voc queira definir (desenvolver), ou o template para declaraes e definies de variveis e funes 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 tcnicas tradicionais em outros Front-End onde um cdigo sempre tem que ser escrito para verificar a ocorrncia de eventos, e para reagir a cada evento. O PowerBuilder predetermina os eventos para os quais voc precisar, ou no, codificar. Entretanto pode ser necessrio um evento especial que o PowerBuilder no tenha previsto. Para definir seus prprios eventos: No quadro de seleo de eventos, selecione (New Event).

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

40

 A Linguagem PowerScript.


E o template para definio do novo evento do usurio ser disponibilizado.

Access : Neste caso ele ser de acesso "Publico" Return Type : O tipo de dados que ser retornado, Numrico, Caractere ou Binrio, se voc quiser que o evento retorne algum dado; quando definido como None no 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 relao com a ao que voc est definindo. Argument Type : Indica que tipo de dado ser repassado para o evento. Pode ser tanto um dado de contedo, como valores ou textos, quanto objetos, Windows, boto etc. Argument Name : O nome definido pelo usurio para o tipo de dado definido. Ao preencher esse campo ou quando necessitar de mais campos para definir outras variveis que o seu evento dever receber, deve-se pressionar a tecla "TAB" para que essa linha seja repetida. Throws : Cria um trigger para uma exceo que ocorra neste evento. External : Caso esteja criando um evento para controlar um objeto externo.

PowerBuilder 9.0 Bsico

Captulo 6

41

 A Linguagem PowerScript.


Event ID : Voc poder selecionar um dos eventos do PB que j esto definidos mas no disponibilizado para o objeto em foco. Tambm serve para selecionar um evento denominado "pbm_customX" onde X est em um intervalo de 1 a 75, mas neste caso, a passagem de parmetros padro, ou seja deve-se no selecionar nenhum valor. Fundamentos da Linguagem PowerScript Comentrio : // Barra dupla, Transforma em comentrio o restante da linha. Tambm possvel incluir entre /* e */ uma seqncia de texto ou at mesmo diversas linhas. Exemplo : X = Y // Isto comentrio ou /* Isto tambm comentrio */ Caracter de continuao : & E comercial, Algumas vezes uma linha de comando se estende alm do limite da janela o que pode tornar difcil depurao, a impresso ou a visualizao do PowerScript. Digite o caractere de continuao &, 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" & +"tinuao" Espao em branco : Espao em branco, ou seja, os espaos vazios entre variveis, constantes ou comandos so ignorados em PowerScript. A exceo acontece quando se est no interior de uma varivel string. Voc pode inserir entre os comandos a quantidade de espaos que desejar. Dica : Lembre-se que a tecla "Enter" no considerada como espao em branco. O retorno do cursor somente so ignorados quando est dentro de um comentrio. Variveis Como qualquer outra linguagem o PowerScript permite que voc utilize uma varivel para armazenar valores. Algumas dessas variveis so declaradas por voc, outras so declaradas pelo prprio PowerBuilder.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

42

 A Linguagem PowerScript.


Tipos de Dados Toda varivel tem um tipo de dado que informa ao desenvolvedor que tipo de informaes esto armazenadas na varivel, bem como tambm informa ao PowerBuilder qual a quantidade de espaos de armazenamento que dever ser reservado e ainda como tratar a varivel. Sintaxe: Tipo_de_dado nome_da_variavel Para declarar uma varivel do tipo inteira e numrica, utilizaremos: Int contador Onde : int o tipo de dado Integer (inteiro) no caso e contador o nome da varivel. Tipo de dado
Boolean(booleano) Charater (carter) Date (data) DateTime Decimal

Faixa de variao
TRUE ou FALSE

Observao

Integer (inteiro) Long (longo) String Time (hora)

Varivel lgica Pode ser abreviado como char De 01-01-1900 at 12-31- A data esta no formato mm-dd3000 aaaa. No so permitidos espaos em branco. 01-01-1900 00:00:00:0000 23:59:59:9999 At 18 dgitos (todos O separador pode estar em significativos) qualquer lugar entre os 18 dgitos. O tipo pode ser abreviado como dec De -32.768 at +32.767 Pode ser abreviado como int De -2.147.483.648 at +2.147.483.647 At 60.000 caracteres Todos os caracteres ASCII De 00:00:00:0000 A hora incrementada em At 23:59:59:9999 segundos

PowerBuilder 9.0 Bsico

Captulo 6

43

 A Linguagem PowerScript.


Tipo de dados
Blob

Faixa de variao

Observao

Double DragObject Object PowerObject Real UsingnedInteger UnsignedLong LongLong 64 bits

Tipo de dado no vinculado que significa objeto binrio extenso. usado geralmente para guardar figuras. De 2.23E-308 at 1.78E308 Preciso de 15 dgitos Contm o tipo de objeto arrastado. Contm o tipo de dados enumerado de um objeto do PowerBuilder. Qualquer objeto do PowerBuilder, inclusive estruturas. De 1.18e-38 at 3.40E+38 Preciso de 6 dgitos De 0 at 65.535 Pode ser abreviado como unsignedint ou uint De 0 at 4.294.967.295 Pode ser abreviado como ulong De 9223372036854775808 a 9223372036854775807.

Ateno : Todos os tipos de dados numricos incluem faixas de variao para cada tipo de dado. Alguns tipos de dados numricos tambm incluem dgitos de preciso (dgitos significativos) . Se voc efetuar um clculo com perda de dgitos significativos o PowerBuilder no informar sobre isto. Tenha cuidado !!! Alm disso, se voc exceder a faixa de variao do tipo de dado ocorrer o rollover. O rollover acontece quando um nmero excede o limite de uma faixa de variao, e recomea em outro extremo de faixa. Por exemplo, se voc armazenasse 32.766 em uma varivel inteira e acrescentasse cinco unidades a varivel 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 varivel inteira. Nenhuma mensagem de erro ir surgir se isso acontecer.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

44

 A Linguagem PowerScript.


Escopo de Variveis Em linguagens mais antigas, como COBOL e BASIC, qualquer varivel poderia ser acessada de qualquer local da aplicao . Atualmente , a maior parte das linguagens aceita o conceito de escopo de varivel. O escopo de varivel descreve onde uma varivel pode ser utilizada. O conceito de escopo de varivel importante. O escopo permite a um usurio escrever uma funo ou um evento sem sobrescrever as variveis de outra rea da aplicao, mesmo que as variveis tenham o mesmo nome. H quatro nveis de escopo no PowerBuilder. Escopo local : As variveis de escopo local (variveis locais) so variveis que voc declara dentro do seu script. As variveis definidas pelo usurio que voc emprega so, em sua maioria, variveis locais, que s existem no interior do evento ou da funo em que so declaradas. Exemplo : Voc pode declarar uma varivel int contador no evento "open" da janela w_001 e declarar tambm int contador no evento "close" da mesma janela w_001. Neste caso voc tem duas verses de contador isoladas uma da outra o que voc fizer no contador no evento "open" no influenciar o contador no evento "close". Escopo de instancia : As variveis de escopo de instancia so variveis s quais o objeto inteiro tem acesso. Se voc declara uma varivel como sendo uma varivel de instncia de um objeto ento qualquer evento, funo ou controle desse objeto ter acesso varivel. Escopo Compartilhado : Em uma aplicao com janelas MDI voc pode abrir mais de uma janela do mesmo tipo; ou seja, voc pode abrir mais de uma "w_001". Essas verses mltiplas da mesma janela so chamados instancias da janela. As variveis compartilhadas so variveis que podem ser compartilhadas por todos os objetos, funes ou controles de cada instancia de um objeto. Escopo Global : As variveis globais so acessadas por toda a aplicao. Elas nunca saem do escopo enquanto a aplicao no fechada. Voc no deve usar variveis globais se outro tipo de varivel servir. O uso de uma grande quantidade de variveis globais viola o princpio do encapsulamento.

PowerBuilder 9.0 Bsico

Captulo 6

45

 A Linguagem PowerScript.


Se voc define uma varivel global em um evento qualquer outro evento pode reinicializar a varivel sem que aquele evento tome conhecimento do fato. Encapsulamento O termo encapsulamento usado com freqncia na programao baseada em objetos. Quando uma funo ou um evento estiver encapsulado isso significa que ele independente. A funo encapsulada no pode ter suas variveis alteradas a partir do seu exterior. Alm disso, a funo encapsulada tambm no tem acesso a variveis fora dela prpria. O Encapsulamento uma questo de grau. Para elevar o encapsulamento de um sistema ao maior grau possvel existem algumas regras, a saber : 1. desejvel que todas as suas declaraes de variveis sejam locais. Essa a melhor maneira de encapsular seus dados, evitando que eles sejam danificados por outras funes e eventos. Nesse nvel mais elevado de encapsulamento uma funo ou um evento pode ser inserido em qualquer objeto e ainda funcionar de maneira apropriada. 2. Quando uma varivel local no funciona porque voc precisa preservar um valor ou ter acesso varivel a partir de outras reas do seu objeto, experimente usar uma varivel de instncia caso no resolva dessa forma use uma varivel compartilhada. 3. Como ltimo recurso utilize uma varivel global. As variveis globais podem ser acessadas e alteradas por qualquer objeto ou funo em uma aplicao.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

46

 A Linguagem PowerScript.


Objetos e Controle Na programao orientada a objetos, freqentemente voc precisa se referir a um controle do interior de outro controle, necessitar alterar suas configuraes originais (seus atributos) em tempo de execuo. Todo controle e todo objeto possui atributos ou variveis que controlam a sua funcionalidade e a sua aparncia. Podemos ter acesso aos atributos de um objeto ou controle por meio da notao de ponto. controle.atributo objeto.atributo Para definir um atributo voc referencia o controle ou o objeto em que se encontra o atributo. Essa referncia seguida por um ponto (.) e pelo nome do atributo. A maior parte dos objetos e controles tem um atributo booleano chamado visible (visvel) que estabelece se o objeto ou controle pode ser visto na tela. Suponha que exista um objeto boto (cb_01) na janela w_001. Para definir o atributo para o boto cb_01, usaramos a seguinte notao: w_001.cb_01.visible = FALSE // boto est invisvel Voc tambm pode verificar a propriedade do boto usando a seguinte instruo IF: IF w_001.cb_01.visible THEN {executa alguma funo} END IF Execuo de uma funo por meio da notao de ponto Voc tambm utiliza a notao de ponto para executar funes. Todo objeto bem como todo controle, tm um conjunto de funes que podem ser executadas em seu interior.

PowerBuilder 9.0 Bsico

Captulo 6

47

 A Linguagem PowerScript.


A funo Hide compartilhada pela maioria dos controles e objetos, e estabelece o atributo visible como FALSE. Para ocultar o boto cb_01 na janela w_001 atravs de uma funo ao contrrio de ocult-lo por meio de um atributo, use a funo: w_001.cb_01.Hide () No mesmo patamar teremos Show para estabelecer o atributo visible como TRUE. Para tornar o boto cb_01 visvel na janela w_001 atravs de uma funo use a funo 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 () ou This.Hide () ou This.Show () A notao de ponto utilizada largamente em linguagens orientada a objetos. Por ser uma linguagem totalmente estruturada voc pode navegar pela estrutura dos objetos atravs da notao 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 usurio abriu o menu Arquivo e escolheu a opo Sair. Voc pode usar a funo TriggerEvent no PowerBuilder com a finalidade de forar 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

48

 A Linguagem PowerScript.


Estruturas Voc usa as estruturas para criar seu prprio tipo de dados. As estruturas contm muitas variveis inter-relacionadas diferentes de diversos tipos agrupadas sob um nome nico. As estruturas permitem que voc faa a movimentao dos dados e usando um nico nome, para fazer referncia a eles. Criando uma estrutura. Clique em New, selecione PB Object e clique em Structure

O template para a criao da estrutura bem simples, com um quadro para a seleo do tipo de dados e um quadro para a definio do nome da varivel, ao final clique em salvar. Nota : sempre importante voc utilizar a padronizao para nomes de objetos, funes e etc.

PowerBuilder 9.0 Bsico

Captulo 6

49

 A Linguagem PowerScript.


Voc acabou de criar uma estrutura global. O PowerBuilder tambm 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 pertena, clique em Insert no menu principal e selecione Structure, abrindo o painter de criao de estrutura. Ao salvar essa estrutura ela s poder ser acessada dentro da instncia 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 no uma varivel. Ainda preciso declarar variveis usando a sua estrutura, e depois utilizar a notao de ponto para obter acesso s variveis no interior da estrutura. Para um melhor entendimento vamos criar uma pseudo-estrutura: Nome da estrutura Varivel 1 string Varivel 2 string Varivel 3 string Em PowerScript : // cria a varivel identifica_usuario com o modelo de dados da // estrutura str_identifica str_identifica identifica_usuario //criando variveis locais com o mesmo padro de dados da estrutura string nome string sigla, senha : : : : str_identifica s_nome s_sigla s_senha

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

50

 A Linguagem PowerScript.


//atribuindo dados a variveis 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 so sries de variveis indexadas do mesmo tipo de dados. Voc declara um array colocando um nmero entre colchetes logo aps uma declarao de dados. Ao declarar uma varivel inteira de nome X criamos uma nica clula de inteiro na memria. Int x Acrescentando [5] declarao 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 nmero entre colchetes X[1] X[2] X[3] X[4] X[5]

PowerBuilder 9.0 Bsico

Captulo 6

51

 A Linguagem PowerScript.


Arrays Multidimensionais Se a declarao de um array tiver mais de um conjunto de nmeros 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[2,1] X[3,1] X[4,1] X[1,2] X[2,2] X[3,2] X[4,2] X[1,3] X[2,3] X[3,3] X[4,3] X[1,4] X[2,4] X[3,4] X[4,4] X[1,5] X[2,5] X[3,5] X[4,5]

Onde : Int x[linha, coluna] Array variveis Os arrays variveis so arrays cujo tamanho no definido no momento da declarao. Para declarar um array varivel deixe o nmero 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 posio 35 // com o dado 1234 Int x [35] = 1234

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

52

 A Linguagem PowerScript.


Dados de objetos Os objetos que voc declara constituem um tipo de dados. Esses tipos de dados especiais so chamados de instncias do seu objeto. O principal uso das variveis de instncias a abertura de vrias verses da mesma janela em um quadro MDI. Desejando abrir duas janelas w_001 voc poderia usar o seguinte trecho de cdigo: W_001 janela1 // declara a primeira instncia de w_001 W_001 janela2 // declara a segunda instncia 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: aritmticos, de strings, lgicos e de agrupamento. x x x x Operadores aritmticos so usados em clculos matemticos; Operadores lgicos so utilizados para realizao de testes de condies; Operadores strings executam funes sobre variveis do tipo string; Operadores de agrupamento so os parnteses esses afetam a ordem na qual os outros operadores sero executados;

Operadores Aritmticos. Os operadores aritmticos podem ser divididos em trs categorias : x x x Operadores binrios; Operadores unrios; Operadores de combinao;

PowerBuilder 9.0 Bsico

Captulo 6

53

 A Linguagem PowerScript.


Os operadores binrios exigem dois operandos (variveis ou constantes) Os operadores binrios do PowerBuilder esto relacionados na tabela abaixo:

Smbolo ^ + * / =

Nome Exponenciao Adio Subtrao Multiplicao Diviso Igualdade

Exemplo a^b a a a a a +b -b *b /b =b

Descrio Eleva a, potncia representada pelo expoente b Soma a + b Subtrai b de a Multiplica a por b Divide a por b Atribui o valor de b em a

Os operadores unrios requerem um nico operando. Os operadores unrios do PowerBuilder encontram-se na tabela abaixo.

Smbolo + ++ --

Nome Negativo Positivo Incremento Decremento

Exemplo -a +a a ++ a --

Descrio Simboliza o valor negativo de a Simboliza o valor positivo de a Incrementa uma unidade ao valor de a Decrementa uma unidade ao valor de a

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

54

 A Linguagem PowerScript.


Os operadores de combinao so operadores binrios que combinam as caractersticas de dois operadores , o operador de igualdade e o de adio ou subtrao. Como os operadores de combinao so binrios, eles exigem dois operandos. Smbolo += -= *= /= ^= Nome Plus Equal Minus Equal Times Equal Divide Equal Power Equal Exemplo a+=b a-=b a*=b a/=b a^=b Descrio como igual a como igual a como igual a como igual a como igual a

Defina Define Define Define Define

a, a, a, a, a,

a a a a a

+b -b *b /b ^b

O nico operador de string do PowerBuilder usa um sinal de adio (+) para concatenao. String x1 = Power String x2 = Builder String x3 = x1 + x2 O valor resultante em x3 : PowerBuilder Os operadores lgicos testam se uma condio verdadeira ou falsa. H dois tipos de operadores lgicos: os operadores relacionais e os operadores de conjuno.

PowerBuilder 9.0 Bsico

Captulo 6

55

 A Linguagem PowerScript.


Os operadores relacionais so sempre binrios e, portanto, exigem dois operandos. Smbolo Nome = Igual > < >= <= <> Maior que Menor que Exemplo a=b a>b a<b Descrio Retorna TRUE se a igual ab Retorna TRUE se a maior que b Retorna TRUE se a menor que b Retorna TRUE se a maior ou igual a b Retornar TRUE se a menor ou igual a b Retorna TRUE se a no igual a b

Maior que ou igual a>=b a Menor que ou igual a<=b a No igual a <> b

Todo operador relacional que no retorna TRUE, retorna FALSE. Os operadores de conjuno tm expresses relacionais com seus operandos. Os trs operadores de conjuno do PowerBuilder so dois operadores binrios , (AND e OR), e um operador unrio, (NOT). Suas funes podem ser vistas na tabela verdade abaixo:

a TRUE TRUE FALSE FALSE

b TRUE FALSE TRUE FALSE

a AND b TRUE FALSE FALSE FALSE

b OR b TRUE TRUE TRUE FALSE

Not a FALSE FALSE TRUE TRUE

A primeira linha pode ser lida como Se a TRUE e b TRUE, ento a AND b TRUE, a OR b TRUE e NOT a FALSE

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

56

 A Linguagem PowerScript.


Procedncia e Parnteses Certas operaes tm precedncia sobre outras. Por exemplo, 5 + 4 * 3 pode parecer que resulta em 27, porque 5 + 4 = 9 e 9 * 3 = 27. Na verdade, essa equao resulta em 17, porque a multiplicao (*) tem precedncia sobre a adio (+). Desse modo 4 * 3 avaliado primeiro totalizando 12, em seguida somado o valor 5 a esse resultado. Para que o resultado fosse 27, teramos que escrever : Comandos do PowerBuilder A linguagem PowerScript contm dois tipos de instrues: funes embutidas (ou internas) e comandos. Embora existam muitas funes internas h somente trs tipos principais de comando: os comandos de atribuio que atribuem um valor a uma varivel; as estruturas de deciso que consistem em instrues IF e instrues Choose Case; e as estruturas iterativas (ou de loops), que consistem em loops Do e loops For...Next. As estruturas de deciso so comandos que avaliam variveis. O PowerBuilder aceita dois tipos de estruturas de deciso: a estrutura IF..ElseIf..Else...End (ou apenas a estrutura IF) e a estrutura Choose Case. O Uso da estrutura IF A instruo IF avalia varivel. Com base nessa avaliao a instruo IF realiza alguma forma de ao. 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 comandos ELSE Um comando ou conjuntos de comandos END IF (5 + 4) * 3

PowerBuilder 9.0 Bsico

Captulo 6

57

 A Linguagem PowerScript.


IF a < b THEN Um comando ELSEIF a < c THEN Um comando ELSEIF a > d THEN Um comando ELSE Um comando END IF ou conjuntos de comandos ou conjuntos de comandos ou conjuntos de comandos ou conjuntos de comandos

Voc pode ter quantas clusulas ELSEIF desejar em uma instruo IF. O Uso de instruo IF uma forma eficiente de controlar o fluxo do seu programa de acordo com as informaes existentes. Estrutura Choose Case A estrutura CHOOSE CASE avalia uma nica varivel de diversas maneiras diferentes. Choose Case varivel_a_ser_testada Case expresso 1 Um comando ou conjuntos Case expresso 2 Um comando ou conjuntos Case Expresso 3 Um comando ou conjuntos Case ESLE Um comando ou conjuntos END Choose

de comandos de comandos de comandos de comandos

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 6

58

 A Linguagem PowerScript.


Exemplo: Choose Case salario Case is > 4000 Um comando ou Case 2000 to 3000 Um comando ou Case 2000, 2100,2200 Um comando ou Case 5000 Um comando ou Case Else Um comando ou END Chosse Estrutura de iterao (Loops) As estruturas de loops so construes que causam a execuo de uma srie de comandos um certo nmero 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 implementao. Do While condio 1 Conjunto de comandos 1 Loop Do Until condio 2 Conjunto de comandos 2 Loop Do Conjunto de comandos 3 Loop Until condio 3 Do Conjunto de comandos 4 Loop While condio 4 conjuntos de comandos conjuntos de comandos conjuntos de comandos conjuntos de comandos conjuntos de comandos

PowerBuilder 9.0 Bsico

Captulo 6

59

 A Linguagem PowerScript.


Estrutura For Next Outro tipo de estrutura de loop o loop For.. Next que combina a iterao e o incremento de um contador. For varivel_numrica = inicio TO fim { Step incremento } Conjunto de comandos Next For a = 1 to 10 b=b+a Next For a = 100 to 1 Step -1 b=b+a Next

Adquirido por : Fabrcio Moreira da Silva

Captulo 7
Transaes de Bancos de Dados Definindo uma transao Montando a transao em PowerScript O uso do SQL no PowerBuilder

PowerBuilder 9.0 Bsico

Captulo 7

60

 A Linguagem PowerScript.


Transaes de Bancos de Dados. Os objetos de transaes so 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 transao. Embora voc possa definir sua prpria varivel de transao o PowerBuilder lhe oferece uma varivel padro, SQLCA. Um objeto (ou estrutura) de transao como SQLCA possui quinze campos. Dez desses campos precisam ser preenchidos pelo desenvolvedor, os outros cincos so usados para uma rea de retorno depois que voc efetua a chamadas de SQL. Atributo DBMS Database UserId DBParm DBPass Lock LogId LogPass ServerName AutoCommit Tipo de dado String String String String String String String String String Boolean Descrio nome do tipo de banco de dados nome do banco de dados ao qual voc esta se conectando Identificao do usurio que esta se conectando ao banco Especfica de um DBMS senha que ser usada para conexo com o banco de dados. nvel de bloqueio nome ou identificao do usurio que ir se conectar ao servidor senha usada para a conexo ao servidor nome do servidor no qual reside o banco de dados Indicador automtico de Commit, (TRUE) automtico.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 7

61

 A Linguagem PowerScript.


Atributo SQLDBCode Tipo de dado Long Descrio Cdigo de sucesso ou falha da operao de SQL mais recente: 0 = Sucesso; 100 = Nenhum conjunto de resultados retornado; -1 = Erro (Use SQLDBCode ou SQLErrText para obter os detalhes). O Nmero de linhas afetadas. O cdigo de erro do fornecedor do banco de dados. A mensagem de erro do fornecedor do banco de dados Dados de retorno especficos do DBMS

SQLDBNRow s SQLDBCode SQLErrText

Long Long String

SQLReturnDa String ta Definindo uma transao Transao DataBase Usurio Senha CONEXO : : : : : SQLCA TESTE joao 12345 VIA ODBC

Montando a transao 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;

PowerBuilder 9.0 Bsico

Captulo 7

62

 A Linguagem PowerScript.


//Testando a conexo IF SQLCA.SQLCode <> 0 THEN Messagebox (DataBase, Erro ao conectar) HALT END IF Definindo uma transao Transao DataBase Usurio Senha CONEXO : : : : : SQLCA TESTE joao 12345 NATIVA ORACLE

Montando a transao em PowerScript. sqlca.DBMS sqlca.database sqlca.userid sqlca.dbpass sqlca.logid sqlca.logpass sqlca.servername sqlca.dbparm // Conectando CONNECT USING SQLCA; //Testando a conexo IF SQLCA.SQLCode <> 0 THEN Messagebox(DataBase, Erro ao conectar) HALT END IF = = = = = = = = "O73 Oracle 7.3" "joao" "12345" @ORACLE_PROD DelimitIdentifier='No',Block=1000

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 mtodo comum para atualizao e recuperao 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 no tenha percebido, mas escrever instrues em SQL pode ser um trabalho penoso. Voc obrigado a conhecer alm da sintaxe de SQL, as colunas das tabelas que deseja acessar. O PowerBuilder responde a essa exigncia atravs do seu Painter de SQL.

O cone DataBase fornece acesso ao DataBase Administration um ambiente visual que proporciona um total controle de acesso, edio e desenvolvimento de bancos de dados.

PowerBuilder 9.0 Bsico

Captulo 7

64

 O uso do SQL no PowerBuilder.

No cone DB Profile DataBase Profile voc pode criar, modificar e excluir uma conexo.

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 bnus, pressione o boto esquerdo e arraste para o template Object Layout onde voc poder visualizar a tabela bonus.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 7

65

 O uso do SQL no PowerBuilder.

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

PowerBuilder 9.0 Bsico

Captulo 7

66

 O uso do SQL no PowerBuilder.


Close : Fecha a tabela em foco. New : Habilita a criao de Index, Foreign Key, Primary Key e a tabela em foco. Coluna para

Edit Data : Edita a tabela no formato Grid, Tabular ou Livre permitindo incluso, alterao e excluso de dados. DataPipeline : Ativa o template de PipeLine. O PipeLine um objeto do PowerBuilder que auxilia na construo, manuteno, cpia e exportao de dados. Alter Table : Habilita o template para a alterao fsica da tabela, nome da coluna, tamanho do campo etc. Drop Table : Exclui fisicamente uma tabela. Print Definition : Imprime a definio da tabela em foco. Export Sintaxe : Exporta a sintaxe de criao para o parmetro de ODBC selecionado, da tabela em foco. Properties : Exibe as propriedades da tabela.

Adquirido por : Fabrcio Moreira da Silva

Captulo 8
DataWindow Objeto DataWindow Fonte de dados Interface inteligente Interface com o usurio 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)

Captulo 8
Personalizando sua DataWindow Composite Crosstab (planilha) FreeForm (Formulrio livre) Graph (Grfico) Grid (Grade) Group (Grupo) Label (Etiquetas) N-up (Mltiplas linhas) Ol 2.0 RichText Tabular Cores e Bodas

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 informaes sobre a fonte de dados. Inclui tambm informao de formatao que descreve como o dado deve ser apresentado no controle DataWindow. A informao codificada no objeto DataWindow usada pelo ncleo da DataWindow para fornecer uma interface inteligente entre o cliente e o servidor em tempo de execuo. Buffers so associados ao objeto DataWindow para armazenar os dados. Estes dados so referenciados como result set.

PowerBuilder 9.0 Bsico

Captulo 8

68

 Fonte de dados


Uma das informaes encapsuladas no objeto a fonte de dados. Existem dois tipos de fontes de dados: x x Relacional, que deve executar um comando SELECT em uma tabela ou view, ou um EXECUTE PROCEDURE No relacional, para importar arquivos seqenciais (nos formatos TXT, DBF, CSV e XML) ou pela digitao do usurio.

Interface inteligente O ncleo do objeto administra todo o relacionamento que deve existir entre a mquina cliente e o servidor de banco de dados. Por exemplo, o ncleo da DataWindow sabe onde existe um item de dado alterado, quando um item de dado obrigatrio, qual o tipo de dado e quando um valor passa pelas regras de validao. Antes de o processamento iniciar o ncleo da DataWindow realiza todas essas checagens nos dados assegurando a validade dos mesmos. Interface com o usurio O PowerBuilder fornece uma variedade de features para criao de uma interface com o usurio atrativa e amigvel. Permite que se escolha o estilo de apresentao dos dados recuperados. Os estilos possveis so: tabular, grid, freeform, label, N-up, OLE, rich text, groups, graphs, crosstabs, e composite. Exemplo:

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 8

69

 Como criar um objeto DataWindow


O PowerBuilder tambm fornece outras facilidades para melhorar o formato padro de apresentao. Por exemplo, podemos reorganizar e classificar os itens de dados. Podemos, tambm, adicionar elementos grficos como linhas, crculos e retngulos, botes, figuras, etc.

New. 1. Na PowerBar1 clique em 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

PowerBuilder 9.0 Bsico

Captulo 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. 2. 3. 4. 5. Quick Select; SQL Select; Query; Store Procedures; External.

Quick Select. No PowerBuilder a forma mais simples de definir a fonte de dados. Voc no escreve nada, apenas desenha com o mouse o tipo de dado. Esta opo impe alguns limites pois a navegao entre a tabela s possvel atravs dos seus relacionamentos. O Tipo de SELECT utilizado o mais simples, apenas a clusula WHERE suportada.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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, padro ANSI (ODBC) e padro do seu banco, com a conexo nativa. Query O mesmo tipo de comando SELECT da opo 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 construo de objetos DataWindow. Stored Procedure Esta seleo retorna uma lista de stored procedures gravadas no banco de dados atualmente conectado. Uma stored procedure um conjunto de comandos SQL que executam uma operao no banco de dados. Quando escolhemos uma stored procedure da lista o objeto DataWindow constri o result set da DataWindow em funo das colunas recuperadas pela stored procedure selecionada. O uso de Stored Procedures pode incrementar a performance pela reduo: do nmero de passos que a DataWindow percorre para recuperar dados do trfego na rede

x x

O DBMS compila a stored procedure no momento da sua criao. External O PowerBuilder possibilita que o desenvolvedor fornea externamente a fonte de dados para construo da DataWindow. Para isso o padro EXTERNAL foi disponibilizado. Tal opo exige que se informe o nome do dado e o formato para cada coluna.

PowerBuilder 9.0 Bsico

Captulo 8

72

 Montando uma DataWindow com SQL Select


Quando selecionado o SQL Select, o template para seleo das tabelas disponveis no banco de dados conectado apresentado. Ao fundo o template de construo da DataWindow receber a sua seleo. 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

representa o Join entre as tabelas. Um duplo relacionamentos onde clique sobre o smbolo do Join abrir o template de possibilidades de juno da tabela, sempre com a opo definida com foco.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 8

73

 Montando uma DataWindow com SQL Select


A tabela a seguir, descreve as possibilidades de Join.

Smbolo *= =* > < <= >= <>

Descrio Tabela A = tabela B e linhas da tabela A que no tenham correspondncia em B Tabela A = tabela B e linhas da tabela B que no tenham correspondncia 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 tambm pode especificar um Join manualmente. Para isso clique no Join e selecione a(s) coluna(s) para realizao desse Join. Ao cone trmino 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 opo excluir em seguida clique no boto Delete.

PowerBuilder 9.0 Bsico

Captulo 8

74

 Montando uma DataWindow com SQL Select


Template de SQL Neste template, localizado na parte inferior do template DataWindow, existem algumas ferramentas de auxlio na construo do seu comando SQL, so elas: Template SQL

Onde : Sort : Seleciona as colunas para a classificao do resultado da query. A colunas selecionadas faro parte da clausula Order By. Where : Define o critrio de seleo 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 seleo feita pelo desenvolvedor. Compute : Cria uma nova coluna, com referncia, ou no, 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 relatrio a renda composta pelo salario + gratificao. mais lgico trafegar pela rede somente a informao de renda do que as informaes de salrio e gratificao que sero somadas na mquina cliente. Para excluir uma coluna computada basta limpar a sua especificao na pasta Compute.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 8

75

 Montando uma DataWindow com SQL Select


A clusula Where, se existir, contm o critrio lgico do relacionamento entre as tabelas escolhidas. Se no desejarmos recuperar todas as linhas do banco de dados, devemos acrescentar um critrio lgico para seleo das linhas. Normalmente a clusula Where formada por colunas do banco de dados, colunas computadas e argumentos de recuperao, fornecidos pela aplicao ou pelo usurio. Argumentos O PowerBuilder permite que voc defina argumentos. Argumentos so variveis que sero encaminhadas na chamada de execuo da query, com o propsito de filtrar a seleo. Selecione no menu principal, item Design e sub item Retrieve Arguments para exibir o template de definio:

Escreva o nome do argumento e o tipo de varivel. Ao final clique em OK. Outro mtodo muito interessante que o PowerBuilder disponibiliza o modo Syntax, da sua query, onde voc poder incluir manualmente (digitando direto) definies mais elaboradas na sua query. No Menu principal, selecione Design e sub item Convert to Syntax para retornar ao modo grfico. Ento, selecione Design e sub item Convert to Graphics. Ateno : Algumas implementaes no sero suportadas no modo Grfico mas funcionaro perfeitamente no modo Syntax.

PowerBuilder 9.0 Bsico

Captulo 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 padres de sua seleo, tanto em estilo quanto em recuperao de dados. Para retornar ao template do SQL clique em Entendendo o template da DataWindow. Data Source.

No painter Design da DataWindow voc pode movimentar os objetos a vontade at que melhor lhe sirva o Layout. Para Alterar o contedo dos label, que est em negrito, basta selecion-los com um clique.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 8

77

 Montando uma DataWindow com SQL Select


Toda alterao ser representada automaticamente no template Preview. Para atualizar os dados no template preview clique em Personalizando sua DataWindow O painter DataWindow fornece vrios recursos para formatao da interface com o usurio: x x x Estilos de apresentao predefinidos. Funes para gerao de relatrios Funes para ajuste do formato das colunas e seus cabealhos. Preview.

O PowerBuilder fornece vrios estilos de apresentao predefinidos para auxiliar na formatao dos dados. Cada estilo de apresentao representa um formato diferente.

PowerBuilder 9.0 Bsico

Captulo 8

78

 Personalizando sua DataWindow


Composite O Estilo composite consiste em um Objeto DataWindow com vrios objetos DataWindow inseridos. Trata-se de uma maneira bem profissional de apresentar um relatrio pequeno com vrias informaes de estilos e origem, distintos ou no.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 8

79

 Personalizando sua DataWindow


Crosstab (planilha) O estilo de apresentao crosstab apresenta os dados de forma sumarizada, em clulas subordinadas a uma linha ou coluna.

PowerBuilder 9.0 Bsico

Captulo 8

80

 Personalizando sua DataWindow


FreeForm (Formulrio livre) O estilo de apresentao freeform muito flexvel. Com este estilo, as colunas e seus labels so distribudos na vertical. possvel organizar as colunas automaticamente em vrios agrupamentos verticais atravs da especificao da altura mxima de uma coluna no painter DataWindow. Por default a DataWindow tem somente um campo em cada linha.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 8

81

 Personalizando sua DataWindow


Graph (Grfico) O estilo de apresentao grfico fornece uma apresentao grfica do result set em vrios estilos. Podemos escolher entre vrios estilos, de duas e trs dimenses, incluindo grfico de barras, linha, rea, pizza, etc.

PowerBuilder 9.0 Bsico

Captulo 8

82

 Personalizando sua DataWindow


Grid (Grade) O estilo de apresentao grid exibe os dados em colunas separadas por linhas de grid. Em tempo de execuo, ou no modo preview, o estilo grid permite que se arraste o grid vertical de uma coluna para aumentar ou diminuir a sua largura alm de trocar a seqncia das mesmas. No modo design, no se pode movimentar as colunas. Podemos, no entanto, trocar a ordem da coluna, executando o modo preview e arrastando as colunas para a posio desejada.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 8

83

 Personalizando sua DataWindow


Group (Grupo) parecido com o estilo tabular, mas ele simplifica a construo de um objeto DataWindow tabular com agrupamentos. Quando se escolhe o estilo group, o template DataWindow exibe caixas de dilogo para definir cabealho de agrupamentos, gerar subtotal de agrupamentos e total geral para os campos numricos .

PowerBuilder 9.0 Bsico

Captulo 8

84

 Personalizando sua DataWindow


Label (Etiquetas) Apresenta os dados na forma de etiquetas. Podemos escolher o estilo da etiqueta a partir de uma relao ou especificar uma configurao personalizada.

N-up (Mltiplas linhas) Suporta a exibio de mltiplas linhas, repetidas horizontalmente. til quando a linha de detalhe estreita.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 mquina cliente.

RichText Uma DataWindow com o estilo de apresentao RichText, permite: x x x x Carregar arquivos RTF (RichText Format) Incluir cabealhos e rodaps Usar vrias fontes, cores e tamanhos dentro de um nico controle Fornecer funes de edio ao usurio

PowerBuilder 9.0 Bsico

Captulo 8

86

 Personalizando sua DataWindow


Tabular Exibe as colunas de dados em linhas no controle DataWindow. Formata um cabealho sobre cada coluna. Podem-se movimentar as colunas livremente, agrup-las e personalizar cabealhos.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 8

87

 Personalizando sua DataWindow


Cores e Bodas Ao trmino da etapa de criao da DataWindow, surgir o template para definio do estilo de borda, cores e distncias entre as bands (faixas). Aconselha-se manter o default nesta etapa de criao. Tais dados podem ser alterados facilmente no template da DataWindow e, ainda com uma melhor visualizao dos resultados.

Marque o item Save caractersticas padro.

as

default

para

criar

DataWindow

com

Captulo 9
Recuperao de dados a partir de uma DataWindow Funes para o controle DataWindow Montando um Objeto DataWindow Aperfeioando a visualizao da DataWindow Vinculando duas DataWindow Vinculando objeto DataWindow a um controle DataWindow Incluindo controle DataWindow a Window Incluindo parmetros de atualizao Rotina de incluso Rotina de alterao Rotina de Excluso

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

88

 Recuperao de dados a partir de uma DataWindow.


No PowerBuilder basicamente toda recuperao e atualizao de dados so realizadas por controles de DataWindow associados com objetos de DataWindow. O Objeto DataWindow mantm o controle sobre a fonte de dados sua formatao, validao e atualizao. O Controle DataWindow usado para exibir os dados selecionados no objeto DataWindow. Sendo a interface entre o banco de dados e o usurio nesse controle que devemos inserir os cdigos PowerScript que se faro necessrios para a manipulao correta da base de dados como; incluso, alterao, validao e excluso. Para tanto o controle DataWindow disponibiliza algumas funes j programadas que facilitam muito a manipulao de dados na DataWindow. No controle DataWindow est disponibilizado uma lista de eventos prprogramados, ao contrario de outras linguagens, o PowerScript no precisa de uma programao para detectar se um evento foi ou no disparado. Os eventos disponveis no controle DataWindow sempre so disparados quando a condio qual eles foram programados acorrerem, o evento CLICKED! ser disparado quando o controle DataWindow sofrer a ao do clique do mouse, independente, se nesse evento houver uma codificao PowerScript ou no.

PowerBuilder 9.0 Bsico

Captulo 9

89

 Recuperao de dados a partir de uma DataWindow.


O PowerBuilder 9.0, disponibilizou alguns novos eventos, mas ainda no esto trigados a aes, segundo a Sybase em breve estaro, a saber: DoDefaultAction DoHitTest DoNavigation DoSelection GetChildCount GetDefaultAction GetDescription GetFocusObject GetHelp GetHelpFile GetHelpTopic GetKeyboardShortcut GetName GetRole GetSelection GetValue

A DataWindow disponibiliza vrias funes pr-programadas de manipulao de dados, na tabela a seguir descreveremos essas funes.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

90

 Funes para o controle DataWindow.


Funo DataWindow AcceptText CanUndo Retorno Integer Boolean Descrio
Aplica o contedo da edio de um controle DataWindow do item corrente ao buffer da DataWindow. Retorna TRUE se a ltima edio pode ser desfeita para a linha e coluna especifica e FALSE se a ltima edio no puder ser desfeita. Retorna o nmero de categorias em um grfico especifico do controle DataWindow. Retorna o nome de uma categoria especifica de um grfico em um controle DataWindow. Retorna o nome do controle DataWindow. Apaga os textos selecionados em no controle de edio de um controle DataWindow, Se o estilo for RichText apagar os textos selecionados na DataWindow. Apaga todos os itens da lista associada com a coluna especificada no controle de DataWindow. Cpias o grfico especificado no controle de DataWindow para o clipboard. Copia o texto selecionado no controle de edio para a linha e coluna do controle de DataWindow para o clipboard. Para uma apresentao de estilo RichText DataWindow, copia o texto selecionado no controle de DataWindow. Copia o texto selecionado, quadros, e campos de edio em um controle de DataWindow como uma linha de texto formatado com RichText. So includos bitmaps e campos de edio na linha.

CategoryCount CategoryName ClassName Clear

Integer String String Integer

ClearValues Clipboard Copy

Integer Integer Integer

CopyRTF

String

PowerBuilder 9.0 Bsico

Captulo 9

91

 Funes para o controle DataWindow.


Funo DataWindow Create Retorno Integer Descrio Cria um objeto de DataWindow usando o cdigo fonte especificado, substituindo o objeto DataWindow no controle DataWindow especificado com o novo objeto de DataWindow. Exibe a definio Crosstab na caixa de dialogo, onde o usurio poder modificar a definio em tempo de execuo. Corta o texto selecionado do controle de edio em uma linha e coluna da DataWindow e guarda no clipboard. Para um estilo de apresentao RichText DataWindow, corta o texto selecionado no controle DataWindow. Retorna o nmero de dados em uma srie, em um grfico do controle DataWindow informado. Cancela o Retrieve em progresso. Retorna o cdigo de erro gerado pelo banco de dados. Esta Funo esta obsoleta DBErrorCode uma e ser descontinuado em uma liberao futura. Cdigos de erro de banco de dados esto agora disponveis como argumentos de evento. Devolve uma linha que contm o texto da mensagem de erro gerado por um erro de banco de dados. DBErrorMessage uma funo obsoleta e ser descontinuada em uma liberao futura. Devolve o nmero de linhas que foram apagadas do controle DataWindow, mas no foram atualizadas no de banco de dados.

CrosstabDialog

Integer

Cut

Integer

DataCount

Long

DBCancel DBErrorCode

Integer Long

DBErrorMessage

String

DeletedCount

Long

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

92

 Funes para o controle DataWindow.


Funo DataWindow DeleteRow Describe Drag FilteredCount Find Retorno Integer String Integer Integer Long Descrio Apaga a linha especificada no controle de DataWindow. Retorna informaes sobre a estrutura do controle DataWindow. Comeos ou fins o arrastamento no controle de DataWindow. Devolve o nmero de linhas que no so visveis por causa do filtro atual. Sintaxe 1: procura a prxima linha em um controle DataWindow no qual os dados satisfaam uma condio especificada. Sintaxe 2: Para um estilo RichText acha o texto especificado no controle e reala o texto se achou. Voc pode especificar a direo de procura e se procura palavras inteiras ou em partes Retorna o nmero da categoria especificada do grfico no controle de DataWindow. Procura o inicio de uma linha especificada para a primeira quebra para o grupo especificado no controle de DataWindow. Procura a prxima ocorrncia de texto no controle e reala, enquanto aplica os critrios em uma chamada prvia da funo de procura (find). Esta funo s se aplica a controles de DataWindow cujo contedo tem o estilo de apresentao RichText. Identifica as colunas editveis que o usurio no preencheu. Retorna o nmero das sries do grfico no controle DataWindow. Cria um formulrio HTML que contm colunas para uma ou mais linhas.

FindCategory

Integer

FindGroupChange

Long

FindNext

Integer

FindRequired FindSeries GenerateHTMLForm

Integer Integer Integer

PowerBuilder 9.0 Bsico

Captulo 9

93

 Funes para o controle DataWindow.


Funo DataWindow GenerateResultSet GetBandAtPointer Retorno Long String Descrio
Retorna um result set EAServer de um objeto PowerBuilder rodando como um componente em EAServer. Retorna uma string que contm a faixa na qual o ponteiro fica atualmente posicionado seguido por um carter (~t). Retorna o tipo de borda da coluna especificada no controle de DataWindow. So: Box!Lowered!NoBorder!Raised!Resize Border!ShadowBox!Underline! Recupera as mudanas feitas a um DataWindow. Guarda em uma varivel, o nome da coluna especificada da child DataWindow . Retorna o nmero da coluna no controle DataWindow que o usurio clicou ou clicou duas vezes. Retorna o nmero da linha no controle DataWindow que o usurio clicou ou clicou duas vezes. Retorna o nmero da coluna atual no controle DataWindow. Retorna o nome da coluna atual no controle DataWindow. Cria uma referncia a uma instncia especificada do servio especificado. Retorna os valores de dados nas sries no grfico do controle de DataWindow. Tambm veja GetDataValue. Informa porcentagem que uma fatia explodida em um grfico tipo pie (torta).

GetBorderStyle

Border (enumerated ) Long Integer Integer Long

GetChanges GetChild GetClickedColumn GetClickedRow

GetColumn GetColumnName GetContextService GetData

Integer String Integer Double

GetDataPieExplode

Integer

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

94

 Funes para o controle DataWindow.


Funo DataWindow GetDataStyle Descrio Retorna estilos, dependendo do que for informado para se retornar. Existem 3 sintaxes diferentes. Integer Retorna o valor dos dados na srie especificada no grfico do controle DataWindow. String Retorna qual formato foi usado para exibio da coluna especificada do controle DataWindow. Long Recupera o estado completo de um DataWindow/Datastore em uma varivel Blob. Esta funo principalmente usada em aplicaes distribudas. Date Retorna o dado no padro Date na linha e coluna especificada do controle DataWindow. DateTime Retorna o dado no padro de DateTime na linha e coluna especificada do controle DataWindow. Decimal Retorna o dado no padro decimal na linha e coluna especificada do controle DataWindow. Double Retorna o dado no padro Numrico na linha e coluna especificada do controle DataWindow. dwItemSta Retorna o estado do item na linha e tus coluna especificada. Valores so: (enumerat DataModified!New!NewModified!NotModif ed) ied! Retorno Integer

GetDataValue

GetFormat

GetFullState

GetItemDate

GetItemDateTime

GetItemDecimal

GetItemNumber

GetItemStatus

PowerBuilder 9.0 Bsico

Captulo 9

95

 Funes para o controle DataWindow.


Funo DataWindow GetItemString GetItemTime GetMessageText
Retorna os dados no padro String na linha e coluna especificada do controle DataWindow. Retorna os dados no padro Time na Time linha e coluna especificada do controle DataWindow. Retorna o texto de mensagem gerado por String uma DataWindow CrossTab. GetMessageText uma funo obsoleta e ser descontinuada em uma liberao futura. MessageText est agora disponvel como um argumento em um evento DataWindow que pode ser definido associado com o pbm_dwnmessagetext. Retorna o nmero da primeira linha que Long foi modificada no buffer da DataWindow. Retorna uma string que contm o nome String da coluna ou controle de grfico apontado no controle DataWindow, separado por (~t), e o nmero da linha. PowerObject Retorna uma referncia para o nome do objeto pai. Retorna um Inteiro que contm o nmero Long da linha atual no controle DataWindow. Obtm o nmero da linha de uma linha Long afim em um controle DataWindow, identificada por uma linha diferente, associada com aquela linha. Obtm um identificador nico da linha em Long um controle de DataWindow do nmero da linha associado com aquela linha. Retorna o nmero da primeira linha Integer selecionada depois do nmero da linha especificada no controle DataWindow.

Retorno String

Descrio

GetNextModified GetObjectAtPointer

GetParent GetRow GetRowFromRowId

GetRowIdFromRow GetSelectedRow

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

96

 Funes para o controle DataWindow.


Funo DataWindow GetSeriesStyle Retorno Integer Descrio
Procura externamente o aparecimento de umas sries em um grfico. H vrias sintaxes, enquanto dependendo de que colocaes voc queira. Retorna a declarao de SQL atual que o controle de DataWindow est submetendo ao banco de dados. GetSQLPreview uma funo obsoleta e ser descontinuada em uma liberao futura. Sintaxe de SQL est agora disponvel como um argumento de evento. Retorna a declarao SELECT atual para o controle DataWindow. Retorna o estado atual das flags de status internas do objeto DataWindow e as guarda em uma varivel Blob. Esta funo principalmente usada em aplicaes distribudas. Retorna o texto no controle de edio na linha e coluna atual do controle DataWindow. Retorna os valores da transao do objeto DataWindow. Guarda o nmero da linha que ser atualizada no dwBuffer e o datatype que a identifica. GetUpdateStatus uma funo obsoleta e ser descontinuada em uma liberao futura. GetUpdateStatus est agora disponvel como um argumento no controle DataWindow DBError e eventos de SQLPreview. Retorna que a regra de validao usada na coluna especificada do controle DataWindow. Retorna um item especificado na lista de valores para a coluna especificada.

GetSQLPreview

String

GetSQLSelect GetStateStatus

String Long

GetText GetTrans GetUpdateStatus

String Integer Integer

GetValidate GetValue GroupCalc Hide

String String Integer Integer

Recalcula as quebras nos grupos no controle DataWindow. Faz o controle invisvel.

PowerBuilder 9.0 Bsico

Captulo 9

97

 Funes para o controle DataWindow.


Funo DataWindow ImportClipboard ImportFile ImportString InsertDocument Retorno Long Long Long Integer Descrio Copia dados do clipboard para o controle DataWindow. Copia dados de um arquivo para o controle DataWindow. Copia dados de uma string para o controle de DataWindow. Inserir um formato de richtext ou arquivo de texto em um controle DataWindow. Voc usa um parmetro de funo para especificar como o contedo novo adicionado, pode ser inserido a um ponto de insero, ou pode substituir todo um contedo existente. Esta funo aplica-se a controles DataWindow cujo contedo tem um estilo RichText. Insere uma nova linha antes da linha especificada no controle DataWindow. Retorna TRUE se a linha especificada na DataWindow foi selecionada; Retorna FALSE se a linha no esta selecionada ou maior que o nmero de linhas no controle DataWindow. Determina o nmero de linhas dentro um controle de edio que permite linhas mltiplas. Retorna o nmero de linhas que foram modificadas no controle DataWindow mas no foram contudo atualizadas no banco de dados. Usada especificamente para modificar um controle DataWindow com seu contedo string. Move o controle DataWindow para uma localizao especificada.

InsertRow IsSelected

Long Boolean

LineCount

Integer

ModifiedCount

Long

Modify

String

Move

Integer

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

98

 Funes para o controle DataWindow.


Funo DataWindow ObjectAtPointer OLEActivate Paste PasteRTF PointerX PointerY Position Retorno Descrio grObjectType Retorna o ObjectType e o nome da sria Integer Integer Long Integer Integer Integer
de qualquer ponto clicado do grfico . Ativa o OLE para o objeto OLE da linha e coluna especificada no controle DataWindow Insere o contedo do clipboard em cima da linha e coluna atual controle DataWindow. Cola dados de um controle RichText de uma linha em um controle DataWindow com estilo RichText. Retorna a distncia que o objeto esta da extremidade esquerda do controle DataWindow. Retorna a distncia que o objeto esta do topo do controle DataWindow. Sintaxe 1: Retorna a posio do ponto de insero no controle de edio em cima da linha e coluna do controle DataWindow. Sintaxe 2: Retorna a linha e coluna do ponto de insero ou o comeo e fim de texto selecionado em um controle DataWindow cujo contedo tem o estilo RichText. Acrescenta um evento ao fim da fila de mensagem para o controle DataWindow. Envia o contedo do controle DataWindow impressora atual. Esta funo tem vrias sintaxes. Cancela o trabalho de impresso e apaga o arquivo de spool (se existir) quando o contedo do controle DataWindow enviado pela funo de print. Substitui o texto selecionado dentro do controle edio pela string especificada.

PostEvent Print PrintCancel

Boolean Integer Integer

ReplaceText

Integer

PowerBuilder 9.0 Bsico

Captulo 9

99

 Funes para o controle DataWindow.


Funo DataWindow ReselectRow Retorno Integer Descrio
Acessa o banco de dados para recuperar todas as colunas que podem ser atualizadas a recuperao pode ser pontual. apaga todos os dados de um controle DataWindow. Apaga os dados, as categorias, ou as sries de um grfico dentro de um objeto DataWindow com uma fonte de dados externa. Reajusta a cor de um ponto de dados cor especificada para as sries. Faz com que controle DataWindow pare de usar um objeto de Transao. Reajusta e atualiza as flags do controle DataWindow. Muda a largura e altura do controle DataWindow. Recupera as linhas do banco de dados para o controle DataWindow. retorna o nmero de linhas atualmente disponvel no controle de DataWindow (todas as linhas recuperadas menos as excludas e as filtradas) e acrescenta as que foram includas. Cpias uma gama de linhas de um controle DataWindow para outro ou de um buffer para outro dentro de um nico controle de DataWindow. Descartes uma gama de linhas. As linhas no podem ser restabelecidas sem serem recuperadas do banco de dados. 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.

Reset

Integer

ResetDataColors ResetTransObject ResetUpdate Resize Retrieve RowCount

Integer Integer Integer Integer Long Long

RowsCopy

Integer

RowsDiscard RowsMove

Integer Integer

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

100

 Funes para o controle DataWindow.


Funo DataWindow SaveAs Retorno Integer Descrio Envia os dados representados no grfico especificado no controle DataWindow para o arquivo especificado, no formato especificado. Envia o contedo do controle DataWindow ao arquivo especificado, no formato especificado, com ou sem ttulos de coluna. Envia o contedo de um DataWindow em um arquivo texto padro ASCII. Avana o um controle DataWindow direo especificada o nmero especificado de linhas. Avana para a prxima pgina do controle DataWindow. Avana para aproxima linha do controle DataWindow. ScrollNextRow muda a linha atual mas no muda a coluna atual. Retorna para a primeira pagina do controle DataWindow. Retorna para a primeira linha, muda a linha atual mas no muda a coluna atual. Avana ou retrocede para a linha especificada, muda a linha atual mas no muda a coluna atual. Retorna o nmero total de carter e espaos (comprimento) no texto selecionado no controle de edio em cima da linha atual e coluna. Retorna o nmero da linha no controle de edio em cima da linha atual e coluna.

SaveAs

Integer

SaveAsAscii Scroll

Long Integer

ScrollNextPage ScrollNextRow

Long Long

ScrollPriorPage ScrollPriorRow

Long Long

ScrollToRow

Integer

SelectedLength

Integer

SelectedLine

Integer

PowerBuilder 9.0 Bsico

Captulo 9

101

 Funes para o controle DataWindow.


Funo DataWindow SelectedStart SelectedText SelectText Retorno Integer String Integer Descrio
Retorna a posio comeando no controle editado em cima da linha atual e coluna. Retorna qualquer texto se selecionado para a linha atual e coluna do controle DataWindow. Seleciona texto dentro de um controle DataWindow. Voc especifica onde a seleo comea e quanto caractere ir selecionar. Seleciona todo o contedo de um controle DataWindow com o estilo RichText . Seleciona a linha que contm o ponto de insero em um controle DataWindow com o estilo. Seleciona a palavra que contm o ponto de insero em um controle DataWindow com o estilo RichText. Retorna o nmero de sries no grfico especificado no controle DataWindow Retorna o nome das sries especificadas no grfico especificado no controle de DataWindow. Define a ao um controle DataWindow disparando um evento. SetActionCode uma funo obsoleta e ser descontinuado em uma liberao futura. Atribui o estilo de borda da coluna especificada no controle DataWindow. Aplica mudanas capturadas com GetChanges a um DataWindow. Esta funo principalmente usada em aplicaes distribudas. Salta para a coluna especificada da coluna atual no controle de DataWindow.

SelectTextAll SelectTextLine SelectTextWord SeriesCount SeriesName SetActionCode

Integer Integer Integer Integer String Integer

SetBorderStyle SetChanges

Integer Long

SetColumn

Integer

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

102

 Funes para o controle DataWindow.


Funo DataWindow SetDataPieExplode SetDataStyle Retorno Integer Integer Descrio Explode uma fatia do grfico PIE em um grfico de PIE Para o dado especifico apontado na srie especifica no grfico 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. Mudar a altura de cada linha em uma faixa especificada Define os critrios de filtro para o controle de DataWindow. Move o foco para o controle DataWindow. Move o formato de exibio para a coluna especificada do controle DataWindow. Aplica o contedo de uma varivel Blob de DataWindow recebido por GetFullState a um DataWindow. Esta funo principalmente usada em aplicaes distribudas. Aceita ao e informao de contexto sobre interao de usurio com o controle Web DataWindow em um browser de forma que HTML recentemente gerado possa refletir qualquer mudana. Move o valor da linha especificada e coluna do controle DataWindow. Atribui o status de uma linha e uma coluna especificada do controle DataWindow no buffer.

SetDetailHeight SetFilter SetFocus SetFormat

Integer Integer Integer Integer

SetFullState

Long

SetHTMLAction

Integer

SetItem SetItemStatus

Integer Integer

PowerBuilder 9.0 Bsico

Captulo 9

103

 Funes para o controle DataWindow.


Funo DataWindow SetPosition Retorno Integer Descrio
Sintaxe 1: Especifica se o controle DataWindow sempre exibe On TOP na ordem de frente-para-parte de trs dentro da window. Syntaxe 2: Movimenta um objeto dentro da DataWindow para outra faixa ou muda a ordem de frente-para-parte de trs de objetos dentro de uma faixa. Controla automaticamente novo desenho do controle DataWindow depois de cada mudana em suas propriedades ou contedos. Especifica que a linha especificada a linha atual do controle DataWindow. Especifica o foco na linha atual para o controle DataWindow. Especifica para a srie do grfico do controle DataWindow: Sintaxe 1: seta a cor das sries. Sintaxe 2: seta o estilo de linha e largura. Sintaxe 3: seta o padro de preenchimento ou smbolo para marcadores de dados nas sries. Define os critrios de sort para o controle de DataWindow. A escolha atual executada pela funo de sort. Especifica a declarao de SQL atual para o controle DataWindow. Muda declarao SELECT atual para o controle DataWindow. Muda o valor do TabOrder da coluna especificada no controle de DataWindow Substitui o texto para a linha atual e coluna do controle DataWindow com o texto especificado. Especifica os valores no objeto de Transao interno do controle DataWindow.

SetRedraw

Integer

SetRow SetRowFocusIndicator SetSeriesStyle

Integer Integer Integer

SetSort SetSQLPreview SetSQLSelect SetTabOrder SetText SetTrans

Integer Integer Integer Integer Integer Integer

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

104

 Funes para o controle DataWindow.


Funo DataWindow SetTransObject SetValidate SetValue ShareData Retorno Integer Integer Integer Integer Descrio
Especifica o objeto de Transao para a DataWindow e prov controle em cima da transao, inclusive a habilita o commit. Muda a regra de validao para a coluna especificada do controle DataWindow. Especifica o valor do item em uma lista valida ou na tabela de cdigo da coluna especificada do controle DataWindow. Compartilham dados entre o buffer Primrio do controle DataWindow e um buffer secundrio do controle DataWindow. Cancela o compartilhamento do buffer primrio para o controle de DataWindow. Todos os controles DataWindow secundrios sero desconectados e perdero seus dados. Faz o controle DataWindow visvel. Em uma DataWindow estilo RichText, exibe os painis para editar o cabealho e rodap ou esconde os painis e retorna a edio do texto principal. Classifica as linhas do controle DataWindow baseado em seus critrios de classificao (sort) atuais. Exibe Informaes sobre o controle editado em cima da linha e coluna corrente. Chama um evento especificado no controle de DataWindow e executa o script para o evento. Retorna o tipo do controle. Cancela as ltimas modificaes em um o controle de edio para a linha e coluna corrente. Envia ao banco de dados todos os Inserts, Deletes, e Updates do controle DataWindow.

ShareDataOff

Integer

Show ShowHeadFoot

Integer Integer

Sort TextLine TriggerEvent TypeOf Undo Update

Integer String Integer Object Integer Integer

PowerBuilder 9.0 Bsico

Captulo 9

105

 Montando um Objeto DataWindow


Nesta etapa, iremos nos aprofundar dos conceitos da DataWindow, iremos: x x x x Criar e visualizar um objeto DataWindow; Aperfeioar a visualizao 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 fixao.

NEW, no template selecione DataWindow e selecione o Clique em 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 verificao Retrieve on Preview esteja marcada. Clique em Next. Neste momento o PB 9.0, dever conectar com o banco de dados EAS Demo DB, caso isto no acontea, 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 disponveis da tabela ser disponibilizada para seleo. Selecione as colunas: id, fname, lname. Mantenha a ordem de seleo 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

106

 Montando um Objeto DataWindow


Na figura abaixo mostramos o template Quick Select.

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

Onde : Column Sort Criteria OR : Indica o nome da coluna selecionada; : Define como os dados recuperados sero apresentados, Ascendentes ou Descendente; : Realiza um filtro no momento da seleo dos dados, aceita todos os modelos do padro SQL; : Operador para combinaes lgicas.

PowerBuilder 9.0 Bsico

Captulo 9

107

 Montando um Objeto DataWindow


Os operadores lgicos aceitveis : Operadores = > < <> >= <= LIKE NOT LIKE IN NOT IN Exemplos : Descrio Igual a Maior que Menor que Diferente de Maior ou Igual a Menor ou Igual a Contm No Contm So iguais a So diferentes de

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

108

 Montando um Objeto DataWindow


Rolando a VerticalScrollbar esquerda, permitindo mltiplos critrios de filtragem. o template interno rolar,

Para continuar a construo do objeto DataWindow, clique em OK, Next e Finish.

O objeto DataWindow ser gerado, no template de DataWindow. Do mesmo modo, teremos a viso da seleo definida, no template Preview da DataWindow.

Agora salve a posteriormente.

DataWindow

gerada

para

que

tenhamos

acesso

PowerBuilder 9.0 Bsico

Captulo 9

109

 Montando um Objeto DataWindow


Clique em Save, e salve com o nome de d_lista01, em nossa

aplicao exemplo_1.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

110

 Aperfeioando a visualizao da DataWindow


No PowerBuilder 9.0 podemos modelar a DataWindow para uma visualizao mais apropriada ao negocio desenvolvido. Sempre que se cria um objeto DataWindow ele seguir uma apresentao padro, mas nem sempre a apresentao padro a melhor forma de visualizarmos os dados, utilizando os recursos de edio do painter de DataWindow, com facilidade poderemos maquiar o objeto DataWindow. Abra o objeto DataWindow: d_lista01

Note que, o cabealho no 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 clulas estaro marcadas com selecionadas. Agora na Painterbar2, selecione no cone

Alinhamentos, o cone as colunas se alinharo.

Alinhar pela direita,

Clique em qualquer parte branca do objeto DataWindow para remover a seleo.

PowerBuilder 9.0 Bsico

Captulo 9

111

 Aperfeioando a visualizao da DataWindow


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

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

112

 Aperfeioando a visualizao da DataWindow


Ajuste as colunas se baseando no Preview DataWindow, at conseguir uma formatao mas bem definida entre as colunas. Utilize os botes de ajustes para auxiliar na formatao, so eles: Contedo da coluna Justifica o texto. Alinha a direita Centraliza Alinha a esquerda

OBJETOS Alinha objetos esquerda Centraliza os objetos selecionados horizontalmente Alinha os objetos selecionados pelo topo Padroniza os espaos horizontalmente entre os objetos selecionados Padroniza os objetos selecionados quanto a sua largura Padroniza os objetos selecionados quanto a sua largura e altura

Alinha direita

objetos

Centraliza os objetos selecionados verticalmente Alinha os objetos selecionados pela base Padroniza os espaos verticalmente entre os objetos selecionados Padroniza os objetos selecionados quanto a sua altura

PowerBuilder 9.0 Bsico

Captulo 9

113

 Aperfeioando a visualizao da DataWindow

Com o boto

Selection, podemos selecionar objetos para incluir no linha no

LINE para incluir uma objeto DataWindow, selecione cabealho(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 operao. Voc tambm poder clicar no objeto linha e passar o mouse sobre o objeto, quando o cone do mouse mudar para uma cruz, clique no boto direito do mouse continue pressionando e arraste at o tamanho desejado. No final seu objeto DataWindow dever ficar com a aparncia da figura abaixo.

Clique em configuraes.

Save para salvar o objeto DataWindow com as novas

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

114

 Vinculando duas DataWindow


Na montagem do primeiro objeto DataWindow, selecionamos algumas colunas para visualizao. Nessa etapa, vincularemos outro objeto DataWindow e trabalharemos com seleo de dados, para tal, teremos que utilizar o Retrieval Argument e a clausula WHERE como critrio de seleo para o segundo objeto DataWindow, que ser passado em tempo de execuo. Para isso teremos que seguir os seguintes passos: 1. 2. 3. 4. 5. 6. Selecionar o Data Source e o estilo de apresentao; Selecionar a tabela e as colunas; Definir o Retrieval Argument; Especificar a clausula WHERE; Conferir no template Preview se esta tudo certo; Salvar o objeto DataWindow

NEW selecione DataWindow, selecione o estilo Freeform. Clique em Clique em OK. No template Wizard que ir se abrir, selecione SQL Select para o Data Source e certifique-se que a caixa de verificao Retrieve on Preview esteja marcada. Clique em Next. A caixa de dialogo Select Table aparecer, selecione a tabela customer. Clique em Open. Voc tambm pode selecionar a tabela com um duplo clique.

PowerBuilder 9.0 Bsico

Captulo 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 boto 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 Select para 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 definio 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 definies no objeto DataWindow, associado a esse nome, o tipo de varivel, se String, Numrica, Date, Time, Integer etc. Disponveis na caixa de seleo.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 varivel string, o tipo de dado do Retrieval Argument dever ser uma varivel do tipo string. Defina como a figura abaixo. Clique em OK, para continuar. Name Type : pass_id : 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, estaro disponveis para a seleo, selecione "customer"."id".

PowerBuilder 9.0 Bsico

Captulo 9

117

 Vinculando duas DataWindow


No quadro Operator, selecione = (igual). No Quadro Value, clique com o boto direito do mouse e no menu-popup selecione Argument e na caixa de dialogo, selecione a varivel 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 noo das aes 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

118

 Vinculando duas DataWindow


Aparecer a caixa de dialogo para se especificar o Retrieval Argument, isto se d pelo fato da opo Retrieve On Preview estar ligada, ento digite 101 e poder ver a recuperao dos dados relativos a customer"."id" = 101, definidos na clausula WHERE. Viso do objeto DataWindow.

PowerBuilder 9.0 Bsico

Captulo 9

119

 Vinculando duas DataWindow


Viso dos dados selecionados, DataWindow Preview.

Para selecionar outros dados no painter de construo do objeto DataWindow, Retrive, e informe um outro valor na caixa de dialogo do clique em Retrieval Argument.

Clique em exemplo1.

Save e salve com o nome de d_lista02, na aplicao

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

120

 Vinculando duas DataWindow


Com a criao do segundo objeto DataWindow para a tabela customers, temos que pensar que esses dois objetos sero includos 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 poluda e de difcil navegao. O que podemos fazer para esta melhora? 1. Rearrumar as colunas e labels; 2. Alinhar as colunas e labels; 3. Facilitar a visualizao 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 viso inicial do objeto que criamos :

PowerBuilder 9.0 Bsico

Captulo 9

121

 Vinculando duas DataWindow


Com base na edio e seguindo o caminho da alterao do objeto DataWindow d_lista01, altere o objeto d_lista02 para que ele tenha a aparncia abaixo. OBS: Os campos da DataWindow que aparecem em negrito chamamos de Label. Label uma descrio que identifica a coluna.

A novidade em relao a d_lista01 a coluna State, que apresenta uma visualizao 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 boto 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

122

 Vinculando duas DataWindow


Veja o exemplo:

Quando terminar de arrumar o objeto DataWindow d_lista02, clique em Save para salvar as alteraes. Dicas: Para trabalhar com as colunas e labels, utilize os botes de ajustes que descrevemos. Clicando em uma parte branca do objeto DataWindow com o boto esquerdo do mouse e mantendo-o pressionado, arraste o mouse sobre vrias clulas, (colunas e labels) uma caixa de seleo surgir, selecionando todas as clulas a qual a caixa de seleo estiver envolvendo. Veja figura.

Neste caso sero selecionados todos os campos a qual a caixa de seleo esta envolvendo.

PowerBuilder 9.0 Bsico

Captulo 9

123

 Vinculando objeto DataWindow DataWindow a um controle

Aps criar e salvar os objetos DataWindow esses objetos j esto 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 aplicao. Assim teremos uma janela com uma funcionalidade de recuperao de dados de uma base de dados. Para isso seguiremos os seguintes passos: 1. 2. 3. 4. Incluir o controle DataWindow a Window (janela); Incluir os objetos DataWindow ao controle DataWindow; Vincular a janela a aplicao; Executar e depurar a aplicao.

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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

124

 Incluindo controle DataWindow a Window (janela)


No template propriedades direita no item DataObject. Clique no boto de seleo mais direita e selecione o objeto DataWindow, d_lista01. Note que no foi possvel visualizar todo o objeto d_lista01 agora iremos redimensionar o controle para se poder visualizar todo o objeto. Clique com o boto 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 boto 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 tambm pode dar a eles o nome que desejar, mas sempre que possvel, siga as regras j vistas para identificao de controles e objetos. Agora repetiremos toda a operao anterior, para incluirmos o objeto DataWindow d_list02, em um novo controle DataWindow abaixo do controle dw_1.

PowerBuilder 9.0 Bsico

Captulo 9

125

 Incluindo controle DataWindow a Window (janela)


Veja como ficou:

Voc pode executar a sua aplicao e visualizar como o controle DataWindow ser apresentado na janela.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

126

 Incluindo controle DataWindow a Window (janela)


Mas notar que nenhum dado foi recuperado da base de dados porque ainda no 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, atravs da tabela customers. Usaremos a transao padro, a SQLCA, como j vimos em captulos anteriores. Os parmetros necessrios para serem informados so: sqlca.dbms sqlca.dbparm : Recebe o tipo de conexo nesse caso ODBC. : Recebe os parmetros de conexo como Nome do profile definido, o nome do usurio do banco e a senha de acesso para o usurio que esta pedindo a conexo.

// Aplica os parmetros do DBMS de teste, a transao SQLCA sqlca.dbms sqlca.dbparm ="ODBC" ="ConnectString='DSN=EAS Demo DB V9;UID=dba;PWD=sql'"

Aps a definio dos parmetros, conectamos ao banco. // Conecta com o banco Connect; O banco ser ativado e estar disponvel para acesso, para testarmos usamos: //Testando a conexo If sqlca.sqlcode < 0 Then MessageBox ("Erro: dados", & HALT End If Impossivel conectar com o banco de sqlca.sqlerrtext, Exclamation!)

PowerBuilder 9.0 Bsico

Captulo 9

127

 Incluindo controle DataWindow a Window (janela)


//Se tudo estiver OK //associamos o controle DataWindow a transao SQLCA //e recuperamos os dados dw_1.settransobject(SQLCA) dw_1.Retrieve() Nesse ponto, associamos o primeiro controle DataWindow a transao do banco agora associamos o segundo controle a mesma transao. dw_2.settransobject(SQLCA) Note que no faremos a recuperao dos dados neste momento porque os dados para este controle devero ser recuperados a partir da seleo no controle DataWindow dw_1. Para que o controle DataWindow dw_1 execute a seleo para o controle DataWindow dw_2 d um duplo clique no controle dw_1, procure na dropdown de eventos, o evento clicked e escreva em PowerScript o cdigo a seguir. //Cria a varivel numrica que recebera o cdigo para a //recuperao em dw_2 integer wk_id //Recupera a seleo wk_id = dw_1.GetItemNumber(row, "id") //Recupera os dados segundo a seleo em dw_1 dw_2.Retrieve(wk_id)

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

128

 Incluindo controle DataWindow a Window (janela)


Clique em executar. Teremos ento: Save e salve a sua aplicao e em Run para

Essa janela s tem a funcionalidade de consulta a partir de um pequeno dado se pode acessar uma gama maior de informaes pertinentes ao dado selecionado.

PowerBuilder 9.0 Bsico

Captulo 9

129

 Incluindo controle DataWindow a Window (janela)


O prximo passo ser o desenvolvimento de rotinas de incluso, atualizao e alterao. Com esses procedimentos teremos uma viso bem ampla de como se pode manipular dados atravs de controles DataWindow e de como simples e seguro faze-lo. A manipulao de dados com controles DataWindow, embora seja uma tarefa simples pode se tornar complexa assim como, to complexa for a sua aplicao 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 no se limita s caixas de dilogos e wizards disponibilizados pelo PowerBuilder 9.0. Atravs 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, alm disso, voc tambm poder trabalhar com CURSOR e PROCEDURE para recuperar dados em um objeto DataWindow. Uma outra forma de se trabalhar com um objeto DataWindow a utilizao de DataStore, o DataStore um controle DataWindow no visual, ou seja, um controle DataWindow invisvel, Quase todas as funcionalidades de um controle DataWindow esto disponibilizados, menos as funcionalidades visuais que no caberiam ao DataStore, tendo em vista que ele no permite visualizar dados e s e somente s, recuperar e manipular dados. Se voc entendeu o que um controle DataWindow, tenha certeza que tambm entendeu o que um DataStore. No decorrer desse captulo iremos exemplificar as diversas tcnicas de se trabalhar com o objeto DataWindow. Para que o exemplo comece a ficar mais completo iremos incluir a rotina de incluso de dados. Utilizaremos alguns conceitos interessantes que j foram explicados, mas no exemplificados, como criar um evento de usurio, chamar estes eventos e incluir objetos na janela.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

130

 Incluindo parmetros de atualizao


Em nosso exemplo, incluiremos agora trs rotinas: de incluso, de excluso e de atualizao dos dados no banco, para isto, incluiremos trs controles de boto de comando, e em cada controle adicionaremos sua programao PowerScript correspondente. Clique em CommandButton e clique do lado direito do controle

DataWindow dw_1, assim ser includo o controle CommandButton na janela w_001.

Como iremos incluir trs controles, clique com o boto direito mouse sobre o controle CommandButton que acabou de incluir na janela e no menu-popup que aparecer, selecione a opo Duplicate. Assim o controle ser automaticamente inserido na janela.

PowerBuilder 9.0 Bsico

Captulo 9

131

 Incluindo parmetros de atualizao


Repita a operao e teremos os trs controles na janela w_001.

Agora incluiremos a programao correspondentes cada controle, para que esse exera a funo a qual se vez necessria a sua incluso na janela.

Rotina de incluso
Clique no primeiro controle de boto de controle e selecione suas propriedades, no template que surgira direita preencha os atributos para esse controle, conforme a figura abaixo.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

132

 Rotina de incluso


A rotina de incluso 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 funo InsertRow (linha). Essa funo 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 nmero da linha que voc quer incluir long : retorna a linha que ser includa ou -1 se houver erro na tentativa de incluso da linha no controle DataWindow. D um duplo clique no controle cb_incluir e selecione o evento Clicked e escreva o cdigo PowerScript abaixo:

Praticando: No template em branco, clique com o boto do mouse direito selecionando Paste Special, e depois Object, na lista que surgir selecione dw_2. Agora coloque um ponto (.) aps dw_2, clique com o boto direito do mouse e selecione Function e Built-in. Na lista que surgir procure por InsertRow. Com um duplo clique selecione a funo. Agora coloque o zero(0) entre os parnteses. Pronto o PowerBuilder 9.0 montou para voc a funo InsertRow, o parmetro zero(0) ir inserir uma linha no final do Buffer do controle DataWindow fazendo desta linha, a linha corrente.

PowerBuilder 9.0 Bsico

Captulo 9

133

 Rotina de incluso


Voc poderia ter digitado direto, mas o PowerBuilder 9.0 disponibiliza o autoscript para facilitar a edio e evitar erros de sintaxe provenientes de esquecimentos de detalhes da funo. 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 contedo desse controle. Caso voc no o faa, a funo InsertRow (0), ir incluir uma linha aps a linha que estiver ativa, caso exista uma em dw_2, se no existir nenhuma linha ativa ir mostrar diretamente, ento 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 usurio. Ento sempre aconselhvel limpar o controle DataWindow, antes de uma incluso, para este tipo de visualizao que estamos utilizando existem outros modos de se exibir os dados que no se aplicaria esta regra. Para limpar o controle DataWindow utilizaremos a funo Reset (). Sintaxe: integer dwcontrole.Reset ( ) Onde: dwcontrole : o nome do controle DataWindow ou DataStore. Integer : Retorna 1, se a execuo foi bem sucedida e -1 se houver erro. Ento agora digite antes do comando dw_2.InsertRow (0), dw_2.Reset ().

Clique em executar.

Save e salve a sua aplicao em

Run

para

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

134

 Rotina de incluso


Clique no boto Incluir e teste.

PowerBuilder 9.0 Bsico

Captulo 9

135

 Rotina de incluso


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

Aps preencher as propriedate para o boto Gravar agora teremos que colocar o cdigo PowerScript para ser executado quando o boto for pressionado e esta ao deve ser de gravao na base de dados. Para tal, utilizaremos a funo UpDate().

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

136

 Rotina de incluso


Sintaxe: integer dwcontrole.Update ({ boolean accept {,boolean resetflag} }) Onde: dwcontrole : o nome do controle DataWindow ou DataStore. Integer : Retorna 1, se a execuo foi bem sucedida e -1 se houver erro. Accept : varivel booleana que informa ao PowerBuilder 9.0 se ele deve proceder aos testes de validao antes de gravar na base. x TRUE: (Default) procede ao teste e retorna se houver erro. x FALSE: grava na base. Resetflag : varivel booleana que informa ao PowerBuilder se ele deve resetar as flags de controle aps o update ou no. x TRUE: (Default) Reseta as flags. x FALSE: No reseta as flags.

D um duplo clique no controle cb_gravar, selecione o evento Clicked, e escreva o cdigo PowerScript abaixo:

Clique em executar.

Save e salve a sua aplicao e

em Run para

PowerBuilder 9.0 Bsico

Captulo 9

137

 Rotina de alterao


A rotina de alterao j esta pronta a combinao da rotina de consulta com a rotina de gravao. Ento voc pode clicar na dw_1, editar o item selecionado, alterar este item e clicar em Gravar. A novidade o terceiro boto, 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 boto Ler Dados (retrieve). Clique no CommandButton que esta no meio e preencha suas propriedades.

Clique na aba Clicked e digite os comandos para recuperao dos dados. Usaremos o Retrieve() igual para a recuperao no evento Open da aplicao.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

138

 Rotina de alterao


Clique em executar. Save e salve a sua aplicao e em Run para

Poderamos tambm automatizar a recuperao dos dados sem precisar incluir um boto para isto. Umas das solues seria incluir a rotina do boto Ler Dados na linha de IF aps o comando Commit. Outra soluo seria atualizar a dw_1 sem precisar usar o comando Retrieve (), assim no estaramos contribuindo para o trafego na rede e a aplicao ficaria muito mais rpida. Vamos demonstrar as duas embora, a segunda seja uma soluo mais profissional. A primeira no esta errada depende do enfoque do seu negcio. Por exemplo: imagine uma grande rede com grande volume de dados, e o usurio precise acessar vrios dados. E esses dados esto sempre sofrendo alterao. Ento se faz necessrio o uso do Retrieve, para cada atualizao ou grupos de atualizao.

PowerBuilder 9.0 Bsico

Captulo 9

139

 Rotina de alterao


Primeira soluo:

Para o segundo mtodo usaremos a aplicao da rotina de alterao do controle DataWindow dw_1. Atravs do uso do evento j disponibilizado pelo PowerBuilder 9.0 para controles DataWindow, UpdateEnd. Esse evento sempre disparado ao final de uma atualizao atravs 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 seleo de script ao centro da parte superior, selecione o evento UpdateEnd.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

140

 Rotina de alterao


Segunda soluo:

Para se incluir ou substituir dados em um controle DataWindow, utiliza-se funo SetItem. Para se recuperar dados de um controle DataWindow se utiliza funo GetItemNumber, GetItemString, GetItemDate, GetItemDateTime e GetItemTime. Cada funo 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 Row : o nome do controle DataWindow/DataStore. : Dado numrico que representa a linha do dado no objeto DataWindow. Column : Nome ou a posio (numrica) da coluna. Dwbuffer(opcional) : Identifica qual buffer o dado ser recuperado na DataWindow. Originalvalue(optional):Varivel booleana, que indica se a recuperao 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.

PowerBuilder 9.0 Bsico

Captulo 9

141

 Rotina de alterao


Segunda soluo: Sintaxe: integer dwcontrole.SetItem ( long row, integer column, any value ) integer dwcontrole.SetItem ( long row, string column, any value ) Onde: dwcontrole row column value : o nome do controle DataWindow/DataStore. : Dado numrico que representa a linha do dado no objeto DataWindow. : Nome ou a posio (numrica) da coluna. : Valor que dever ser includo na DataWindow.

Notando a sintaxe da funo SetItem verifica-se a necessidade de se informar que linha deve ser alterada. Essa informao s possvel se obter atravs do evento Clicked! da dw_1. Onde montamos a rotina de recuperao de dados para a dw_2. Para que se passe esse valor para um outro evento de um outro objeto, podemos criar uma varivel do tipo Instance, como definido anteriormente. Clique caixa de seleo de script a esquerda da parte superior, selecione Declare Instance Variable. Defina a varivel long wk_linha conforme a figura abaixo.

Agora clique na aba Clicked e atribua o valor da linha clicada (row) a varivel de instacia wk_linha.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

142

 Rotina de alterao


Segunda soluo:

Clique na aba Layout e de um duplo clique no controle DataWindow dw_2 combinando a funo SetItem com a funo GetItemNumber e GetItem String. teremos:

Para uma melhor documentao, sempre melhor utilizar o nome da coluna na sintaxe, mas pode-se utilizar o nmero (posio) que ela ocupa no banco de dados. Onde : id seria posio 1 e fname posio 2. Caso tenha implementado a primeira opo coloque as linhas dw_Reset( ) e dw_Retrieve( ) como comentrio para testar a segunda opo.

PowerBuilder 9.0 Bsico

Captulo 9

143

 Rotina de alterao


Segunda soluo:

Clique em executar.

Save e salve a sua aplicao e em

Run

para

Para completar este exemplo de manipulao de dados em um controle DataWindow. Inclua um boto de excluso de dados.

Rotina de Excluso

CommandButton e depois na posio da janela que voc Clique em quer incluir o boto(coloque logo abaixo do boto Gravar). E no template Propriedade preencha:

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

144

 Rotina de Excluso


Agora de um duplo clique no boto cb_excluir. No evento clicked, programe a rotina para excluso usando a funo DeleteRow. Sintaxe : integer dwcontrole.DeleteRow ( long row ) Onde : dwcontrole : o nome do controle DataWindow/DataStore. row : Dado numrico 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 incluso, a varivel wk_linha guardar a linha em que se clicou. Ento podemos utilizar esta mesma varivel para pegar a linha clicada. Note, que desta vez programamos o boto no modo Enable para desabilitado e este s estar habilitado caso se selecione uma linha excluir. A excluso em uma base de dados uma transao que deve ser cautelosa. Ps, no tem retorno. Ento devemos sempre pedir uma confirmao para executarmos esta tarefa. Para isto utilizaremos a funo 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 ateno. x Information! (Default) x StopSign! x Exclamation! x Question! x None! button: (opcional) Que tipo de boto se queira mostrar dependendo do tipo de questionamento que se faa. x OK! (Default) OK x OKCancel! OK e Cancelar x YesNo! Sim e No x YesNoCancel! Sim, No, e Cancelar x RetryCancel! Repetir e Cancelar x AbortRetryIgnore! Abortar, Repetir e Ignora

PowerBuilder 9.0 Bsico

Captulo 9

145

 Rotina de Excluso


Programando o boto. D um duplo clique no objeto DataWindow dw_1 no evento Clicked adicione o cdigo abaixo:

Agora de um duplo clique no boto Excluir e programe a rotina de excluso.

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

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 9

146

 Rotina de Excluso


Ento teremos:

Nesse nosso exemplo poderemos notar a exibio de uma mensagem de erro aps 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 no PowerBuilder. Veremos este processo mais adiante, mas se for retirado ou comentado a funo UpDate poderemos ver a funcionalidade da funo DeleteRow, apagando o item selecionado no controle DataWindow que nosso foco. Manipular dados em um controle DataWindow.

Captulo 10
DataWindow : Tcnicas avanadas Buffers Internos Detectar a validao Detectar o Tipo de dado Detectar regras de validao Detectar mudanas no item Usando Filtros Classificando Clusula Where para Update e Delete Modify e Describe Funo Evaluate( ) Propriedade Object Parametrizando com a clusula DATA

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

147

 DataWindow : Tcnicas avanadas


Neste captulo veremos algumas expresses utilizadas no controle DataWindow para acessar os dados de um objeto DataWindow, tais expresses permitem acessar um dado especfico ou retornar um grande volume de dado. Para isso teremos que entender um pouco mais sobre o controle DataWindow. Esse controle responsvel pela recuperao, manipulao e atualizao de dados no banco de dados, dados quando recuperados, sero armazenados em buffers internos do objeto DataWindow. Buffers Internos. Buffer Original Primary Delete Filter Descrio Dados recuperados do BD que no se alteram. a primeira imagem do original, aceita alterao e insero. Itens que foram apagados do buffer primrio. Dados que no sero mostrados, devido ao filtro de seleo definido no objeto DataWindow.

Esses buffers sempre sero criados na mquina cliente e l permanecero at a atualizao UPDATE() ou descarte dos dados pela aplicao que os solicitou. Toda manipulao de dado atravs de um controle DataWindow segue algumas regras para a sua transferncia entre o controle DataWindow e o buffer primrio. So elas: x x x x Detectar Detectar Detectar Detectar a validao; o tipo de dado; regras de validao; mudanas no item.

Aps essas regras retornarem todas como verdade ou zero, o dado do item selecionado ento transferido para o buffer primrio.

PowerBuilder 9.0 Bsico

Captulo 10

148

 DataWindow : Tcnicas avanadas


Detectar a validao. O controle DataWindow dispara a validao quando: 1. Quando a coluna que foi alterada perde o foco; 2. Quando a tecla Enter pressionada; 3. Ou a funo AcceptText( ) executada. Detectar o Tipo de dado. Todos os controles de edio so 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 no for compatvel o evento ItemError disparado. Detectar regras de validao Nessa etapa o dado submetido a regras de validao para a coluna. Estas regras so definidas no banco de dados ou na criao da DataWindow para cada coluna. Detectar mudanas no item O dado digitado comparado com o dado no buffer primrio da DataWindow. Se o dado no foi alterado, esta etapa termina, caso contrrio, o evento ItemChanged disparado possibilitando a execuo de alguma validao de usurio no evento ItemChanged. Aps a execuo da validao de usurio, se existir, o dado transferido para o buffer primrio. A execuo de um script do evento ItenError ser determinada pelos cdigos de retorno, so eles: Cdigo de retorno 0 1 2 3 Ao (Default) Rejeita o dado e exibe uma tela de mensagem de erro. Rejeita o dado sem exibir uma tela de mensagem de erro. Aceita o dado. Aceita o dado, sem alterar o buffer primrio e permite que o foco mude de coluna.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

149

 DataWindow : Tcnicas avanadas


Se o evento ItenChanged for disparado, a seqncia de execuo ser determinada pelos cdigos de retorno, so eles: Cdigo de Ao retorno 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 estaro sempre disponveis caso disparados, so eles : ROW DWO DATA Exemplo: dwo.Type dwo.Name : Retorna o tipo de controle que disparou o evento. : Retorna o nome da coluna que disparou o evento. Contm o nmero da linha do item que esta sendo alterado. Referncia para a coluna que disparou o evento. O contedo da coluna que disparou o evento.

PowerBuilder 9.0 Bsico

Captulo 10

150

 DataWindow : Tcnicas avanadas


Usando Filtros. O desenvolvedor poder limitar o acesso que o controle DataWindow tem aos dados seja por segurana ou para facilitar o tratamento pelo usurio. Assim poder com apenas um acesso a base de dados, disponibilizar os dados de vrias maneiras diferentes (filtrados). Como funciona: Depois que o objeto DataWindow recupera os dados, aplicase o filtro no buffer primrio gerando assim o buffer Filter com todas as linhas que no atenderam as condies determinadas pelo filtro. A funo utilizada a SetFilter (condio), para definir e aplicar o filtro utiliza-se a funo Filter (). sempre aconselhvel utilizar a funo SetRedraw ( boolean redraw ) em conjunto com a funo Filter( ) essa funo tem como parmetro TRUE ou FALSE. False - interrompe a montagem em tempo de execuo de um controle DataWindow. O que faz a aplicao do filtro ser mais rpido para grandes grades de dados. True - Ativa a montagem em tempo de execuo de um controle DataWindow. Exemplo: String s_filtro s_filtro = salario>1000 and departamento=Informtica 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 necessrio executar a funo GroupCalc( ) para se recalcular os agrupamentos.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

151

 DataWindow : Tcnicas avanadas


Classificando. Pode-se ordenara a recuperao de dados tanto no servidor quando no cliente. No servidor usamos o ORDER BY no comando SELECT. Em tempo de execuo utilizamos SetSort (). Para definir ou modificar a classificao corrente. Este mtodo possibilita a pesquisa pelo usurio por dados especficos. Sintaxe : integer dwcontrole.SetSort ( string format ) Exemplo : //Classifica dw_1, ascendente por nome e descendente por salrio dw_1.SetSort(nome A, salario D) Pode-se usar o nmero da coluna, com parmetro. dw_1.SetSort(#1 A, #10 D) Onde : # 1 A 10 D : : : : : obrigatrio antes do nmero da coluna; Posio da coluna; Ascendente; Posio da coluna; Descendente.

A funo SetSort( ) apenas define os critrio de classificao. Para efetivar a classificao na DataWindow, utilize a funo Sort( ). dw_1.Sort( ) Para uma base com grande volume de dados, utilize a funo SetRedraw( ).

Ao se classificar uma DataWindow com agrupamentos, faz-se necessrio executar a funo GroupCalc( ) para se recalcular os agrupamentos.

PowerBuilder 9.0 Bsico

Captulo 10

152

 DataWindow : Tcnicas avanadas


Conhecendo a funo UpDate (). Quando se utiliza a funo UpDate internamente o PowerBuilder executa vrios comandos de SQL. So eles: DELETE UPDATE INSERT : Um para cada linha antiga do buffer delete; : Um para cada linha antiga modificada nos buffers, Primary e Filter; : Um para cada linha nos buffers, Primary ou Filter.

Sempre que se chama a funo UpDate um comando de atualizao de banco enviado por vez. Se algum erro for retornado todo o processo de atualizao ser interrompido e o evento DBError do controle DataWindow que chamou a atualizao ser disparado. E a funo UpDate retornar -1. Para visualizar os comandos SQL gerados para atualizao dos dados no banco de dados acesse os argumentos do evento SQLPreview no controle DataWindow que chamou a atualizao. O PowerBuilder 9.0 controla as atualizaes 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 tcnica de analisar as caractersticas definidas pelo desenvolvedor na criao do objeto DataWindow. Estas caractersticas so definidas no painter DataWindow. Selecione na PowerBar1, Rows e UpDate Properties.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

153

 DataWindow : Tcnicas avanadas


O Wizard Specify UpDate Properties se abrir e as propriedades para as atualizaes estaro disponveis para seleo. So eles: Clusula Where para Update e Delete.

x x x

Key Columns; Key and Update Columns; Key and Modified Columns.

Key Columns : Somente a chave primria da tabela selecionada utilizada na clusula Where. Vrios usurios podem alterar o dado ao mesmo tempo. Key and UpDate Columns : A chave primria e as colunas atualizveis da DataWindow sero usadas na clusula WHERE. Esta opo pode notificar a outro usurio, que o item foi alterado. Key and Modified Columns : A chave primria e todas as colunas alteradas da DataWindow sero usadas na clusula WHERE. Esta opo permite que usurios alterem itens distintos. Allow Update : Habilita o update para a tabela. Se desligada a DataWindow apenas de leitura, normalmente utilizada para relatrios. UpDateTable Columns : Seleciona as colunas que sero atualizveis as colunas no selecionadas no sero atualizadas com a funo UpDate. Table to Update : Especifica a tabela que ser atualizada apenas uma tabela. Se existir junes na query da DataWindow apenas uma delas poder ser atualizada.

PowerBuilder 9.0 Bsico

Captulo 10

154

 DataWindow : Tcnicas avanadas


Key Modification : Define o modo de alterao da chave primria. Pode ser definida como: Apaga o item e inclui um novo item na base ou Atualiza o item corrente alterando a chave primria. Essa opo 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 sero excludos todos os itens nas tabelas relacionadas. Unique Key Columns: Especifica as colunas que fazem parte da chave primria.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

155

 DataWindow : Tcnicas avanadas


Modify e Describe, obtendo o mximo da DataWindow Sem dvida a DataWindow o mais poderoso recurso do PowerBuilder 9.0 para acesso a bases de dados possibilitando a criao de uma interface eficiente e de fcil utilizao. No PowerBuilder 9.0 podemos manipular um controle DataWindow e objetos DataWindow atravs das funes Modify e Describe. Sempre ouo que estas funes so as mais difceis de se utilizar das funes disponibilizadas pelo PowerBuilder 9.0. At concordo que em alguns casos seja um emaranhado de linhas de cdigo tornando bastante complexa a sua depurao, mas por outro lado, seguindo-se algumas regras veremos que no um bicho de sete cabeas. 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. Atravs do Modify pode-se alterar todos os atributos de um objeto ou controle DataWindow. Suponha que em tempo de execuo 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 tambm alterar os atributos do Painter de DataWindow contornando o problema de a DataWindow s deixar se especificar uma tabela para atualizao.

PowerBuilder 9.0 Bsico

Captulo 10

156

 DataWindow : Tcnicas avanadas


Suponha uma DataWindow com colunas exibidas de vrias tabelas e se queira atualizar dados em todas as tabelas. Tabelas do processo: empregado e salrio Passo 1: x Aplique o UpDate padro.

//Atualiza a tabela definida no painter DataWindow(empregado) Integer i_ret I_ret = dw_1.Update(TRUE,FALSE) FALSE Marca como no reiniciar as flags. IF i_ret = 1 THEN //desativa a atualizao 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 salrio aceitar UpDate dw_1.Modify(DataWindow.Table.UpdateTable = ~salario~ ) //Faz as colunas da tabela salario aceitarem Update dw_1.Modify(salario_nmero_empregado.UpDate = Yes) dw_1.Modify(salario_salario.UpDate = Yes)

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

157

 DataWindow : Tcnicas avanadas


//Atualiza a tabela salrio 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 - salrio) RollBack; END IF ELSE Messagebox(ERRO,Erro no UpDate da tabela empregado) RollBack; END IF //Desativa a tabela salrio 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 dw_1.Modify(empregado_nome.UpDate dw_1.Modify(empregado_endereco.UpDate dw_1.Modify(empregado_telefone.UpDate = Yes) = Yes) = Yes) = Yes)

//Faz a tabela "empregado" aceitar UpDate dw_1.Modify(DataWindow.Table.UpDateTable = ~empregado~) No foi to complicado. Apenas uma seqncia at os sinais (~) til, (~r) til + r e (~t) til + t, seguem uma seqncia. x x Para se incorporar uma string dentro de outra string, apstrofos(aspas simples) so reconhecidos como diferentes de aspas (duplas). Um apstrofo (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.

PowerBuilder 9.0 Bsico

Captulo 10

158

 DataWindow : Tcnicas avanadas


Alguns atributos do objeto DataWindow disponibilizam a utilizao de expresses. Voc pode nota-los com este boto ao lado do atributo.

o caso do atributo VISIBLE. Voc poder passar uma expresso atravs da funo Modify.

Coluna : salrio Expresso IF - dentro do painter DataWindow : If ( boolean, truevalue, falsevalue ) string s_mod s_mod = salrio.visible = 0~tIF (salrio > 1000,0,1) dw_1.Modify(s_mod) Neste exemplo, sempre que o salrio for maior que 1000 no ficar visvel.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

159

 DataWindow : Tcnicas avanadas


Todos os atributos esto disponveis no HELP do PowerBuilder 9.0.

PowerBuilder 9.0 Bsico

Captulo 10

160

 DataWindow : Tcnicas avanadas


Funo Evaluate() A funo Evaluate( ) deve ser utilizada com a funo Describe. A funo Evaluate, permite a avaliao de expresses na DataWindow. Sintaxe : "evaluate('expresso', linha)" Onde : expresso : expresso que se deseja avaliar linha : nmero da linha que se deseja avaliar a expresso Exemplo : O exemplo abaixo retorna a linha corrente da pgina atual e coloca como ttulo da janela w_1. string s_mod, s_linha s_linha = string(dw_1.GetRow()) s_mod = Evaluate(Page(). + s_linha +) w_1.Title = "Pgina " + dw_1.describe(s_mod) Evaluate com expresses condicionais Sintaxe : defaultvalue ~t expresso Onde : defaultvalue: Valor padro da propriedade. ~t : separador obrigatrio. expresso : expresso aplicada funo 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

161

 DataWindow : Tcnicas avanadas


Assim como a funo Modify atribui a DataWindow existe a funo Describe que recupera as informaes 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") Faa este teste no evento OPEN do exemplo1. Messagebox("Atributos da DataWindow", & + dw_1.Describe("DataWindow.Attributes")) x 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 function e selecione Controls in a DataWindow and their properties.

As funes Modify e Describe so muitos teis quando se trata de trabalhar mais profissionalmente com as DataWindow por esse motivo tente sempre que possvel utilizar estas funes. Seu projeto ficar sempre mais dinmico e o limite das suas funcionalidades esta no limite da sua criao.

PowerBuilder 9.0 Bsico

Captulo 10

162

 DataWindow : Tcnicas avanadas


Propriedade Object. Podemos utilizar a propriedade Object para acessar dados em um objeto DataWindow em forma de expresses. Essas expresses podem se referenciar ao nome da coluna, nmero 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 : Nmero 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 contedo da coluna salario no objeto DataWindow e guarda na varivel 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

163

 DataWindow : Tcnicas avanadas


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 a coluna. 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 : Clusula de acesso as linhas selecionadas na DataWindow. Retorna um ARRAY do mesmo tipo de dado definido para a coluna.

PowerBuilder 9.0 Bsico

Captulo 10

164

 DataWindow : Tcnicas avanadas


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 : Nmero da primeira linha a ser recuperada. endRowNum : Nmero 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 10

165

 DataWindow : Tcnicas avanadas


Parametrizando com a clusula DATA. Caso o nome da coluna seja desconhecido podemos parametrizar o acesso atravs do nmero 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 : Nmero da primeira linha a ser recuperada. startColNum : Nmero da coluna. Sempre retorna um nico valor do buffer primrio. //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 columnName startRowNum startColNum sndColNum

: Nome do controle DataWindow que se ir recuperar ou inserir dados. : Nome da coluna no objeto DataWindow. : Nmero da primeira linha a ser recuperada. : Nmero da coluna inicial. : Nmero da coluna final.

Retorna um ARRAY de estrutura do mesmo tipo de dados definido para a coluna e os limites informados.

PowerBuilder 9.0 Bsico

Captulo 10

166

 DataWindow : Tcnicas avanadas


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 clusula Data possibilita combinaes para manipulao 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 primrio 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 : Fabrcio Moreira da Silva

Captulo 11
PipeLine de dados

PowerBuilder 9.0 Bsico

Captulo 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 distribudos.

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 transferncia de dados, opes: x x x x Create-Add Table - Cria uma nova tabela, ela no 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 - Mantm 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 sero apontadas atravs de mensagens de erro. Update-Update/Insert Rows - Insere linhas novas no banco destino e atualiza as linhas j existentes se alguma informao sofreu alterao.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 11

168

 PipeLine de dados


Key : O nome da chave primria da tabela destino, normalmente a usada mesma chave na tabela do banco origem. Max Errors : A quantidade de erros que sua transferncia pode receber at ser suspensa. Commit de Commit. : A quantidade de instrues SQL executadas antes da instruo

No template de definio de dados pode-se definir como os dados sero recebidos pelo banco de destino. Source Name e Source Type no permitem alterao, os itens com fundo em branco, permitem alterao. x x x x x x x Destination Name Type Key Width Dec Nulls Initial Value - Altera o nome da coluna no banco destino. - Altera o tipo de dado na tabela destino. - Indica que itens faro parte da chave primria na tabela destino. - Altera o tamanho do item no banco destino. - Altera o nmero de casas decimais no banco destino - Indica que valores podem ter valores NULL. - Indica o novo valor padro para o banco destino.

PowerBuilder 9.0 Bsico

Captulo 11

169

 PipeLine de dados


Aps completar a definio 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 transferncia dos dados. Save para salvar a sua definio do pipeline para

Clique em

ser executada posteriormente. De o nome de U_COPIA_TABELA. O mtodo que acabamos de ver executa o Pipeline no ambiente de desenvolvimento. Pode-se usar o Pipeline em tempo de execuo para isso teremos que criar um objeto Pipeline e anexarmos a aplicao. Clique em New selecione PB Object e Standart Class.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 11

170

 PipeLine de dados


A caixa de dialogo para seleo do tipo de classe a ser usada se abrir. Ento selecione Pipeline.

O template de definio da pipeline se abrir :

PowerBuilder 9.0 Bsico

Captulo 11

171

 PipeLine de dados


Clique em Declare Instance Variables.

Ento defina os objetos: statictext st_lidos,st_gravados,st_erros

Agora clique em Event List e escreva o cdigo abaixo.

Agora clique em

Save e salve o objeto do usurio como

uo_pipeline01 em nossa aplicao exemplo1. Para executar o pipeline em tempo de execuo voc pode criar uma dropdown com uma lista de objetos e ao selecionar o objeto execute o cdigo abaixo ou crie um boto para isto.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 11

172

 PipeLine de dados


O cdigo abaixo executa o PipeLine. Nesse exemplo teremos como padro de execuo um boto. 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 no existe" erros[5] = "-5 Sem conexo inexistente" erros[6] = "-6 Erro nos parmetros" erros[7] = "-7 Colunas incompatveis" erros[8] = "-8 Erro fatal no SQL de origem" erros[9] = "-9 Erro fatal no SQL de destino" erros[10] = "-10 Maximo nmero de erros excedidos" erros[12] = "-12 Erro na sintaxe do Pipeline" erros[13] = "-13 chave requerido no 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

PowerBuilder 9.0 Bsico

Captulo 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 = "Execuo abortada" End if Commit; DESTROY lp_Create Disconnect Using lt_origem; DESTROY lt_origem This.Enabled = True cb_executa.Enabled = FALSE

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 11

174

 PipeLine de dados


If li_RC = 1 Then st_men.text = "Execuso 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 Bsico.

Captulo 12
Criando Relatrios

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

175

 Criando Relatrios


A criao de relatrios com o PowerBuilder 9.0 muito simples quanto simples o seu relatrio, no PowerBuilder 9.0 a criao de um relatrio segue os mesmos critrios da criao de uma DataWindow. O Relatrio assim como a DataWindow o resultado de uma consulta (query) ao banco de dados. A grande diferena que o relatrio no pode ser editado pelo usurio a sua ordem de tabulao igual a zero. Em um relatrio no existe validao de dados nem atualizao dos mesmos. As opes de relatrios quanto a estilo de apresentao e origem de dados, so as mesmas disponibilizadas para a DataWindow. Veja as definies no captulo 9, sobre DataWindow. Para se produzir um relatrio devemos seguir alguns passos: 1. 2. 3. 4. Determinar o tipo de relatrio que se ir produzir; Criar o objeto DataWindow que ir recuperar e exibir os dados; Anexar o objeto DataWindow a um controle DataWindow; Adicionar no controle DataWindow os processos para recuperar os dados e imprimir.

Os tipos:

x x x x x x x x x x x

Tabular Freeform Grid Label N-Up Group Composite Graph Crosstab OLE 2.0 RichText

PowerBuilder 9.0 Bsico

Captulo 12

176

 Criando Relatrios


Em um relatrio podem-se agregar todas as funcionalidades da DataWindow exceto as funcionalidades de atualizao, por uma questo lgica e no por limitao. Ento criar um relatrio com o PowerBuilder muito simples. Seguiremos alguns passos criando um relatrio em cima da base de dados exemplo EAS Demo DB V9 e descrevendo passo a passo seus eventos, funes e propriedades. Clique em New selecione DataWindow e o estilo Freeform. Selecione no estilo de recuperao de dados Quick Select marque Retrieve on Preview. Clique em Next. Selecione a tabela Department, selecione todas as colunas clicando no boto 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 criao 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 relatrio disponibilize as informaes de modo satisfatrio e coerente para uma boa visualizao e customizao de recursos.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

177

 Criando Relatrios


Teremos ento no template de edio o quadro abaixo:

Neste exemplo que iremos criar de relatrio utilizaremos os recursos mais comuns para um relatrio gerencial. Com cabealho, informaes de pgina, data da impresso, hora da impresso e a utilizao de expresses na DataWindow de relatrio. O Primeiro passo maximizar o template de edio para uma melhor visualizao dos dados. Com esse procedimento podemos melhor visualizar as bandas disponveis para manipulao. x x x x Header Datail Summary Footer Onde colocaremos nosso cabealho. Onde colocaremos as linhas de dados. Onde colocaremos os dados sumarizados. Detalhes de rodap do relatrio.

PowerBuilder 9.0 Bsico

Captulo 12

178

 Criando Relatrios

A figura acima mostra o template de edio maximizado coloque o mouse sobra banda Header. Na mudana do ponteiro do mouse, clique com o boto direito e mantenha-o pressionado, arrastando para baixo abrindo assim um espao entre o limite do template e a banda Header.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

179

 Criando Relatrios


Criando cabealho. 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 comearemos a montar nosso cabealho.

Para o objeto texto criado digite: Demonstrativo : Salrio Departamento. 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 proporo, coloque o mouse sobre a figura e clique com o boto 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 identificao da coluna conforme segue :

PowerBuilder 9.0 Bsico

Captulo 12

180

 Criando Relatrios


Algumas colunas estaro agrupadas formando assim uma nica informao. Para se quebrar uma linha do objeto Text, digite logo aps o texto que se deseja quebrar (~r) Til mais a letra erre. Coloque o mouse sobre cada banda e na mudana do ponteiro do mouse clique com o boto direito mantenha-o pressionado e alinhe cada banda para que o relatrio tenha uma proporcionalidade adequada para cada linha que ser exibida. Veja figura abaixo.

Note que algumas colunas tero um alinhamento esquerda e outras direita podendo at ter colunas que devero estar centralizadas. Esses ajustes sero necessrios para adequar o tipo de dado a visualizao que se queira dar ao relatrio. No existe uma regra definida neste caso vale sempre o bom senso. Lembrando que sempre se deve procurar mostrar o mximo de informaes possveis sem se poluir o relatrio. Fazendo-se assim um relatrio de fcil leitura e identificao dos dados.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

181

 Criando Relatrios


Agora vamos incluir algumas funes disponveis no PowerBuilder 9.0. Funo Today() Now() Page() PageCount() Incluindo a data corrente Clique em Todays Date e clique ao lado do ttulo direita para incluir o objeto Text com a expresso Today(). Descrio data corrente hora corrente pgina corrente total de pginas

Retorna Retorna Retorna Retorna

a a a o

Note que a expresso 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 boto de seleo para abrir a caixa de dialogo Modify Expression e digite ou selecione na caixa de seleo na parte inferior esquerda String(x,s), no lugar do x, escreva Today() e ignore o s. Ento teremos: string( today() )

PowerBuilder 9.0 Bsico

Captulo 12

182

 Criando Relatrios


Clique em Ok. Aumente a clula at que esta disponibilize a data e a hora.

Ento teremos no relatrio :

Coloque o mouse sobre a banda Summary e na mudana do ponteiro do mouse clique com o boto esquerdo mantenha-o pressionado e arraste abrindo assim um espao entre a banda Datail e Summary. para criar uma Clique na coluna salary da banda Datail e clique em coluna com a mdia dos valores recuperados do banco de dados. Agora clique na parte branca da banda Summary e o campo computado com a expresso, avg(employee_salary for all) ser adicionado a e crie um novo objeto de texto e digite Mdia DataWindow. Clique em Salarial :. Alinhe o campo computado com a coluna salrio e coloque o objeto texto frente do campo computado.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

183

 Criando Relatrios


Com estes procedimentos montamos uma coluna com a mdia salarial de todos os departamentos. Agora incluiremos um controle de pgina no rodap do relatrio. Coloque o mouse sobre a banda Footer e na mudana do ponteiro do mouse clique com o boto esquerdo mantenha-o pressionado e arraste. Abrindo assim um espao entre a banda Summary e Footer. para criar um campo computado com a expresso: 'Page ' + Clique em page() + ' of ' + pageCount(). No template propriedade direita na propriedade Compute Expression clique no boto de seleo na caixa de dialogo que se abrir e substitua : 1. Page por Pgina 2. of por de Ento teremos : 'Pgina ' + page() + ' de ' + pageCount() E como resultado:

PowerBuilder 9.0 Bsico

Captulo 12

184

 Criando Relatrios


Criamos controle e total para o relatrio geral. Criaremos agora estes controles para um determinado grupo. Assim devemos criar um grupo para dividirmos o relatrio e dar e ele uma aparncia mais profissional. Na PowerBar clique em Rows e selecione no menu que se abrir Create Group. Na caixa de dialogo Specify Group Columns que se abrir clique e arraste a coluna department_dept_id da caixa Source Data para a caixa Columns. Conforme a figura abaixo.

Clique em Ok.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

185

 Criando Relatrios


Note que novas bandas foram disponibilizadas a partir da incluso de um grupo. So elas :

Header group department_dept_id Trailer group department_dept_id

: Cabealho especfico para o grupo. : Rodap especfico do grupo

Coloque o mouse sobre a banda Trailer group e na mudana do ponteiro do mouse clique com o boto esquerdo mantenha-o pressionado e arraste. Abrindo assim um espao entre a banda Trailer group e Detail. Mova os itens da banda Summary Mdia Salarial. O computed Field com o valor da mdia 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 padro, j para a banda de grupo existem algumas particularidades.

PowerBuilder 9.0 Bsico

Captulo 12

186

 Criando Relatrios


Coloque o ponteiro do mouse sobre a banda Header group e clique com o boto direito. As propriedades da banda aparecero direita. Color : Define a cor de fundo da banda. Height : Define o tamanho (altura) que a banda vai ter. Group Definition : Definio dos itens que compe o grupo. Group Sort : O tipo de classificao que o grupo ter. Reset Page Count : Inicia o contador para cada quebra de grupo. New Page on Group Break : Quebra a pgina a cada quebra de grupo.

Clique no boto de seleo 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

187

 Criando Relatrios


No template propriedade selecione New Page on Group Break. Essa seleo far com se quebre a pgina a cada novo grupo. Veja no Template Preview como ficou o relatrio. Note que automaticamente uma barra foi includa 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.

PowerBuilder 9.0 Bsico

Captulo 12

188

 Criando Relatrios


Para uma apresentao mais profissional, coloque o mouse sobre a banda Header group e na mudana do ponteiro do mouse clique com o boto esquerdo mantenha-o pressionado e arraste abrindo assim um espao 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

189

 Criando Relatrios


Save salve o relatrio com o nome d_rel01, feche o Clique em 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 boto 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 to Create 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 teramos somente que acertar o cabealho e dimensionar melhor as colunas.

PowerBuilder 9.0 Bsico

Captulo 12

190

 Criando Relatrios


Entendendo o estilo Composite. O Estilo denominado composite designa-se a apresentar uma DataWindow cujo seu contedo a insero de vrias DataWindow independentes ou no entre si com estilos de apresentao diferentes. Normalmente este estilo utilizado para relatrios condensados e complexos. A DataWindow principal receber a denominao Composite (que recebe as outras DataWindow), as DataWindow internas recebem a denominao Nested Reports (que compe a DataWindow de estilo composite). Clique em New selecione DataWindow e o estilo Grid. Selecione no estilo de recuperao de dados Quick Select. Marque Retrieve on Preview. Clique em Next. Selecione a tabela Department. Selecione todas as colunas clicando no boto direita Add All. Clique em OK, e marque o Save as Default. Clique em Next e em Finish para finalizar a criao da DataWindow. Teremos :

Clique em Save e salve a DataWindow como d_relatorio_1. Feche o template de DataWindow.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

191

 Criando Relatrios


Vamos criar a segunda DataWindow que ser inserida em nosso relatrio composite. Clique em New selecione DataWindow e o estilo Tabular. Selecione no estilo de recuperao de dados Quick Select marque Retrieve on 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. Ento 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 relatrio composite. Clique em New selecione DataWindow e o estilo Graph. Selecione no estilo de recuperao de dados Quick Select. Marque Retrieve on Preview. Clique em Next.

PowerBuilder 9.0 Bsico

Captulo 12

192

 Criando Relatrios


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 Salrio X Sexo e em Graph Type selecione Column. Clique em Next e Finish. Ento teremos :

Agora falta descriminar as variveis do nosso grfico nesse exemplo no iremos exemplificar todas as propriedades do objeto grfico, veremos isto mais adiante. Na propriedade direita selecione General e em Title digite; Slario X Sexo. 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 Salrio.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

193

 Criando Relatrios


Ento teremos:

Clique em Save e salve a DataWindow como d_relatorio_gr_3. Feche o template de DataWindow.

PowerBuilder 9.0 Bsico

Captulo 12

194

 Criando Relatrios


Com os relatrios gerados iniciaremos a construo da DataWindow estilo composite. Clique em New selecione DataWindow e o estilo Composite. Na caixa de dialogo Choose Nested DataWindows for Composite selecione os relatrios d_relatrio_1, d_relatorio_2 e d_relatorio_gr_3. Clique em Next e Finish. Ento teremos:

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 12

195

 Criando Relatrios


A disposio fsica dos relatrios as mesmas efetuadas durante a seleo, podemos modificar esta disposio para uma melhor visualizao.

O estilo Composite como todos os outros estilos tambm disponibiliza algumas propriedades que podem ser configuradas para uma melhor visualizao. So: Em General : Name : Nome dado ao relatrio e que define o acesso a este Nested.

HideSnaked : Faz com que o controle s aparece uma vez por pgina quando voc imprimir a DataWindow caso esta utilize o formato de colunas de jornal. Visible Border : Habilita ou inibe a visualizao do relatrio. : Define o tipo de contorno que o relatrio deve exibir.

PowerBuilder 9.0 Bsico

Captulo 12

196

 Criando Relatrios


Report New Page (Nested). : Seleciona ou altera o relatrio em foco. :Quebra a pgina antes da exibio do prximo relatrio

Trail Footer : Fora a banda footer a aparecer depois da ltima linha de dados do relatrio. Em Pointer : Pointer Em Criteria : A condio de filtro da clusula Where para o relatrio. A propriedade de Critrios define a conexo entre o relatrio e o DataWindow. Exemplo : emp_id=:id_emp : Seleciona o tipo de ponteiro do mouse ser exibido.

Adquirido por : Fabrcio Moreira da Silva

Captulo 13
Grficos

PowerBuilder 9.0 Bsico

Captulo 13

197

 Grficos
Um grfico em linhas gerais igual a qualquer outro objeto DataWindow. Exceto pelo fato de revelar os dados em forma de grfico ao invs de apresentar os dados em forma de nmeros. Para se criar um grfico precisaremos entender alguns padres. Em um grfico existem as categorias, os valores e as sries. Onde : Categoria : Os dados independentes, tipo: meses, anos e bimestres.

Valor : Os dados dependentes, esta informao normalmente sofre alterao por categoria, tipo : Vendas (por ms) , Vendas (por ano) e Vendas (por bimestre). Srie : Os conjuntos de pontos de dados do grfico.

Para se criar um grfico deve-se definir as categorias e os valores. As sries estaro presentes no grfico de acordo com as categorias e os valores. Normalmente as categorias correspondem a uma coluna da tabela. Os valores tambm podem provir de uma coluna, mas normalmente provm de agregaes, somatrias ou mdia de uma coluna. Criando um grfico

Clique em New selecione DataWindow e escolha o estilo Graph em Choose Data Source for Graph DataWindow selecione Quick Select e marque a caixa de seleo 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 13

198

 Grficos
Ento teremos:

Com esta primeira viso podemos notar que praticamente o grfico j est montado. Precisamos alterar algumas configuraes para uma melhor preciso dos dados e compreenso do mesmo por qualquer pessoa que o analise. Para isto, existem as propriedades do objeto grfico. So: Propriedade BackColor Border BorderStyle Tipo de dado Descrio Long Especifica o valor numrico da cor de fundo: -2 a 16,777,215 Border Especifica se o controle tem uma borda BorderStyle Especifica o estilo da borda do controle. (Descrita) Seus valores so: StyleBox! StyleLowered! StyleRaised! StyleShadowBox!

PowerBuilder 9.0 Bsico

Captulo 13

199

 Grficos
Propriedade BringToTop Tipo de dado Descrio Boolean Especifica se PowerBuilder 9.0 mover o controle front-to-back na janela ou controle de DataWindow. grAxis Especifica as propriedades do eixo de categoria do grfico. grSortType Especifica como as categorias so ordenadas. PowerObject Um objeto de tipo PowerObject que contm informao sobre a definio de classe do objeto ou controle. Integer Especifica o percentual de profundidade da largura do grfico. Boolean Especifica se PowerBuilder por o grfico 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 no est automaticamente dentro do modo arrastar e solta. String Especifica o nome do cone ou o arquivo que contm o cone que voc quer exibir quando o usurio arrastar um controle . Integer Especifica o ngulo de elevao de frente para a parte de trs. Boolean Especifica se o controle habilitado (pode ser selecionado).True : Habilitado / False : No habilitado

Category CategorySort ClassDefinition

Depth DragAuto

DragIcon

Elevation Enabled

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 13

200

 Grficos
Propriedade GraphType Tipo de dado Descrio grGraphType Especifica o tipo do grfico, os valores so: (Decrita) Area3D! AreaGraph! Bar3DGraph! Bar3DObjGraph! BarGraph! BarStack3DObjGraph! BarStackGraph! Col3DGraph! Col3DObjGraph! ColGraph! ColStack3DObjGraph! ColStackGraph! Line3D!LineGraph! Pie3D! PieGraph! ScatterGraph! Integer Especifica a altura do controle, em unidades do PowerBuilder. grLegendType Especifica o alinhamento da legenda do (descrita) grfico, os valores so: AtBottom! AtLeft! AtRight! AtTop!NoLegend! grDispAttr Especificam o estilo para o tipo de texto da legenda do grfico, inclusive tamanho, cor, e rotao. Integer Especifica o percentual da largura dos marcadores de dados para sries diferentes em um grfico. Integer Especifica a distncia que o grfico da frente da janela. grDispAttr Especificam as propriedades do texto em grfico de torta com label, inclusive tamanho, cor, e rotao. String Contm o nome do ponteiro ou o arquivo que contm o ponteiro usado para o grfico.

Height Legend

Legend DispAttr

OverlapPercent

Perspective PieDispAttr

Pointer

PowerBuilder 9.0 Bsico

Captulo 13

201

 Grficos
Propriedade Rotation Series SeriesSort ShadeColor Spacing TabOrder Tag TextColor Title TitleDispAttr Tipo de dado Descrio Integer Especifica quanto girar o grfico da esquerda para direita. grAxis Especifica as sries no grfico. grSortType Especifica como as sries so ordenadas. Long Especifica a cor usada para o preenchimento no grfico. Integer Especifica o espao entre marcadores de dados no grfico em percentual. Integer Especifica o valor do controle TAB na seqncia da tecla TAB. String Especifica o valor de etiqueta do controle. Long Especifica a cor a ser usada para o texto no controle. String Especifica o texto do ttulo para o grfico. grDispAttr Especificam o estilo para o texto na legenda do grfico, inclusive estilo de texto, tamanho, cor e rotao. grAxis Especifica os valores do eixo de valor do grfico. Boolean Especifica se o controle visvel. Se TRUE - Controle visvel. Se FALSE - Controle no visvel. Integer Especifica o modo de texto no controle; por exemplo, 400 para normal ou 700 para tipo negrito. Integer Especifica o posicionamento X ( distncia da extremidade esquerda da janela principal), em unidades do PowerBuilder. Integer Especifica o posicionamento Y ( distncia do topo da janela principal), em unidades do PowerBuilder.

Values Visible

Width

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 13

202

 Grficos
Em todas as propriedades disponibilizadas pelo PowerBuilder 9.0, pode-se usar a notao por pontos atravs do PowerScript facilitando a interao com o usurio em tempo de execuo. 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 grfico no painter DataWindow. No template propriedade direita clique na aba General. Para saber cada propriedade consulte a tabela acima. Title Units Timer Interval Color BackColor Name Depth Elevation : digite Salrio X Sexo. : selecione PowerBuilder (0) : Selecione (0) : Selecione Black : Selecione White : o padro sempre gr_1. : No estar disponvel. : No estar disponvel.

PowerBuilder 9.0 Bsico

Captulo 13

203

 Grficos
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 Salrio. Na propriedade Axix selecione Series em Label, digite Descrio. Na propriedade Scale marque a caixa AutoScale. Ento teremos :

Clique em

Save salve o modelo do grfico como d_grafico.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 13

204

 Grficos
Explore as propriedades do objeto grfico. Normalmente se aplica sua variao em tempo de execuo. Os padres 3D disponibilizam as propriedades Perspective, Elevation e Rotation que oferecem um bom recurso para visualizao. Atravs das instrues de notao de ponto se pode disponibilizar suas definies para o usurio. At aqui conceituamos funes, objetos e aplicamos suas funcionalidades. O mesmo ser feito para o objeto grfico. Para isto, utilizando o aprendizado at agora iremos alterar o projeto proposto. Adequando-o a novas inseres de objetos e funes. 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 criao 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 criao de um novo objeto menu se abrir. Clique no item untitle0 com o boto direito do mouse e selecione no menu-popup que se abrir Insert Submenu item. Na propriedade Text digite Grfico. Com um duplo clique no item Grfico selecione o evento Clicked e escreva o cdigo 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.

PowerBuilder 9.0 Bsico

Captulo 13

205

 Grficos
Incluindo o objeto grfico na janela principal. Edite a janela w_003 clique em Select Control e selecione Create DataWindow control. Clique na janela para incluir o objeto DataWindow. No template propriedade do controle DataWindow inclua na propriedade DataObject o objeto grfico d_grfico. Ajuste o controle DataWindow para que se visualize todo o objeto DataWindow. Ento teremos:

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 13

206

 Grficos
Habilitando a DataWindow. Clique em Select Control e selecione Create CommandButton control. 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 DBMS Disconnect; // Aplica os parmetros do DBMS de teste a transao SQLCA sqlca.dbms ="ODBC" sqlca.dbparm ="ConnectString='DSN=EAS Demo DB V9;UID=dba;PWD=sql'" // Conecta com o banco connect; //Testa a conexo If sqlca.sqlcode < 0 Then MessageBox ("Erro: Impossvel conectar com o banco de dados", sqlca.sqlerrtext, Exclamation!) HALT End If dw_1.SetTransObject(SQLCA) dw_1.Retrieve()

PowerBuilder 9.0 Bsico

Captulo 13

207

 Grficos
Clique em Select Control e selecione Create CommandButton control. 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 DBMS Disconnect; // Apaga todos os dados de um controle DataWindow dw_1.Reset() Clique em Ento teremos : Save. Salve o modelo do grfico.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 13

208

 Grficos
Em tempo de execuo podemos alterar o modelo do grfico. para tal usamos notao de pontos. Clique em DropDownListBox. Clique na janela para incluir o objeto DropDownListBox. No template propriedades direita na propriedade Text digite; 4 Bar3Dobj. Marque nas propriedades VscrollBar. Visible, Enabled, AllowEdit e

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 grficos disponveis no PowerBuilder 9.0. Salve sua aplicao. Essa uma forma de nunca perdermos um trabalho, a cada etapa ou de tempos em tempos no nosso trabalho, salve sua aplicao.

PowerBuilder 9.0 Bsico

Captulo 13

209

 Grficos
Clique em HtrackBar e clique na janela para incluir o objeto HtrackBar. Inclua este objeto na parte superior do controle DataWindow. Repita a operao para a incluso 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. Ento teremos: Agora para que os controles tenham sua funcionalidade iremos escrever atravs de notao de pontos, sua programao.

OBS : Inclua quatro StaticText. No primeiro escreva; Elevao, no segundo; Perspectiva no terceiro; Rotao e no quarto; Tipo do Grfico e distribua conforme a figura acima.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 13

210

 Grficos
Selecione com um duplo clique o objeto HtrackBar definido como htb_1 que ser utilizado para Elevao. Selecione o evento Moved esse evento sempre ser disparado se a barra do controle HtrackBar for movimentada. Escreva o cdigo 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 Rotao. Selecione o evento Moved esse evento sempre ser disparado se a barra do controle HTrackBar for movimentada. Escreva o cdigo 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 cdigo 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 contedo da ddlb for alterado. Como resultado desta alterao a varivel index ser preenchida com a posio fsica da seleo formando assim um indexador. Como o texto na tabela segue uma numerao uniforme podemos utilizar o contedo da varivel index como um parmetro para seleo. Escreva o cdigo PowerScript: integer l_index l_index = index dw_1.Object.gr_1.GraphType = l_index

PowerBuilder 9.0 Bsico

Captulo 13

211

 Grficos
Salve a aplicao e execute. Ento teremos:

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 13

212

 Grficos
Para que as barras HtrackBar e VtrackBar tenham funcionalidade escolha na DropDownListBox um tipo de grfico com padro 3D. Tipo : Bar3D Agora movimente as barras e veja os efeitos que se pode proporcionar.

Captulo 14
XML Conceito Exportando DataWindow (DataWindow Export) Importando um padro XML para a DataWindow

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

213

 XML Conceito


A XML (eXtensible Markup Language, ou Linguagem de Marcao Estendida) um subconjunto da SGML (Standard Generalized Markup Language, ou Linguagem de Marcao Padro Generalizada) que permite que uma marcao especfica seja criada para especificar idias e compartilh-las na rede. Ela tem as virtudes da SGML e da HTML sem qualquer das limitaes bvias. Pontos fortes da XML Inteligncia: a XML inteligente para qualquer nvel de complexidade. A marcao pode ser alterada de uma marcao mais geral como: <funo> Desenvolvedor </funo> para uma mais detalhista, como: <funo> <Diretoria de Informtica> <Informtica> Desenvolvedor </Informtica> </Diretoria de Informtica> </funo> As idias so bem marcadas para que : <Informtica> Desenvolvedor </Informtica> e, <Jurdico> Adv. Junior </Jurdico> sejam sempre valores diferentes. A informao conhece a si mesma. No necessria mais nenhuma idia indesejvel; Manuteno: a XML fcil de manuteno. Ela contm somente idias e marcaes. Folhas de estilos e links, vm em separado, e no escondidas no documento. Cada um pode ser alterado separadamente quando preciso com fcil acesso e fceis mudanas;

PowerBuilder 9.0 Bsico

Captulo 14

214

 XML
Ligao: a XML possui uma maneira de ligar que inclui todas as formas de ligao. No s isso; ela liga de maneira que a HTML no pode. A HTML pode fazer de uma maneira simples, onde um objeto se liga a outro. A XML faz isso, mas tambm pode ligar dois ou mais pontos a uma idia. Existem ainda links gmeos que ligam todas as idias dentro de uma mesma. Qualquer link entre uma idia pode ser manipulado de uma nica maneira; Portabilidade: a XML de fcil portabilidade. A razo da sua existncia fora e portabilidade. A SGML tem fora. A HTML tem portabilidade. A XML tm ambas. A XML pode ser navegada com ou sem o seu DTD (Document Type Definition, ou Definio de Tipo de Documento - as normas que definem como as tags so estruturas nos documentos XML), tornando o download mais rpido. Tudo que um navegador precisa para ver XML ter a noo que ela prpria e a folha de estilos, controlam a aparncia. Se uma validao restrita necessria, o seu DTD pode acompanh-lo e fornecer detalhes exatos da sua marcao. Como a XML definida A XML definida pelas seguintes especificaes: Extensible Markup Language (XML) 1.0: define a sintaxe da XML; XML Pointer Language (XPointer) e XML Linking Language (XLink): define um padro para representar os links entre os recursos. Alm dos links simples, como a tag <A> da HTML, a XML possui mecanismos para ligar recursos mltiplos e diferentes. A XPointer descreve como enderear um recurso, e a XLink descreve como associar dois ou mais recursos; Extensible Style Language (XSL): define a linguagem de folhas de estilos padro para a XML.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 sero utilizadas para que o analisador sinttico verifique se o documento est correto ou no. A DTD pode estar definida dentro do prprio arquivo XML ou em um arquivo parte com extenso .dtd, que deve ser includo no cdigo XML. A DTD pode ser usada para padronizar um documento XML e torn-lo bastante coerente com as necessidades do desenvolvedor, porm sua criao no obrigatria. DTDs Externas: Quando temos um documento XML muito extenso, melhor utilizarmos um DTD externo, o que traz boa qualidade com super organizao 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 vrios aspectos como por exemplo: Tipos de dados que o arquivo XML ir conter etc. Criando uma DTD Interna. Abaixo esta uma pequena demonstrao 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 REUNIO</ASSUNTO> </NOTA>

PowerBuilder 9.0 Bsico

Captulo 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 contm todos os outros. <! ELEMENT NOTA (PARA,DE,ASSUNTO) Isto define a tag <NOTA>. Os parnteses dizem que estes dois outros conjuntos de tags devem aparecer dentro das tags <NOTA>, naquela ordem especfica. <! ELEMENT PARA (#PCDATA)> #PCDATA, significa Parsed Character Data ou dados de caractere analisados (isto , qualquer coisa que no seja dados binrios, como uma imagem). Neste caso, o #PCDATA ser texto por exemplo, "PEDRO". Criando uma DTD Externa. O Cdigo desta demonstrao ser o mesmo do que da DTD interna acima somente iremos dividir o DTD e XML em dois arquivos com as extenses .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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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">

Validao

Existem duas categorias de documentos XML: bem formatados e vlidos. Documentos Bem Formatados Um documento somente pode ser bem formatado se ele obedece sintaxe da XML. Um documento que inclui seqncias de caracteres de marcao que no podem ser analisadas ou so invlidas no podem ser bem formatados. Alm disso, o documento deve atender a todas as seguintes condies (subentendendo-se que algumas destas condies podem exigir experincia com SGML): x A instncia do documento deve estar conforme a gramtica dos documentos XML. Em particular, algumas construes de marcaes (referncias a entidades parmetro, por exemplo) so somente permitidas em locais especficos. O documento no bem formatado se tais ocorrerem em outros locais, ainda que o documento esteja bem formatado nos outros casos. O texto de substituio para todas as entidades parmetro referenciadas dentro de uma declarao de marcao consiste em zero ou mais declaraes de marcaes completas. (Nenhuma entidade usada no documento pode consistir de somente uma parte de uma declarao de marcao.) Nenhum atributo pode aparecer mais do que uma vez na mesma marca de incio. Valores de atributos cadeias de caracteres no podem conter referncias a entidades externas. Marcas no-vazias devem ser apropriadamente aninhadas.

PowerBuilder 9.0 Bsico

Captulo 14

218

 XML

x x

Entidades parmetro devem ser declaradas antes de serem usadas. Todas as entidades devem ser declaradas, exceto as seguintes: amp, lt, gt, apos e quot. Uma entidade binria no pode ser referenciada no fluxo do contedo; ela pode ser usada somente em um atributo declarado como ENTITY ou ENTITIES.

Documentos Um documento bem formatado vlido somente se ele contm uma declarao de tipo de documento e se o documento obedece s restries da declarao. Documentos com DTD Definio Na XML as regras que definem um documento so ditadas por DTDs (Document Type Definitions), as quais ajudam a validar os dados quando a aplicao que os recebe no possui internamente uma descrio do dado que est recebendo. Mas os DTDs so opcionais e os dados enviados com um DTD so conhecidos como dados XML vlidos. 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 so conhecidos como dados bem formatados. Nesse caso, o documento pode ser usado para implicitamente se autodescrever. Com os dados XML vlidos e com os bem-formatados, o documento XML se torna autodescritivo porque as tags do idia de contedo e esto misturadas com os dados. Devido ao formato do documento ser aberto e flexvel, ele pode ser usado em qualquer lugar onde a troca ou transferncia de informao necessria. Desta forma, podemos usar o XML para descrever informaes sobre pginas HTML, ou descrever dados contidos em objetos ou regras de negcios, ou transaes eletrnicas comerciais.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 mltiplas formas de visualizao quando se faz uso da informao de semntica contida no XML. O que define formalmente quais elementos e quais combinaes possveis permitida dentro de um documento XML o "schema", ou seja, esquema. Existem novos esquemas propostos ao W3C, dentre eles esto o DCD (Document Content Description), que provm mesma funcionalidade dos DTDs, e que, pelo fato de linguagens esquema serem extensveis, os desenvolvedores podem aument-los com informaes adicionais, tais como regras de apresentao, tornando essas novas linguagens esquema mais poderosas que os DTDs. Resumo As DTDs so formas de se descrever classes de documentos XML (como gramticas para outras linguagens). Problemas com DTDs: x x se muito simples no tem poder expressivo de descrio. se for muito complexa ter uma sintaxe horrvel.

A soluo para as DTDs: usar linguagens de esquemas (schema languages) tais como DSD,XML Schema, etc Os documentos, para serem validados, tm que ser bem formatados e tambm estarem em conformidade com a DTD dada.

PowerBuilder 9.0 Bsico

Captulo 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 no interpreta estes tipos de dados, se uma coluna no contm dados deve ser representada por; <dado></dado> ou <dado/>, onde a tag dado no disponibiliza um contedo. Aps conceituarmos a XML, aplicaremos este conceito ao PowerBuilder 9.0, utilizando as novas propriedades de importao e exportao 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 exportao e importao de dados utilizando XML. O exemplo abaixo, um XML simplificado que contm a declarao do documento XML, seguida pela TAG que descreve o elemento denominado raiz, <d_dept_list>, a definio da linha <d_dept_list_row>, a definio da coluna <dept_id>, <dept_name> e <dept_head_id>, os dados e a tag de finalizao 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

221

 XML
Modelo XML DOM em rvore. <?xml version=1.0 encoding=UTF-8?> <!DOCTYPE menu SYSTEM menu.dtd> <menu> <refeio nome=Caf da manh> <descrio> Ovos mexidos </descrio> <descrio> Queijo quente </descrio> <bebidas> Suco de laranja </bebidas> </refeio> <refeio nome=lanche> <descrio> Frios fatiados </descrio> </refeio> </menu>

PowerBuilder 9.0 Bsico

Captulo 14

222

 XML
A partir da verso 9.0 do PowerBuilder, foram incorporadas novas caractersticas para XML, como exportao e importao de DataWindow / DataStores. A essas novas caractersticas se denominou Servios de XML Nativos 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 padro XML. O modelo de exportao 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 exportao. Column Computed Column Text Control Computed Field Nested Report

Um template de exportao uma parte da definio da DataWindow. Uma DataWindow pode conter vrios template de exportao. So 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 operao de exportao. Esta propriedade pode ser fixada em runtime e designtime.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

223

 XML
Exemplo de um template de exportao XML. export.xml( usetemplate="t_lista01" metadatatype=2 savemetadata=1 template=( comment="Lista de funcionrios sada 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 exportao utilizando a interface grfica.

PowerBuilder 9.0 Bsico

Captulo 14

224

 XML
Na painter DataWindow do PowerBuilder 9.0 foi includo um novo template, onde se permite; definir, editar e exportar a DataWindow em um padro 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 viso 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 exportao pode ser editado. cones usados no template de Export/Import.
cone Descrio Declarao de XML ou declarao de tipo de documento. Raiz ou elemento descendente. Elemento do Group header. Referncia da coluna da DataWindow. Referncia de controle Static text. Referncia Computed field. Referncia de expresso DataWindow. Texto. Comentrio Instruo de processamento Seo CDATA Nested report

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

225

 XML
Explorando o template Export / Import Template - XML Clique com o boto direito do mouse em qualquer rea de fundo do template para ter acesso ao menu popup de edio do template. Item New New Default Descrio Cria um modelo novo de XML com a raiz e elementos de linha de detalhe vazio. Cria um modelo novo de XML com a raiz e elementos de linhas de detalhes para cada elemento mapeado, colunas e campos computados. Abre um modelo de XML previamente salvo 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 comentrios "opcional". Salva o modelo de XML atual como uma cpia debaixo de um novo nome, ser aberta uma caixa de dialogo solicitando um nome e comentrios "opcional". Apaga o modelo de XML atual. Uma caixa de dialogo solicitando confirmao ser exibida antes desta ao, permitindo o usurio cancelar ou no.

Open Save

Save As

Delete

A seleo no menu popup do item Delete apaga o template atual, para apagar itens do template, simplesmente o marque e pressione a tecla Del.

PowerBuilder 9.0 Bsico

Captulo 14

226

 XML
Pressionando o boto direito do mouse em cima de qualquer elemento do template, disponibilizar o menu popup correspondente, por exemplo : Clicando-se na Declarao de XML ou declarao de tipo de documento, teremos : Item Edit Descrio Exibe uma caixa de dilogo para edio da verso da XML, disponibiliza codificar se haver remarcaes externas no documento standalone = Yes, caso contrrio standalone = No (default) Apaga a declarao de XML

Delete

Pressionando o boto direito do mouse em cima da Referncia da coluna da DataWindow disponibilizar o menu popup com as opes : Item Edit Insert Before Delete Descrio Exiba caixa de dilogo de edio do nome do DOCTYPE e seu identificador. abre o menu popup tipo cascata listando todos os modos disponveis para construo do contexto da XML. Apaga a declarao contexto do Documento

O menu popup para uma Raiz ou elemento descendente, exibe : Item Edit Descrio Permite adicionar um rtulo raiz ou elemento descendente. Se a raiz ou elemento descendente tem um ou mais atributos, selecione Edit para habilitar a caixa de dilogo para editar o nome da raiz ou elemento descendente ou acrescentar um atributo. Abre a caixa de dilogo para editar o nome da raiz ou elemento descendente permitindo a definio de um atributo. abre o menu popup tipo cascata listando todos os modos disponveis que podem ser adicionados a uma raiz ou elemento descendente de um XML.

Edit/Add Attribute Add Child

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

227

 XML
Insert Before abre o menu popup tipo cascata listando todos os modos disponveis que podem ser adicionados antes da definio de uma raiz ou elemento descendente. Abre uma caixa de dilogo para editar o nome da raiz do documento gerado no esquema da XML

Schema Option

Template Export - Detalhes

Descrio : Seo de detalhe : Esta seo separada graficamente por uma barra cinza separando a seo de cabealho da seo de detalhe. Esta marcao poder ser alterada pelo desenvolvedor atravs da opo 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).

PowerBuilder 9.0 Bsico

Captulo 14

228

 XML
Exportando uma DataWindow. Pode-se exportar uma DataWindow utilizando a mesma funo utilizada para exportar para HTML ou PSR, a funo SaveAs ; dw_1.SaveAs( "c:\minha_aplicao\d_lista01.xml", XML!, TRUE ) Assim como notao de pontos; dw_sua_datawindow.object.datawindow.data.xml Ou a funo Describe; dw_sua_datawindow.Describe( "datawindow.data.xml" ) O PowerBuilder 9.0 disponibiliza em suas novas propriedades para exportao XML funes que permitem ajustes de seleo de modos, tanto em Design Time quanto em RunTime, So elas: Sintaxe : Export.XML.UseTemplate Utilizada para informar o modelo que ser usado para exportao. Esse modelo dever estar criado. Onde: valor = Uma string que especifica o nome do template xml de exportao 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

229

 XML
Sintaxe: Export.XML.MetaDataType - usado para especificar que metadato ser associado ao XML gerado na exportao da DataWindow. Essa propriedade pode ser utilizada em DesignTime ou em RunTime. valor = Uma string que especifica um valor para Onde: Export.XML.MetaDataType, dado descrito ou codificado.(veja a tabela abaixo para os valores possveis para a utilizao da sintaxe de exportao). 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 execuo (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}" )

PowerBuilder 9.0 Bsico

Captulo 14

230

 XML
Sintaxe : Export.XML.HeadGroups - usado para especificar como sero geradas as linhas de cabealho do XML, em tempo de desenho (DisignTime), selecione na tabela de propriedades (Data Export) o item Interate Header for Group, aplicando-se expresses condicionais. Em tempo de execuo (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 espao 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 aplicandose expresses condicionais. Ou em Tempo de execuo (RunTime) usa-se a sintaxe : Onde: valor = Pode assumir, Yes, No, TRUE, FALSE, O ou 1 PowerScript; dw_sua_datawindow.Object.DataWindow.Export.XML.IncludeWhiteSp ace = "valor" Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.IncludeWhiteSpace {= valor}" )

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

231

 XML
Os valores possveis para a utilizao da sintaxe de exportao so : Valor descrito XMLNone! XMLSchema! XMLDTD! Valor numrico 0 1 2 Descrio O esquema do XML ou DTD, no sero gerados na exportao do documento XML . O esquema do XML ser gerado junto com a produo documento de XML. DTD ser gerado junto com a produo documento de XML. O metadato ser gerado na seo de DOCTYPE no momento da gerao do XML. O metadado ser salvo como um arquivo externo com o mesmo nome do documento de XML, com a extenso ". dtd" (para XMLDTD! ). A produo do documento XML incluir um DOCTYPE se referenciando para o arquivo de metadata.

MetaDataInternal! 0 MetaDataExternal! 1

PowerBuilder 9.0 Bsico

Captulo 14

232

 XML
Viso da propriedade de exportao do template DataWindow XML.

Modificando e testando cada propriedade. Veja a seguir os resultados obtidos.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

233

 XML
Exemplo 1. Template Meta Data Type Save Meta Data Type Include White Space Head Group Resultado exemplo 1: : : : : : t_lista01 XMLNone! MetaDataInternal! Marcado No marcado

PowerBuilder 9.0 Bsico

Captulo 14

234

 XML
Exemplo 2: Template Meta Data Type Save Meta Data Type Include White Space Head Group Resultado exemplo 2: : : : : : t_lista01 XMLDTD! MetaDataInternal! Marcado No marcado

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

235

 XML
Exemplo 3: Template Meta Data Type Save Meta Data Type Include White Space Head Group Resultado exemplo 3: Contedo do arquivo exportado exemplo3.xml : : : : : t_lista01 XMLSchema! MetaDataExternal! Marcado No marcado

PowerBuilder 9.0 Bsico

Captulo 14

236

 XML
Contedo do arquivo exportado exemplo3.xsd

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

237

 XML
Exemplo 4: Template Meta Data Type Save Meta Data Type Include White Space Head Group Resultado exemplo 4: : : : : : t_lista01 XMLSchema! MetaDataExternal! Marcado No marcado

PowerBuilder 9.0 Bsico

Captulo 14

238

 XML
Contedo do arquivo exportado exemplo4.xsd

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

239

 XML
Importando um padro XML para a DataWindow. Voc pode importar o contedo de um documento XML para uma DataWindow ou DataStore usando tcnicas semelhantes usadas para importar outros formatos de dados estruturados. x x x x Para isto o template XML dever existir. modelo do template deve ser bem formatado. Composite, Grfico, objetos OLE DataWindow Composite, Grfico e OLE no podem ser importados usando um template. Voc tem que usar o formato default.

As declaraes abaixo so equivalentes. Ambas importaro os contedos do arquivo padro XML de nome exemplo1.xml. dw_1.ImportFile(exemplo1.xml) dw_1.ImportFile(XML!, exemplo1)

Viso da propriedade de importao do template DataWindow XML.

PowerBuilder 9.0 Bsico

Captulo 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 importao executou a contento. O contedo deste arquivo mostra o que foi importado; como o modelo, os elementos e as linhas. Para criar esta log, basta selecionar a opo do template de importao Trace XML Import e em Trace File Name definir o caminho e o nome do arquivo que receber as informaes. Tipo: C:\LOGS\TRACE01.LOG. Modelo de um arquivo Tracer log.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

241

 XML
Nesse captulo, mudou-se a forma de apresentao, devido a aparente complexidade desta nova funcionalidade, a de Exportao e Importao de dados em padro XML do PowerBuilder 9.0, mas como foi visto, o PowerBuilder 9.0, minimiza em muito desenvolvimento desta tarefa. Aplicaes clientes bem como aplicaes com componentes de servidor ganharam caractersticas mais robustas que permitem uma melhor inteligibilidade com outras aplicaes e componentes. Para uma melhor fixao dos conceitos at agora vistos, realizaremos um pequeno modelo demonstrando os conceitos vistos. Em nossa aplicao exemplo denominada exemplo1. Edite a DataWindow d_lista01. Ento teremos:

PowerBuilder 9.0 Bsico

Captulo 14

242

 XML
No template Export / Import Template - XML clique na rea em branco com o boto direito do mouse e selecione no menu popup que surgir, a opo 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 boto direito do mouse no item m_menu02 do template de edio 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 edio 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 DataObject Title : dw_1 : d_lista01 : Janela 04 XML

PowerBuilder 9.0 Bsico

Captulo 14

244

 XML
Selecione a aba Other e defina:

Salve a nova janela como w_004. Volte ao painter de edio 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 Exportao e a Importao dos dados da DataWindow para o padro 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 boto clique com o boto direito do mouse e no menu popup que aparecer selecione Duplicate. Repita esta operao 3 vezes. Assim teremos 4 Objetos CommandButton na janela w_004.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 14

245

 XML
Com um duplo clique no primeiro boto 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 boto 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 )

PowerBuilder 9.0 Bsico

Captulo 14

246

 XML
Com um duplo clique no terceiro boto 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 boto 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 transao SQLCA sqlca.dbms ="ODBC" sqlca.dbparm ="ConnectString='DSN=EASDemoDB V9;UID=dba;PWD=sql'" // Conecta com o banco connect; //Testa a conexo 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()

PowerBuilder 9.0 Bsico

Captulo 14

248

 XML
Salve a janela w_004. Teremos:

Execute a aplicao. Clique nos botes para gerar os arquivos. Edite os arquivos gerados e analise.

Adquirido por : Fabrcio Moreira da Silva

Captulo 15
Preparando sua aplicao final Criando o objeto Project Criando o arquivo executvel

PowerBuilder 9.0 Bsico

Captulo 15

249

 Criando o objeto Project


O PowerBuilder 9.0 disponibiliza um Wizard para criao do executvel da sua aplicao. Voc pode gerar dois tipos de executvel: PseudoCdigo ou Cdigo de mquina. (s na verso Enterprise) Cdigo de mquina (machine code) : Esta opo poder ser selecionada no template de gerao do executvel. Se em sua aplicao, voc utilizou a expresso Try-Catch no utilize como opo o cdigo de mquina. Essa seleo lhe retornar um erro de compilao. Se a sua aplicao precisa de velocidade de processamento o cdigo de mquina uma boa opo embora o tempo de compilao seja muito maior. Se sua aplicao no necessita de uma grande velocidade de processamento o mais aconselhvel a compilao em Pcode, mais rpida a compilao e consome menos memria em tempo de execuo ps os objetos no estaro todos na memria e sim s os objetos necessrios para o processamento naquele momento. Bibliotecas dinmicas: Voc pode criar tambm bibliotecas dinmicas para sua aplicao. Podem ser usadas bibliotecas dinmicas para armazenar os objetos da aplicao. Usando bibliotecas dinmicas voc pode quebrar a aplicao em unidades menores que so mais fcil de administrar e tambm reduzir o tamanho do arquivo executvel. Para aplicaes de pequeno porte voc no precisa utilizar bibliotecas dinmicas. 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 includo. 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 no existe. Ento deixe em branco e clique em Next. Na caixa de dialogo Specify Build Option sero disponibilizados quatro opes:

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 exibio para o modelo Windows XP. S ter funcionalidade se voc utiliza o MS Windows XP.

PowerBuilder 9.0 Bsico

Captulo 15

251

 Criando o objeto Project


Full Build Verifica e pr-compila toda a aplicao Incremental Build Verifica e pr-compila s as pbls que sofreram alterao.

Para o nosso exemplo marque as opes conforme a figura acima. Clique em Next. Na caixa de dialogo Generate Machine Code voc poder escolher que tipo de compilao deseja realizar. Para o nossa exemplo selecione a primeira opo conforme a figura abaixo.

Clique em Next.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 15

252

 Criando o objeto Project


Na caixa de dialogo Specify Dynamic Options selecione a opo 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 opo. Clique em Next.

PowerBuilder 9.0 Bsico

Captulo 15

253

 Criando o objeto Project


Na caixa de dialogo Specify Version Information os campos disponibilizados j estaro previamente preenchidos, mas voc poder alterar estas informaes para melhor compor o seu projeto.

Clique em Next. Na caixa de dialogo Ready to Create Application clique em Finish.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 15

254

 Criando o objeto Project


Ento teremos:

O seu objeto Project j esta configurado e pronto para compilar a sua aplicao. Clique em Deploy para compilar.

Note que ao final, foram gerados os arquivos exemplo1.exe e o arquivo exemplo1.pbd. Faa um teste gerando seu executvel em cdigo de mquina. Assinale Machine Code e clique em Deploy. Compare os arquivos.

PowerBuilder 9.0 Bsico

Captulo 15

255

 Criando o objeto Project


Os arquivos da primeira compilao tm um .exe reduzido e uma biblioteca .pbd maior. J o arquivo gerado na segunda compilao (machine code) tem um tamanho maior para o .exe e para a .dll gerada. Alm de a compilao demorar um pouco mais.

Adquirido por : Fabrcio Moreira da Silva

Captulo 16
Criando uma aplicao WEB Criando um stio WEB com PowerDynamo

PowerBuilder 9.0 Bsico

Captulo 16

256

 Criando um stio WEB com PowerDynamo


Os captulos a seguir descrevem as funcionalidades do PowerBuilder 9.0 voltado para a WEB. Para estas funcionalidades alguns softwares da Sybase devero estar instalados. So : x x 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 stio Web com PowerDynamo so arquivos ou repositrios de banco de dados onde voc pode; criar, armazenar e administrar o acesso de documentos HTML e de dados. O PowerDynamo permite embutir instrues de server-side em uma pgina Web. Possibilitando o processamento destas instrues quando uma chamada cliente efetuada na pgina. O PowerDynamo um servidor de aplicao que gera contedo de Web dinmico. Possibilita recuperar informaes de seus bancos de dados retornando os resultados para o servidor Web. O PowerDynamo tambm 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 aplicao definir suas configuraes. O PowerBuilder 9.0 disponibiliza um Wizard bem simples para esse processo onde automaticamente se poder mapear todos os objetos utilizados em sua aplicao WEB.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 16

257

 Criando um stio WEB com PowerDynamo


Utilizando passo a passo o Wizard do PowerBuilder 9.0 criaremos um stio WEB com PowerDynamo. Clique em New e selecione Target. Selecione PowerDynamo Web Site 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 aplicao WEB. Para o nosso exemplo digite conforme a figura abaixo. No necessrio digitar todos os campos apenas na linha Web Target digite ex1.pbt os

demais campos sero automaticamente preenchidos. Clique em Next.

PowerBuilder 9.0 Bsico

Captulo 16

258

 Criando um stio WEB com PowerDynamo


Na caixa de dialogo Create Url Prefix Mapping no item URL Prefix Mapping confirme /exemplo e clique em Next.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 16

259

 Criando um stio WEB com PowerDynamo


Na caixa de dialogo, Create or Select ODBC Data Source escreva ou confirme exemplo e clique em Next.

PowerBuilder 9.0 Bsico

Captulo 16

260

 Criando um stio 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 16

261

 Criando um stio WEB com PowerDynamo


Na caixa de dialogo Specify Login Information informe a identificao de usurio. Por default dba e a senha de acesso que por default sql.

Clique em Next.

PowerBuilder 9.0 Bsico

Captulo 16

262

 Criando um stio 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 configurao ou assuma o default.

Clique em Next.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 16

263

 Criando um stio 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.

PowerBuilder 9.0 Bsico

Captulo 16

264

 Criando um stio WEB com PowerDynamo


Na caixa dialogo Select Object Model assuma default Object Model clique em Next. e

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 16

265

 Criando um stio WEB com PowerDynamo


Na caixa de dialogo Choose File Deployment Options assuma o default e clique em Next.

PowerBuilder 9.0 Bsico

Captulo 16

266

 Criando um stio 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 16

267

 Criando um stio WEB com PowerDynamo


Na caixa de dialogo Specify Local Copy Folder assuma o default e clique em Next. Ento teremos em Ready to Create PowerDynamo Web Site todas as especificaes para criao. Clique em Finish.

PowerBuilder 9.0 Bsico

Captulo 16

268

 Criando um stio WEB com PowerDynamo


Em nossa aplicao:

Aps a criao do ambiente agora podemos criar nossa primeira pgina no stio ex_1.

Adquirido por : Fabrcio Moreira da Silva

Captulo 17
Criando a primeira pgina Web Utilizando 4GL Web/JSP Page wizard

PowerBuilder 9.0 Bsico

Captulo 17

269



Criando a primeira pgina Web.


Utilizando o Wizard 4GL Web / JSP page voc cria pginas no seu ambiente PowerDynamo muito facilmente. Nesse captulo vamos criar uma pgina 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 : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

270



Utilizando o Wizard 4GL Web / JSP Page


Na caixa de dialogo, Specify New HTML File digite o ttulo para a abertura da pgina 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.

PowerBuilder 9.0 Bsico

Captulo 17

271



Utilizando o Wizard 4GL Web / JSP Page


Se a sua aplicao Web utilizar estilos de apresentao padronizados tipo arquivos .css, nessa caixa de dialogo voc poder identifica-los. Caso contrrio deixe em branco a opo Style Sheet e clique em Next.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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.

PowerBuilder 9.0 Bsico

Captulo 17

273



Utilizando o Wizard 4GL Web / JSP Page


Na caixa de dialogo Specify Page Context pode-se definir um cabealho e um rodap para a pgina em construo. Nesse caso o cabealho ser preenchido pelo ttulo da pgina e o rodap com a data atual. Ambos os dados podero ser alterados posteriormente. Marque as duas caixas e clique em Next.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 sero apresentados no rodap da pgina. Para desenvolvimento uma boa opo, mas no muito apresentvel quando em produo. Portanto ao selecionar este modo lembre-se que essa opo pode ser alterada para se inibir a exibio das mensagens de erro. O Trace uma boa opo se deixar ativado.

Clique em Next.

PowerBuilder 9.0 Bsico

Captulo 17

275



Utilizando o Wizard 4GL Web / JSP Page


Na caixa de dialogo Define Page Parameters voc pode definir variveis e atribuir-lhes escopo se for necessrio. Automaticamente estas variveis sero adicionadas a variveis globais para serem usadas do lado servidor de sua aplicao. No nosso exemplo defina em Parameter Name, ID e em Default Value, deixe em branco.

Clique em Next.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 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 aplicao. poderia ser selecionado aqui, mas no caso do exemplo que estamos desenvolvendo ainda no criamos nenhum componente.

PowerBuilder 9.0 Bsico

Captulo 17

277



Utilizando o Wizard 4GL Web / JSP Page


Ento teremos a caixa de dialogo final do 4GL Web / JSP Page. Clique em Finish para gerar a primeira pgina da aplicao ex_1.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

278



Utilizando o Wizard 4GL Web / JSP Page


Viso da pgina gerada.

Nesse ponto j estamos com a primeira pgina html criada atravs do 4GL Web / JSP Page para o ambiente PowerDynamo ex_1. O PowerBuilder 9.0 ainda disponibiliza o painter de edio e visualizao html possibilitando a manuteno e melhoramento da pgina html gerada.

PowerBuilder 9.0 Bsico

Captulo 17

279



Conhecendo o painter de edio html


No painter de edio html do PowerBuilder 9.0 esta disponibilizada uma nova barra de ferramentas.

Alguns objetos do PowerBuilder esto disponveis para incluso em seu projeto Web. No entraremos nestes detalhes considerados avanados. Alguns desses controles precisam de configuraes mais detalhadas para o EAServer. O que no o propsito deste livro. Descrevendo a barra de ferramenta PainterBar3.

Inserir Inserir Inserir Inserir Inserir Inserir Inserir Inserir Inserir Inserir Inserir

linha Horizontal fim de linha(Line Break) tabela figura HiperLink Ancora Caixa de marcao boto de rdio campo de linha simples rea de texto ListBox

Inserir Inserir Inserir Inserir Inserir Inserir Inserir

boto boto com imagem texto esttico DataWindow objeto Applet plug-in

Aps estar familiarizado com a barra de ferramenta procederemos familiarizao do painter de edio. Para isto modificaremos a pgina Bem-vindo.htm.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

280



Alterando a pgina Bem-vindo.htm


Com a pgina editada coloque o cursor no final do texto Bem-vindo e tecle Enter. Marque o texto Bem-vindo e clique com o boto 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 rdio Inline e no boto Edit. Esta opo disponibiliza as opes de edio de texto como fontes, fundo, margens e etc.

PowerBuilder 9.0 Bsico

Captulo 17

281



Alterando a pgina Bem-vindo.htm


Selecione a fonte Arial Black clique no boto com a seta para direita para transferir a fonte. No grupo Font Size clique no boto de rdio 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 boto de rdio Relative e selecione center para horizontal e vertical. Selecione White para BackGround Color. Clique em Ok. E teremos :

Clique em Ok para aceitar a seleo dos dados e permitir ao PowerBuilder 9.0 alterar a pgina Bem-vindo.htm.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

282



Alterando a pgina Bem-vindo.htm


A figura abaixo representa a alterao realizada na pgina Bem-vindo.htm.

Clique em Save para guardar as alteraes.

PowerBuilder 9.0 Bsico

Captulo 17

283



Incluindo uma imagem na pgina Bem-vindo.htm


Clique como o boto 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 boto 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 diretrio PowerBuilder 9\Tutorial selecione a imagem tshirtw.jpg. A imagens ser copiada para a pasta Imagens. Clique na pgina Bem-vindo.htm. Coloque o cursor no final da linha Bemvindo. Tecle Enter para incluir uma nova linha. Coloque o cursor nesta nova linha e clique no menu (PowerBar3) em Incluir figura. Clique no boto (...) para procurar a figura a ser inserida. Abra a pasta Imagens e selecione a imagem tshirtw.jpg.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

284



Incluindo uma imagem na pgina Bem-vindo.htm


Teremos :

Clique em OK. E Em OK outra vez.

PowerBuilder 9.0 Bsico

Captulo 17

285



Incluindo uma imagem na pgina Bem-vindo.htm


Teremos :

Melhorando : Clique na imagem como boto direito do mouse e selecione Position e Use Absolute Positioning. Mova a imagem conforme sua preferncia.

Clique em Save para guardar as alteraes.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

286



Criando uma pgina Inicial


Para o projeto ficar um pouco mais profissional e treinarmos um pouco mais, criaremos uma pgina inicial utilizando o mesmo processo da criao da pgina Bem-vindo.htm. No template TreeView clique com o boto 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 ttulo para a abertura da pgina 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 opo 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 cabealho e um rodap para a pgina em construo. Nesse caso o cabealho ser preenchido pelo ttulo da pgina e o rodap com a data atual. Ambos os dados podero 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.

PowerBuilder 9.0 Bsico

Captulo 17

287



Criando uma pgina Inicial


Na caixa de dialogo Define Page Parameters voc pode definir variveis e atribuir-lhes escopo se for necessrio. Automaticamente estas variveis sero adicionadas a variveis globais para serem usadas do lado servidor de sua aplicao. 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. Ento teremos a caixa de dialogo final do 4GL Web / JSP Page clique em Finish para gerar a segunda pgina da aplicao ex_1.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

288



Criando uma pgina Inicial


Ento teremos:

Marque o texto Put your data here e troque o texto por : Clique para entrar. Clique em Save para guardar as alteraes. Ento teremos:

PowerBuilder 9.0 Bsico

Captulo 17

289



Criando uma pgina 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 alteraes.

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

290



Depurando e executando sua aplicao Web.


Coloque o mouse sobre a aplicao Web ex_1 clique no boto direito do mouse e selecione Deploy. Acompanhe no template Output a depurao da aplicao Web ex_1. Ao final, se tudo estiver correto a mensagem Finished Deploy of Target ex_1 ser exibida.

Para executar a sua aplicao voc precisa estar com o PowerDynamo Personal Web Server ativo. Clique em Iniciar e procure no seu diretrio 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 na Taskbar do MS Windows. Ento selecione no menu principal Run e Select and Run. Selecione ex_1. E clique em OK. ser visualizado

PowerBuilder 9.0 Bsico

Captulo 17

291



Depurando e executando sua aplicao Web.


Ento teremos:

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Captulo 17

292



Finalizando
Seu projeto agora j possui uma ligao Web. O PowerBuilder 9.0 pode disponibilizar dados via DataWindow direto pelo browser, possibilitando uma interao ambiente cliente/servidor e Web, mas para que isto seja possvel necessria utilizao EAServer. Este livro, conforme nos referenciamos no inicio uma literatura bsica, cujo objetivo possibilitar aos iniciantes ter uma referncia, 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 tcnicas avanadas do Sybase PowerBuilder 9.0. At Breve. Paz e prosperidade a todos.

PowerBuilder 9.0 Bsico

Guia de Referncia : Nomenclaturas



Guia de Referncia
Nomenclaturas

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Nomenclaturas


Nomenclatura dos Tipos de Objetos Nome do Objeto Objeto de DataWindow Funo (global) Menu Estrutura Consulta Objeto do usurio Janela Conveno d_ f_ m_ s_ q_ u_ w_ Exemplo d_cliente f_exibir _ erro m_cliente s_empregado q_ clientes_para_agentes u _ pedido w_ ancestral

Nomenclatura dos Controles da Janelas Nome do Controle ChekBox CommandButton DataWindowControle DropDowListBox EditMask WindowsFunction Graph GrupBox HscrollBar Line ListBox MultiLineEdit Oval Picture PictureButton RadioButton Rectangle RoundRectangle SingleLineEdit StatleText UserObject VscrollBar Conveno cbx_ cb_ dw_ ddlb_ em_ wf_ gr_ gb_ hsb_ ln_ lb_ mle_ oval_ p_ pb_ rb_ r_ rr_ sle_ st_ uo_ vsb_ Exemplo cbx_rascunho cb_ok dw_dados ddlb_agentes em_telefone wf_errosql gr_chegadas_por_agentes gb_opo_de_saida hsb_vermelho ln_linhacurta lb_agentes mle_comentrios oval_equipe p_empregado pb_atualizar rb_construo r_ret rr_tela sle_nome_do_cliente st_prompt_do_cliente uo_pedido vsb_percentual_feito

293

PowerBuilder 9.0 Bsico

Guia de Referncia : Nomenclaturas


Nomenclatura por Espao Escopo da Varivel Local Global Instncia Compartilhada Argumento Conveno lx_ ou nada (o prefixo opcional nas variveis locais) gx_ ix_ sx_ ax_

Nomenclatura por Tipo de Dados Tipo de Dados Janela (Window) Item de Menu (MenuItem) Controle de DataWindow Estrutura(structure) Objeto do usurio (User Object) Inteiro (Integer) Inteiro sem Sinal (Unsigned Integer) Longo (Long) Longo sem Sinal (Unsigned Long) Booleano (Boolean) String (String) Duplo (Double) Real (Real) Decimal (Decimal) Data (Date) Hora (Time) DataHora (DateTime) Conveno w m dw str uo i ui l ul b s db r dc d t dt ou st (TtimeStamp)

294
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Nomenclaturas


Exemplos de Nomenclaturas de Variveis Nome da Varivel sstr_pontos_de_dados [] iul_id_do_cliente ss_nome ii_contagem contagem_de_loops li_contagem_de_loops lw_inst_de_janela as_erro Descrio do Tipo de Dados Array de Shared Structure (estrutura compartilhada) Instncia de um Unsigned Long (inteiro longo sem sinal) Shared String (string compartilhada) Instncia de um inteiro Varivel Local (prefixo no obrigatrio) Inteiro Local (prefixo opcional acrescentado) Instncia Local de uma varivel de janela String de argumento (passado|)

Nomenclatura das Funes de Objetos. Tipo de Objeto da Funo Funo Global Funo de Menu Funo de Objeto do Usurio Funo de Janela Conveno f_ mf_ uf_ wf_ Exemplo f_erro_sql mf_sair uf_pedido wf_atualizar

295

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos



Guia de Referncia
Atributos e Eventos

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Aplicaes


Atributos AppName DDETimeOut Valores String Integer Descrio Uma string contendo o nome da aplicao Um inteiro especificando, em segundo, o intervalo de tempo reservado para uma conversao DDE Uma string contendo o ttulo das caixas de mensagens de datawindow exibidas durante a execuo Uma string contendo o texto bsico para o MicroHelp Um valor TRUE ou FALSE indicando se o texto da barra de ferramentas deve ou no ser exibido: Este atributo s tem efeito em uma janela de quadro MDI Uma string indicando o ttulo da barra de ferramentas do quadro, quando ela uma barra de ferramentas flutuante. Este atributo s tem efeito em uma janela de quadro MDI Uma string indicando o ttulo da barra de ferramentas da folha, quando ela uma barra de ferramentas flutuante. Este atributo s tem efeito em uma janela de quadro MDI

DwMessageTitle

String

MicroHelpDefault ToolbarText

String Boolean

ToolbarFrameTitle String

ToolbarSheefTitle

String

Eventos de Aplicaes Evento Close Idle Descrio Executado no fechamento da execuo Executado quando ocorre o nmero especificado de segundos sem qualquer atividade durante a execuo da aplicao Executado na abertura da aplicao Executado durante um erro do sistema em qualquer local da aplicao

Open SystemError

296

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Janelas


Atributos BackColor Border Valores Long Boolean Descrio Um indicador da cor de fundo Um valor TRUE ou FALSE indicando se a janela possui ou no uma borda Um valor TRUE ou FALSE indicando a suposio de que a janela deve estar no primeiro plano Um inteiro indicando o nmero de unidades a rolar quando h um clique sobre a barra de rolagem Um array relacionando os controles. Voc no pode alterar os valores desta varivel Um valor TRUE ou FALSE indicando a presena da caixa de controle e do menu da caixa de controle O valor TRUE permite janela transmitir e receber mensagens Indica altura da janela Um valor TRUE ou FALSE indicando a presena de uma barra de rolagem horizontal O cone associado com uma janela quando a janela se encontra minimizada Um inteiro indicando o nmero de unidades a rolar quando h um clique sobre a barra de rolagem para baixo

BringToTop

Boolean

ColumnsPerPage

Integer

Controle []

Array de objetos Boslean

ControlMenu

Enabled Height HscrollBar

Boolean Integer Boolean

Icon

String

LinesPer|Page

Integer

297
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Janelas


Atributos MaxBox Descrio Um valor TRUE ou FALSE indicando a presena de uma caixa de maximizar na barra de titulo da janela String O item do menu associado a janela String O nome do menu associado com a identificao de menu Boolean Um valor TRUE ou FALSE indicando a presena de uma caixa de minimizar na barra de titulo da janela String Uma string contendo o nome do arquivo que guarda o ponteiro para o objeto ou controle Boolean Um valor TRUE ou FALSE indicando se a janela ou no redimensionvel String Uma string contendo o valor da tag da janela String Uma string contendo o ttulo da janela Boolean Um valor TRUE ou FALSE indicando a presena de uma barra de titulo na sua janela. A modificao deste atributo em um script pode provocar um erro durante a execuo 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 Integer Estabelece a altura da barra de ferramentas. Este atributo s tem efeito em quadros MDI e folhas Boolean Torna a barra de ferramentas visvel ou invisvel (TRUE ou FALSE). Este atributo s tem efeito em quadros MDI e folhas Valores Boolean

MenuID MenuName MinBox

Pointer

Resizable Tag Title TitleBar

ToolbarAlignment

ToolbarHeight

ToolbarVisible

298

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Janelas


Atributos ToolbarWidth Valores Descrio Integer Especifica a largura de uma barra de ferramentas flutuante. Este atributo s tem efeito em quadros MDI e folhas Integer A coordenada X de uma barra de ferramentas flutuante. Este atributo s tem efeito em quadros MDI folhas Integer A coordenada Y de uma barra de ferramentas flutuante. Este atributo s tem efeito em quadros MDI e folhas Integer Indica o nmero de unidades de rolagem do PowerBuilder quando o usurio efetua a rolagem atravs de um clique esquerda ou direita da caixa de rolagem Integer Indica o nmero de unidades de rolagem do PowerBuilder quando o usurio efetua a rolagem atravs de um clique acima ou abaixo da caixa de rolagem Boolean Torna a janela visvel ou invisvel Boolean Um valor TRUE ou FALSE indicando a presena de uma barra de rolagem Integer Indica a largura da janela

ToolbarX

ToolbarY

UnitsPercolumn

UnitsPerLine

Visible VscrollBar Width

299
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Janelas


Atributos WindowState Valores Enumerated Descrio Indica o estado (maximizada, minimizada ou normal) em que a janela esta sendo exibida no momento. Indica o tipo de janela (principal, instantnea, MDI< Frame, etc). Indica a coordenada X do canto superior esquerdo da janela Indica a coordenada Y do canto esquerdo da janela

WindowType X Y

Enumerated Integer Integer

Eventos de Janelas
Eventos Activate Clicked Close CloseQuery Deactivate DoubleClicked DragDrop DragEnter DragLeave DragWithin Hide HotLinkAlarm Key Mouse Down MouseMove Descrio A janela recebeu o foco O usurio deu clique na janela A janela esta sendo fechada A janela esta sendo fechada atravs da caixa de controle A janela esta perdendo o foco O usurio de um clique duplo na janela Um objeto arrastado foi solto na janela Um objeto arrastado entrou na janela Um objeto arrastado deixou a janela Um objeto esta sendo arrastado no interior da janela A janela se torna oculta Uma aplicao servidora transmitiu novos dados (ou dados alterados) atravs de DDE Uma tecla foi pressionada (exceto alt) Um boto do mouse foi pressionado em uma rea vazia da janela O mouse esta sendo movimentado

300

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Eventos de Janelas


Eventos MouseUp Open Other RbuttonDown RemoteExec RemoteHotLinkStar RemoteHotLinkStop RemoteSend Resize Show SystemKey Timer Descrio O boto do mouse foi liberado em uma rea vazia da janela. A janela se abre. Ocorreu um evento do Windows que no foi definido pelo PowerBuilder. O usurio est mantendo pressionado o boto direito do mouse na janela Uma aplicao, cliente transmitiu uma solicitao atravs da DDE Uma aplicao, cliente quer iniciar um vinculo ativo atravs da DDE. Uma aplicao, cliente quer encerrar um vinculo ativo atravs da DDE. Uma aplicao, cliente transmitiu dados atravs da DDE. O usurio esta redimensionando a janela. A janela estava oculta e agora esta sendo exibida. A tecla Alt ou Alt+outra foi pressionada. O evento foi disparado pela funo Timer em algum intervalo de tempo determinado.

Atributos de Itens de Menus


Atributos Checked Valores Boolean Descrio Um valor TRUE ou FALSE indicando se item de menu esta assinalado. Um valor de TRUE ou FALSE indicando se o item de menu capaz de transmitir receber mensagens. Uma lista de itens de menu A Microhelp associada a esse menu. A janela que contm o menu.

Enabled

Boolean

Item[] MicroHelp ParentWindow

Array de menus String Window

301
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Itens de Menus


Atributos Tag Text ToolbarItemDown Valores String String Boolean Descrio Uma string contendo o valor da tag do item de menu. O texto associado a esse item de menu Um valor TRUE ou FALSE indicando se o item da barra de ferramentas esta embaixo como padro. O nome da figura exibida quando h um clique sobre um item de uma barra de ferramentas. O nome da figura exibida no item correspondente da barra de ferramentas. Um inteiro especificando a ordem dos itens na barra de ferramentas. Um valor TRUE ou FALSE indicando se o item da barra de ferramentas esta ou no visvel. Um Valor TRUE ou FALSE indicando se o item do menu esta ou no visvel.

ToolbarItemDownName

String

ToolbarItemName

String

ToolbarItemOrder ToolbaritemVisible

Integer Boolean

Visible

Boolean

302

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos Accelerator Valores Integer Descrio Um inteiro contendo o valor ASC II que indica a tecla que voc quer atribuir como aceleradora para um controle Um tipo de dados enumerados, especificando o alinhamento do texto em um controle MultiLineEdit, StaticText ou PictureButton. Os valores vlidos so; Center!, Left! ou Right!. Um valor TRUE ou FALSE indicando se voc quer que a rolagem de um campo no sentido horizontal seja automtica. Um atributo da mscara Edit indicando se voc quer ou no saltar automaticamente esse campo e passar para o campo seguinte na ordem de tabulao. Um valor TRUE ou FALSE indicando se voc quer que a rolagem de um campo no sentido vertical seja automtica. Um valor TRUE ou FALSE permitindo ou no a entrada de um valor na tabela de cdigo em uma DrogDownListBox. Um valor TRUE ou FALSE indicando se o controle CheckBox ou RadioButton deve ser assinalado ou desmarcado automaticamente por um clique do mouse. Um recurso que utiliza a funo RGB para determinar a cor do segundo plano de um controle de janelas, por exemplo: para definir a cor do fundo de uma edio em vrias linhas como prpura voc digitaria, mle_field.backcolor = RGB(255,0,255) . O ponto X inicial de um controle de linha em uma janela em relao ao canto superior esquerdo.

Alignment

Enumerated

AutoHScroll

Boolean

AutoSkip

Boolean

AutoVScroll

Boolean

AllowEdit

Boolean

Automatic

Boolean

BackColor

Long

BeginX

Integer

303
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos BeginY Descrio O ponto Y inicial de um controle de linha em uma janela em relao ao canto superior esquerdo. Border Boolean Um valor TRUE ou FALSE indicando se o controle da janela tem ou no uma borda BorderStyle Enumerated Uma varivel enumerada descrevendo o estilo da borda. BringToTop Boolean Um valor TRUE ou FALSE indicando se o controle da janela deve ser levado ou no para frente dos outros controles. Cancel Boolean Um valor TRUE ou FALSE indicando se este CommandButton ou PictureButton deve ou no ser usado como um boto de cancelamento. Category ObjetogrAxis Define os atributos do eixo das categorias em um controle grfico. Checked Boolean Um valor TRUE ou FALSE indicando se uma CheckBox (caixa de verificao, esta selecionada com um X ou se um RadioButton (Boto de rdio) esta preenchida). ClassName String Uma string contendo o nome do controle da janela. Columns PerPage Integer Um inteiro indicando o nmero de unidades a serem roladas quando houver um clique acima da caixa de rolagem. Controle[] WindowObject Um array relacionando os controles. Voc no pode alterar os valores pela varivel. ControMenu Boolean Um valor TRUE ou FALSE indicando a presena 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. Valores Integer

304

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos CornerWidth DateObject Default Valores Integer String Boolean Descrio A largura do canto arredondado em um RoundRectangle. Uma string indicando o objeto de DataWindow associado com o controle de DataWindow. Um valor TRUE ou FALSE denotando se esta CommandButton ou PictureButton deve ou no ser usado como boto padro. Um inteiro indicando a porcentagem da profundidade em relao a largura do grfico, por exemplo, se o valor da profundidade 75, a profundidade do grfico corresponde a 75% da sua largura. O nome da figura a ser exibida quando um PictureButton estiver inativo. Uma string contendo os dados que aparecem inicialmente em uma EditMask. Um valor TRUE ou FALSE indicando se este campo pode ou no ser alterado pelo usurio. Um valor TRUE ou FALSE indicando se um clique coloca automaticamente o controle de janela no modo Drag (Quando DragAuto e no um evento Clicked). O icone aparece quando o usurio arrasta o controle da janela. Um inteiro especificando o ngulo de alterao da parte frontal para a posterior em um grfico Um valor TRUE ou FALSE indicando se o controle de janela pode ou no transmitir e receber mensagens.

Depth

Integer

Disabledname DisplayDate DisplayOnly DragAuto

String String Boolean Boolean

DragLcon Elevation Enabled

Dtring Integer Boolean

305
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos EndX Valores Integer Descrio O ponto X final de um controle de linha em uma janela em relao ao canto superior esquerdo. Uma string contendo o nome da face de tipo (por exemplo, Arial) para o texto de um controle de janela. A cor de preenchimento em um controle oval retngulo ou retngulo arredondado O padro para preenchimento em um controle de texto esttico, oval, retngulo ou retngulo arredondado. Um valor TRUE ou FALSE indicando se deve ou no ser exibido um retngulo em torno do controle Especifica o conjunto de caracteres da fonte. Os valores validos so: ANSI!, ChineseBigA!, DefaultCharSet!, HangEul!, Shiftjis!, OEM e Symbol Especifica um grupo de faces de tipos com caracteristicas semelhantes para o texto. Os valores vlidos so: AnyFont!, Decorative!, Modern!, Roman!, Scripte Swiss. Especifica o esoaamento horizontal (pitch) do texto. Os valores vlidos so: Default! utiliza o espaamento padro correspondente a fonte (fixo ou varivel ); Fixed usa espaamento fixo; Variable usa espaamento varivel. Um tipo de dados enumerado grGraphType especificando o tipo de um grfico. Um nmero indicando a altura do controle da janela.

FaceName

String

FiLLColor FillPatt5ern

Long Enumerated

FocusRectangle

Boolean

FontCharSet

Enumerated (CharSet)

FontFamily

Enumareted (Family!)

FontPitch

Enumerated (Pitch!)

GraphType Height

Enumerated Integer

306

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos HscrollBar Descrio Um valor TRUE ou FALSE indicando se o controle de janela tem ou no uma barra de rolagem horizontal. Boolean Um valor TRUE ou FALSE indicando se o controle de janela tem ou no uma barra de rolagem horizontal. Boolean Um valor TRUE ou FALSE indicando se o controle de janela permite ou no dividir a rolagem. Enumerated Um recurso que especifica o alinhamento do texto em um controle PictureButton. Os valores vlidos so Center, Left e Right. String Uma string indicando o icone (arquivo ICON) exibido se o controle de janela estiver minimizado. Double Um recurso que especifica um incremento usado em uma mscara Edit numrica com controle de rotao. Boolean Um valor TRUE ou FALSE indicando se um controle de figura esta ou no invertido Boolean Um valor TRUE ou FALSE especificando e o texto em um controle esta ou no itlico. Array de Um array de strings de exibio em uma String tabela de cdigo de ListBox ou DropDownListBox. 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 verificao ou de um boto de rdio. Valores Boolean

HscrollBar

HsplitScrol

HtextAlign

Icon

Increment

Invert Italic Item[]

LeftText

307
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos Limit Valores Integer Descrio Um inteiro contendo o nmero mximo de caracteres (de 0 at 32767) que o usurio pode digitar em um controle. O valor 0 indica um nmero ilimitado de caracteres. Um nmero indicando a localizao da legenda de um grfico. Os valores vlidos so: 0 None, 1 Left, 2 Right, 3 Top, 4 Botton. Define como voc deseja que a legenda aparea. O nome da biblioteca de vnculos dinmicos (DLL) que contm uma classe de objetos personalizados do usurio. A cor para desenho de linhas em um controle Line, Oval, Rectangle ou RoundRectangle. Um inteiro indicando o nmero de unidades a serem roladas quando houver um clique na parte inferior da barra de rolagem. Um tipo de dados enumerados Style! Especificando o estilo da linha de um controle, Line Oval, Rectangle ou RoundRectangle. Um inteiro determinando a espessura da linha em um controle Line, Oval, Rectangle ou RoundRectangle. Um valor TRUE ou FALSE indicando se o acionamento das barras de rolagem possibilita a rolagem DataWindow. Uma string contendo um formato de um controle de mscara de edio.

Legend

Enumerated ( gr Legend Type ) Grfico de objeto grDispAttr String

LegenDispAttr

LibraryName

LineColor

Integer

LinesPerPage

Integer

LineStyle

Enumerated (Style)

LineTrickness

Integer

LiveScroll

Boolean

Mask

String

308

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos MaskdataType Valores Descrio Enumerated Uma varivel enumerada atribuindo um formato predefinido a um controle de mscara de edio. Boolean Um valor TRUE ou FALSE indicando a presena de uma caixa de maximizar na DataWindow. Integer Um inteiro contendo o valor do atributo da posio 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. Integer Um inteiro no controle MDIClient (MDI_1) determinando a altura da MicroHelp Boolean Um valor TRUE ou FALSE indicando a presena de uma caixa de minimizar na DataWindow. Integer Um inteiro contendo o valor do atributo de posio quando uma barra de rolagem horizontal esta na extremidade esquerda ou uma barra de rolagem vertical se encontra na extremidade superior. String Uma string contando os valores mnimo e mximo para um controle de rtotao em uma mscara de edio. Os valores mnimo e mximo so separados por uma tabulao (por exemplo, em_campo.minmax= 1000 5000). Boolean Um valor TRUE ou FALSE indicando se o usurio pode ou no selecionar diversos valores em uma ListBox.

MaxBox

MaxPosition

MicroHelpHeight MinBox

MinPosition

MinMax

MultiSelect

309
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos ObjectType OriginalSize Valores Enumerated Boolean Descrio Um tipo de dados enumerado especificando o tipo de objeto do usurio. Um valor TRUE ou FALSE indicando se devem ou no ser ignorados os atributos Height e Midth em um controle PictureButton sendo exibida em seu tamanho original a figura associada com o controle. Um inteiro especificando a porcentagem da largura dos indicadores de dados (por exemplo) barras ou colunas de diferentes sries que se sobreoem em um grfico. Um valor TRUE ou FALSE indicando se uma Single Line Edit deve ser criada como campo de senha. Um valor inteiro (de 1 a 100), indicando a distncia do grfico at a parte frontal da janela. Quanto maior o nmero maior a distncia e menor o tamanho do grfico. Uma string contendo o nome do mapa de bits em um controle Pictyre ou PictureButton. Uma string contendo o ponteiro do mouse para este objeto. A posio atual de uma barra de rolagem. Somente para uso nos atributos HscrollBar e VscrollBar. Um valor TRUE ou FALSE indicando se o DataWindow ou no redimensionvel. Um valor inteiro indicando o quanto voc deseja girar um grfico da esquerda para a direita.

OverlapPerce Integer nt

Password

Boolean

Perspective

Integer

PictureName Pointer Position

String String Integer

Resizable Rotation

Boolena Integer

310

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos Series ShadeColor ShowList Valores Objeto GrAxis Integer Boolean Descrio Define os atributos do eixo das sries em um controle de grfico. Um inteiro determinando a cor do sombreado de um grfico. Um valor TRUE ou FALSE indicando se a lista de uma DroDowmListBox deixa ou no ser sempre exibida. Um valor TRUE ou FALSE indicando se os elementos em uma ListBox ou DropDowmListBox devem ou no ser classificados de acordo com seu valor de exibio. Um inteiro determinando o espao entre as categorias. Um valor TRUE ou FALSE indicando se uma mscara de edio tem ou no controle de rotao. Um valor TRUE ou FALSE indicando deve ser usado a altura da barra de rolagem horizontal padro (TRUE) ou a altura da barra de rolagem horizontal do sistema (FALSE). Um valor TRUE ou FALSE indicando se deve ser usada a largura da barra de rolagem vertical padro (TRUE ou a largura da barra de rolagem vertical do sistema (FALSE)). Controla a aparncia do objeto do usurio. Um inteiro que descreve a ordem de tabulao do controle de janela em relao a outros controles. Um array de inteiros com sinais, contendo a posio das paredes de tabulao em uma mscara Edit, ListBox ou Line Edit.

Sorted

Boolean

Spacing Spin

Integer Boolean

StdHeight

Boolean

StdWicth

Boolean

Style TabOrder

Long Integer

TabStop []

Array de inteiros

311
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos Tag Text TextCase TextColor TextSize ThirdState Valores String String Enumerated (case) Long Integer Boolean Descrio Uma string contendo o valor da tag do controle de janela. O texto associado a um controle de janela Uma varivel enumerada Case! Denotando a altura dos caracteres em um campo texto. Um inteiro longo indicando a cor do texto em um campo. Um inteiro indicando o tamanho do texto em um campo texto. Um valor TRUE ou FALSE indicando se uma caixa de verificao encontra-se ou no no seu terceiro estado. Um valor TRUE ou FALSE indicando se uma caixa de verificao tem trs estados, (TRUE) ou somente dois estados (FALSE). Uma string contendo o ttulo da DataWindow ou do grfico. Um valor TRUE ou FALSE indicando se a DataWindow tem ou no uma barra de titulo. Um objeto DispAttr definindo o estilo de um titulo em um grfico. Um valor TRUE ou FALSE especificando se o texto em um controle deve ou no estar sublinhado. Um recurso que indica o nmero de unidades do PowerBuilder na rolagem efetuada pelo usurio ao dar um clique no lado esquerdo ou direito da barra de rolagem.

ThreeState

Boolean

Title TitleBar TitleDispAttr Underline

String Boolean Objeto gr DispAttr Boolean

UnitsPerColu mn

Integer

312

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Atributos de Controles de Janelas


Atributos UnitsPerLine Valores Integer Descrio Um recurso que indica o nmero de unidades do PowerBuilder na rolagem efetuada pelo usurio ao dar um clique na parte superior ou inferior da barra de rolagem. Um valor TRUE ou FALSE indicando se uma mscara Edit ir utilizar tabelas de cdigos. Esse atributo til em controles de rotao de campos no-numricos. Um recurso que estabelece os atributos dos valores em um controle de grfico. Um valor TRUE ou FALSE indicando se controle de janela esta ou no visvel. Um valor TRUE ou FALSE indicando se controle de janela possui ou no uma barra de rolagem vertical. Um tipo de dados enumerado especificando o alinhamento do texto em um controle PictureButton. Os valores vlidos so: Bottom, MultiLine, Top! E Vcenter! . 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. Um nmero indicando a largura do controle de janela. A coordenada X do controle de janela em relao janela. A coordenada Y do controle de janela em relao janela.

UseCodeTable Boolean

Values Visible VscrollBar

Objeto gr Axis Boolean Boolean

VtextAlign

Enumerated

Weight

Integer

Width X Y

Integer Integer Integer

313
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Eventos de Controles de DataWindows


Eventos Clicked Constructor Descrio O usurio deu um clique sobre um controle de janela. A janela foi aberta e o controle da janela esta sendo construdo. 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 destrudo com ela. DoubleClicked O usurio de um clique duplo sobre o controle. DragDrop O usurio 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 usurio esta arrastando um objeto no interior da rea do controle de janela. EditChanged O usurio esta digitando em um controle de edio. GetFocus O controle de janela recebeu o foco. ItemChanged Um item mudou de valor no controle DataWindow. ItemError Um item no passou em seu teste de validao. 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.

314

PowerBuilder 9.0 Bsico

Guia de Referncia: Atributos e Eventos

 Eventos de Controles de DataWindows


Eventos LoseFocus Modifed Descrio O controle de janela esta a ponto de perder o foco. Um controle de edio em vrias linhas de edio 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 no especifico do PowerBuilder . PageLeft Uma HscrollBar acabou de se deslocar uma pgina para a esquerda. PageRight Uma HscrollBar acabou de se deslocar uma pgina para a direita. PageUp Uma VScrollBar acabou de se deslocar uma pgina para cima. PageDown Uma VScrollBar acabou de se deslocar uma pgina para baixo. PrintEnd O controle de DataWindow terminou sua impresso. PrintPage Uma nova pgina esta a ponto de iniciar sua impresso. PrintStart O controle de DataWindow esta a ponto de ser impresso. RbuttonDown O boto direito do mouse acionado sobre o controle de janela. Resize O controle de DataWindow esta sendo redimensionado. RetrieveEnd Uma recuperao acabou de ser completada. RetrieveRow Uma linha foi recuperada. RetrieveStart Uma recuperao 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 seleo foi alterada em uma caixa de listagem ou caixa de listagem DropDown. SQLPreview Acabou de ser emitida uma chamada a funo Retrieve, UpDate, ou ReselectRow, mais a funo ainda no foi executada. UpDateEnd Uma atualizao acaba de ser completada. UpdateStart Uma atualizao esta a ponto de se iniciar.

315
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados



Guia de Referncia
Dados Enumerados

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias ArrangeOpen Valores Casacaded! Layered! Original! Cascade! Icons! Layer! Tile! TileHorizontal! Box! Lowered! BoBorder! Raised! ResizeBorder! ShadowBorder! Underline! StyleBox! StyleLowered! StyleRaised! StyleShadowBox! OK! OKCancel! RetryCancel! YesNo! YesNoCancel! XpixelsToUnits! XunitsToPixels! YpixelsToUnits! YunitsToPixels! Begin! Cancel! End! Delete! Fitter! Primary! Comentrios Como as folhas MDI esto organizadas quando so abertas. Como as folhas MDI abertas so organizadas.

ArrangeType

Border

O tipo da borda.

BorderStyle

O estilo da borda.

Button

Message Box Button.

ConvertType

DragModes

De que maneira voc quer converter unidades ou pixels nas funes PixelsToUnit e UnitsToPixels. O modo Drag para um objeto.

DwBuffer

O buffer da DataWindow.

316
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias Dwltemstatus Valores DataModifed! New! NewModifed! NotModifed! Read! Write! LockReady! LockReadyWrite! LockWrite! Shared! LineModel! StreamModel! Bdiagonal! Diamond! FDiagonal! Horizontal! Solid! Square! Vertical! Ans! ChineseBigS! DefaultCharSet! HangEu!Shiftjis! OEM! Symbol! AnyFont! Decorative! Modern! Roman! Script! Swiss! Default! Fixed! Variable! Comentrios O status de um item DataWindow.

FileAcess FileLock

O acesso permitido ao arquivo. O bloqueio do arquivo para outro usurio.

FileMode FillPatern

O modo File para leitura e gravao. O padro de preenchimento usado para preencher um desenho ou um objeto grfico.

FontCharSet

O conjunto de caracteres da fonte.

FontFamily

A famlia das fontes.

FontPitch

O pitch da fonte.

317

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias GrColorType Valores Background! Foreground! LineColor! Shade! Xvalue! Yvalue! Area3d! AreaGraph! Bar3dGraph! Bar3dObjGraph! BarGraph! BarStack3dObjGraph ! BarStackGraph! Col3dGraph! Col3dObjGraph! ColGraph! Colstack3dObjGraph! ColStackGraph! Line3d! LineGraph! Pie3d! PieGrapha! ScatterGraph! AtBottom! AtLeft! AtRight! AtTop! NoLegend! Comentrios Um tipo de cor em um grfico.

GrDataType GrGraphType

O valor de um ponto de dados em um grfico. O tipo de Grfico.

GrLegend Type

A localizao da legenda do grfico.

318
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias GrObjectType Valores TypeCategory! TypeCategoryAxis! TypeCategoryLabel! TypeData! TypeGraph! TypeLegend! TypeSeries! TypeSeriesAxis! TypeSeriesLabel! TypeTitle! TypeValueAxis! TypeValueLabel! All! Category! Data! Series! Linear! Log10! LogE! Actual! Cumulative! CumulativePercent! Percentage! Comentrios O tipo de objeto do grfico.

GrResetType

Os dados que voc deseja reinicializar em um grfico.

GrScaleType

O tipo de escala em um grfico.

GrScaleValue

O valor da escala em um grfico.

319

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias GrSimbolType Valores NoSymbol! SymbolHollowBox! SymbolHollowCircle! SymbolHolloWDiamo nd! SymbolHollowDownA rrow! SymbolHollowUpArro w! SymbolPlus! SymbolSolidBox! SymbolSolidCircle! SymbolSolidDiamond ! SymbolSolidDownArr ow! SybolSolidArrow! SymbolStar! SymbolX! Inside! NoTic! Outside! Straddle! Index! Keyword! Topic! Exclamation! Informaes! None! Question! StopSign! Comentrios O smbolo que voc deseja usar para uma srie em um grfico.

GrTicType

O tipo de marcas de escala de um grfico.

HelpCommand

O tipo de comando da funo Showl Help. O cone de Message Box (Caixa de Mensagem).

Icon

320
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias KeyCode Valores 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!numrico! KeyDowmArrow! KeyE! KeyEnd! KeyEnter! KeyEqual! KeyEscape! KeyF1! KeyF10! KeyF11! KeyF12! KeyF2! KeyF3! Comentrios O argumento do cdigo de tecla(KeyCode) na funo(KeyDowm).

Tecla + no teclado numrico.

TeclaBackspace Teclas e Teclas(e)

Teclas <

Teclas e Tecla . no teclado numrico quando NumLock esta ativa No teclado

Teclas = e +

321

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias KeyCode Valores 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! Comentrios

322
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias KeyCode Valores KeyPrintscreen! KeyQ! KeyQuote! KeyR! KeyRightArrow! KeyRightBracket! KeyS KeyscrollLock! KeySemiColon! KeyShift! KeySlash! KeySpaceBar! KeySubtract! KeyT! KeyTab! KeyU! KeyUpArrow! KeyV! KeyW! KeyX! KeyY! KeyZ! Comentrios

323

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias LibDirType Valores DirAll! DirApplication! DirdataWindow! DirFunctin! DirMenu! DirStructure! DirUserObject! DirWindow! ExportAplicattion! ExportDataWindow! ExportFunction! ExportMenu! ExportStructure! ExportUserObjet! ExportWindow! ImpotDataWindow Continuous! Dash! DashDot! DashDotDot! Dot! Transparent! mailAttach! mailOLE! mailOLEStatic! mailDownLoad! mailNewSession! mailNewSessionWith DowmLoad! mailReadOption! mailBodyAsFile! mailEntireMessage! mailEnvelopeOnly! mailSuppressAttach! Comentrios O tipo dos objetos a serem includos na lista de diretrios.

LibExportType

O tipo de objeto a ser exportado.

LibImportType LineStyle

O tipo de objeto a ser importado. O estilo da linha.

mailFileType

Tipos de arquivos de correio.

mailLogonOption

Opes de logon de correio.

Opes de leitura de correio.

324
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias Valores mailRecipeientType mailBCC! mailCC! mailOriginator! mailTo! mailReturnCode mailReturnAccessDe nied! mailReturnAttachme nt! NotFound! OpenFailmailReturnA ttachmentWrite! Failure! mailReturnDiskFull! mailReturnFailure! mailReturnInsufficien tMemory! mailReturnLoginFailu re! mailReturnMessageln Use! mailReturnNoMessag e! mailReturnSucess! mailReturnTextTooLa rge! mailReturnTooManyF iles! mailReturnTooManyR ecipients! mailReturnTooManyS essions! mailReturnUserAbort ! Comentrios Tipos de destinatrios de correio.

Cdigo de retorno das funes de correio.

325

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias MaskdataType Valores DataMask! DataTimeMask! DecimalMask! NumericMask! StringMask! TimeMask! Inside! NoTic! Outside Stradde! Inside! Notic! Outside! Stadde! Comentrios O tipo de dados de EditMask.

MajorTic

O tipo das marcas de escalas principais na escala do grfico.

MinorTic

O tipo de das marcas da escala secundrias na escala de grficos.

326
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias Object Valores 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! TypeBoolean! TypeDate! TypeDataTime! TypeDecimal! TypeDouble! TypeInterger! TypeLong! TypeReal! TypeString! TypeTime! TypeUlnt! TypeULong! Unknown!. Comentrios O tipo do objeto.

ParmType

O tipo de dados do parmetro.

327

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias Pointer Valores Arrow! Beam! Cross! HourGlass! SizeNESW! SizeNS! SizeNWSE! SizeWE! UpArrow! FocusRect! Hand! Off! Csv! ClipBoard! DBase2! DBase3! Dif! Excel! SQLInsert! Sylk! Text! Wk1! Wks! FromBeginning! FromCurrent! FromEnd! Behind! NoTopMost! TopBottom! TopMost! ToTop! AnyCase! Lower! Upper! Comentrios A forma do ponteiro correspondente a funo SetPointer

RowFocuslnd

SaveAsType

O mtodo que ser usado para indicar que uma determinada linha de uma DataWindow detm o foco. O tipo de arquivo a ser criado quando forem gravadas as linhas de uma DataWindow.

SeekType

A posio na qual voc quer iniciar uma busca em FileSeek. Define a ordem de exibio em controle de janela.

SetPosType

TextCase

A altura dos caracteres do texto.

328
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias ToolbarAlignment! Valores AlignAtBottom! AlignAtLeft! AlignAtRight! AlignAtTop! Roating! 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! Comentrios O alinhamento da barra de ferramentas.

TrigEvent

O tipo de evento a ser disparado pela funo TriggerEvent.

329

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias Valores Comentrios 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!

330
Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico

Guia de Referncia : Dados Enumerados

 Tipos de dados Enumerados


Categorias VtextAlign Valores Bottom! MultiLine! Top! VCEnter! CustomVisual! ExternaVisual! Maximized! Minimized! Normal! Child! Main! MD! MDHelp! Popud! Response! Aqppend! Replace! Comentrios O alinhamento do texto.

UserObjects! WindowState

O tipo de objeto do usurio. O estado no qual a janela ou o programa estar em execuo. Tipo da janela.

WindowType

WriteMode

O modo correspondente a funo FileOpen.

331

Adquirido por : Fabrcio Moreira da Silva

Anda mungkin juga menyukai