power builder

18
Programação Sybase PowerBuilder Marcelo Michels Autor

Upload: alisson-chagas-sousa

Post on 23-Jul-2015

335 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Power Builder

Programação Sybase PowerBuilder

Marcelo Michels Autor

Page 2: Power Builder

WorkSpace

WorkSpace é a base para a criação de aplicações. Cada WorkSpace pode

conter um ou mais projetos. Usando a WorkSpace é possível cria uma controlador de

versões. Sem a WorkSpace é impossível desenvolver uma aplicação.

New – WorkSpace – WorkSpace

Target

Os projetos são as Target‟s no PowerBuilder, lembrando que podemos ter

várias target‟s dentro de uma mesma WorkSpace.

New – Target – Aplication

PBT – PowerBuilder Target

A pbt é um arquivo que armazena as informações sobre sua aplicação, como

nome, lista de suas bibliotecas e deploy.

PBL – PowerBuilder Library

Dentro das Target‟s temos as PBL‟s que são utilizadas para separar os objetos

criados dentro da Target.

New – Library – Library

Window

A Window é bem subdividida e notamos na parte inferior algumas abas que fazem esta divisão, as principais são: A aba Event List exibe todos os eventos do objeto que está selecionado.

A aba Function List mostra as Funções e Métodos.

A aba Declare Instance Variables é onde podemos declarar as variáveis do tipo Global

e do tipo Instância.

New – PB Object – Window

Instância, Global e Local São os níveis de declaração das variáveis no sistema. Para entendermos

melhor.

Instância: são as variáveis que ficarão visíveis a todo o objeto e ficarão disponíveis quando o objeto estiver sendo utilizado. Global: pertencem à aplicação. Local: são as variáveis declaradas dentro de métodos ou funções e são destruídas após o término da execução do método ou função.

Variáveis São alocações de memória responsáveis por armazenar algum tipo de

informação. Existem vários tipos de variáveis no PowerBuilder. São eles: Integer, Double, Long, LongLong, Char, String, Date, Time, DateTime, Boolean DataWindow, DataStore e etc...

Padrões de nomenclatura usados no PowerBuilder

Nomes de variáveis devem dizer exatamente para que elas são usadas. Um importante ponto que surge neste instante é que devemos, ao olhar para o nome da

Page 3: Power Builder

variável, saber sua abrangência e seu tipo de dados. As algumas das convenções de nomenclatura de variáveis são as seguintes:

Abrangência

Local l

De instância i

Global g

Recebida por parâmetro (funções)

a (argument)

Tipo

Integer i

Long l

Double d

Decimal dec

String s

Boolean b

Como usar os padrões: Variável local do tipo string, para armazenar o nome de uma pessoa: ls_nome Variável global do tipo integer para armazenar o número de usuários conectados ao sistema: gi_usuarios_conect Variável long de instância para armazenar um contador il_ctd

Sintaxes

Operadores Os operadores relacionais são: =; <>; >; <; >=; <=. Os operadores aritméticos são: +, -, *, /. Os operadores lógicos são: AND (e); OR (ou); NOT (não); e combinações entre eles.

Mensagens Para exibir mensagens em texto usando a caixa de mensagens padrão do

Windows, utilizamos o comando MessageBox(). Sintaxe: MessageBox(<Título>, <Sua mensagem>, <ícone>*, <botão>*, <botão default>*) * Opcionais Icon: Information! (Default) StopSign! Exclamation! Question! None! Button: OK! - (Default) Botão OK OKCancel! - Botões OK e Cancelar YesNo! - Botões Sim e Não YesNoCancel! - Botões Sim, Não, e Cancelar

Page 4: Power Builder

RetryCancel! - Botões Repetir e Cancelar AbortRetryIgnore! - Botões Abortar, Repetir, e Ignorar Exemplo: MessageBox('Atenção', 'Programando!')

Comentários Há duas formas de se inserir comentários no script do PowerBuilder, são elas: Comentário em linha: // Comentário ou comentário em bloco: /* Comentário Comentário linha 2 Comentário linha 3 */

IF O IF é o comando fundamental para desenvolver um sistema

Sintaxe: IF <Condição> THEN <Valor verdadeiro> END IF Sintaxe: IF <Condição> THEN <Valor verdadeiro> ELSE <Valor falso> END IF Sintaxe: IF <Condição> THEN <Valor verdadeiro> Sintaxe: IF <Condição> THEN <Valor verdadeiro> ELSEIF <Condição> THEN <Valor verdadeiro> ELSE <Valor não satisfeito em nenhuma condição> END IF Exemplo: IF DataWindow.Update() > 0 THEN

MessageBox('Curso', 'Dados salvos', INFORMATION!, OK!, 1) ELSE

MessageBox('Curso', 'Problemas ao salvar!', STOPSIGN!, OK!, 1) END IF

Page 5: Power Builder

Choose Case Como foi visto, o comando if serve para situações que exigem condições

(verdadeiro ou falso). Mas para determinadas situações, onde devemos analisar mais de duas condições, existe o comando choose case.

Sintaxe: Choose Case Valor Case 1 Faça Case 2 Faça Case 3, 4 Faça Case 5 TO 9, Faça Case Else Faça End Choose Exemplos: Uma variável chamada Time que tem um valor atribuído a ela. Fazer um teste, verificando qual é o nome do time, e em seguida, dizer qual é a cor da camisa. String Time, CorCamisa Time = „Santos‟ Choose case Time Case “Flamengo” CorCamisa = “vermelha” Case “Grêmio” CorCamisa = “azul” Case “Internacional” CorCamisa = “vermelha” Case “São Paulo” CorCamisa = “branca e vermelha” Case “Santos” CorCamisa = “preta e branca” Case “Palmeiras” CorCamisa = “verde” End choose MessageBox(„Cor da camisa‟, Cor_camisa)

Estruturas de repetição – Laços

For ... To ... Next Executa um conjunto de instruções um número definido ou indefinido de vezes Sintaxe: For <Variável> = <Valor inicial> To <Valor final> Step <Incremento> ... Código Next

Page 6: Power Builder

Exemplos: Integer i For i = 1 to 4 MessageBox(„Testando‟, „Contador: „ + string(i)) Next Exemplos: Integer i For i = 4 to 1 Step –1 MessageBox(„Repetição regressiva‟, „Contador = „ + String(i)) Next Repare que uma variável deve ser declarada para receber o contador.

Do While ... Loop Executar um conjunto de instruções enquanto um determinado estado de

coisas prevalecer. Sintaxe: Do While <Expressão Booleana> Faça Loop Exemplos: Integer i i = 1 Do While i <= 4 i = i + 1 MessageBox(„Testando‟, String(i)) Loop

Exercícios Crie uma WorkSpace com o nome “MeuPrograma”, em: “C:\Aula\”. No mesmo

caminho crie uma Target com o nome “Curso”.

Crie uma window com o nome “w_comandos” e salve dentro da PBL “Curso”.

Na Aplicação chamada Curso coloque no evento Open() o código que fará a chamada para a

primeira window que será executada no nosso sistema, no caso a w_comandos.

Abra a w_ comandos e insira:

Duas SingleLineEdit: sle_Inicio; sle_Fim

Quatro CommandButton: cb_If; cb_choose; cb_Do; cb_For.

Criar quatros métodos: of_if; of_choose; of_do; of_for.

Cada botão deve chamar o seu respectivo método.

Dentro de cada método deve ser testado se o valor dos campos sle_inicio e sle_Fim

são número com o comando:

IsNumber(<string para condição>) Caso não atenda a condição anterior deve mostrar uma mensagem e sair do método.

Dentro do método of_If deve ser testado se sle_Inicio é maior do que sle_Fim e

informado em uma MessageBox.

Page 7: Power Builder

No método of_Choose deve ser testado se sle_Inicio tem os seguintes valores(1, 5, de

6 a 8, maior do que 8 ou se não se encaixa em nenhuma destas condições) e informar

em uma MensageBox.

No método of_Do fazer um contador a partir com valor inicial de 1(um), o sistema deve

mostrar uma mensagem para informar que o valor do contador não é maior do que o

valor do sle_Final enquanto isto for verdade.

No método of_For deve mostrar mensagens com cada um dos números entre

sle_Inicio até sle_Fim.

Funções Internas da IDE Função Open

Abre um objeto de tela, o open exibe a janela e faz todas as suas propriedades

e controles disponiveis para scripts.

Exemplo:

Open(w_ExibeMensagem)

Função Close

Fecha uma Janela e libeba o espaço ocupado por uma janela e todos os

controles na janela.

Exemplo:

Close(w_ExibeMensagem)

Função OpenWithParm

A mesma funcionalidade da funçao Open, mas com um diferencial de

passagem de parâmetro para a janela. Estes parâmetros podem ser strings, numeros

e objetos.

Exemplo:

OpenWithParm (w_ExibeMensagem,”Gravação efetuada com sucesso!”)

Função CloseWithReturn

Fecha a janela e armazena em um valor de retorno no objeto de mensagem.

CloseWithReturn deve ser usado apenas em Windows response.

Exemplo:

CloseWithReturn(Parent,”Close OK!”)

Função Trim

Remove espaços de sobra antes e depois de qualquer string.

Exemplo:

ls_Trim = Trim(“ PowerBuilder ”)

A variável ls_Trim após sua execução resulta em “PowerBuilder”.

Função LeftTrim

Remove os espeços a partir do inicio de uma string.

Exemplo:

Page 8: Power Builder

ls_LeftTrim = LeftTrim(“ PowerBuilder “)

A variável ls_LeftTrim após sua execução resulta em “PowerBuilder ”.

Função RightTrim

Remove os espeços a partir do inicio de uma string.

Exemplo:

ls_RightTrim = RightTrim(“ PowerBuilder “)

A variável ls_LeftTrim após sua execução resulta em “ PowerBuilder”.

Função Left

Obtém um numero especifico de caracteres a partir do inicio de uma string até

o numero informado no segundo parâmetro.

Exemplo:

ls_Left = Left (“PowerBuilder“,5)

A variável ls_Left após sua execução resulta em “Power”.

Função Right

Obtém um numero especifico de caracteres a partir do fim de uma string até o

numero informado no segundo parâmetro.

Exemplo:

ls_Right = Right(“PowerBuilder“,7)

A variável ls_ Right após sua execução resulta em “Builder”.

Função Pos

Procurara do inicio de um caractere ou exprexão dentro de um literal.

Exemplo:

ll_Pos = Pos(“PowerBuilder”,”er”)

A variável ll_ Right após sua execução resulta em 4.

Função Len

Retorna o tamanho da String ou Blob.

Exemplo:

ll_Len = Len(“PowerBuilder”)

A variável ll_ Len após sua execução resulta em 12.

Função Mid

Obtém um numero especificado de caracteres a partir de uma determinada

posição em uma string.

Exemplo:

ls_Mid = Mid(“PowerBuilder”,3,5)

A variável ls_Mid após sua execução resulta em “werbu”.

Função Upper

Converte todos os caracteres em uma string para maiúsculas.

Exemplo:

Page 9: Power Builder

ls_Upper = Upper(“PowerBuilder”)

A variável ls_Upper após sua execução resulta em “POWERBUILDER”.

Função Lower

Converte todos os caracteres em uma string para minúsculas.

Exemplo:

ls_Lower = Lower(“POWERBUILDER”)

A variável ls_Lower após sua execução resulta em “powerbuilder”.

Função Reverse

Inverte a string informada.

Exemplo:

ls_Reverse = Reverse(“powerbuilder”)

A variável ls_Reverse após sua execução resulta em “redliubrewop”.

Função Replace

Altera parte de uma string, substitui um caractere por outro determinado.

Exemplo:

ls_Replace = Replace(“powerbuilder”, 1, 3, “SYBASE”)

A variável ls_Reverse após sua execução resulta em “SYBASEerbuilder”.

Função Round

Arredonda um número para o número especificado de casas decimais.

Exemplo:

lde_Round = Round(9.626, 2)

A variável lde_Round após sua execução resulta em 9.63.

Função Truncate

Trunca um número para o número especificado de casas decimais.

Exemplo:

lde_Truncate = Truncate(9.626, 2)

A variável lde_Round após sua execução resulta em 9.62.

Função UpperBound

Obtém o limite superior de uma dimensão de um array.

Exemplo:

Integer li_A[ ], li_UpperBound

li_A[1] = 1

li_A[2] = 5

li_A[3] = 10

li_UpperBound = UpperBound(li_A)

A variável li_UpperBound após sua execução resulta em 3.

Função Today

Obtém a data atual.

Exemplo:

Date ld_Atual

Page 10: Power Builder

ld_Atual = Today( )

Função Now

Obtém a hora atual.

Exemplo:

Time lt_Atual

lt_Atual = Now( )

Função ABS

Obtém o valor absoluto de um número.

Exemplo:

Iteger li_Abs

li_Abs = Abs(-4)

A variável li_Abs após sua execução resulta em 4.

Função Sleep

Pausa a aplicação por um tempo em segundos, determinado no parâmetro da

função.

Exemplo:

Sleep(10)

Função Yield

Liberta o uso do processador dedicado a aplicação para ser usado em damais

recursos.

Exemplo:

Yield( )

Função DaysAfter

Obtém o número de dias entre as datas informadas.

Exemplo:

ll_Dias = DaysAfter(20/08/2011, 25/08/2011)

A variável ll_Dias após sua execução resulta em 5.

Função Fill

Cria uma sequência de caracteres especificada repetindo-os de acordo com o

parâmetro informado.

Exemplo:

ls_Fill = Fill(“-”,5)

A variável ls_Fill após sua execução resulta em “-----”.

Função IsNumber

Retorna se o valor string é um numero.

Exemplo:

If IsNumber(“12635475”) Then

MessageBox(“Tipo”,”É numero”)

Else

MessageBox(“Tipo”,”Não é numero”)

Page 11: Power Builder

End If

Função IsDate

Retorna se o valor string é uma data.

Exemplo:

If Not IsDate (“12635475”) Then

MessageBox(“Tipo”,” Não é data”)

Else

MessageBox(“Tipo”,”É data”)

End If

Função RetativeDate

Obtém uma data de diferença entre número de dias informado antes ou depois

de outra data.

Exemplo:

ld_Relative = RelativeDate(21/08/2011, 2)

A variável ld_Relative após sua execução resulta em 23/08/2011.

Função RetativeTime

Obtém uma hora de diferença entre número de segundos informado antes ou

depois de outra hora.

Exemplo:

lt_Relative = RelativeTime(21/08/2011, 2)

A variável lt_Relative após sua execução resulta em 23/08/2011.

Função Restart

Interrompe a execução de todos os scripts, fecha todas as janelas, desconecta

do banco de dados e reinicia a aplicação.

Exemplo:

Restart( )

Create

Cria uma instância/objeto da classe para um tipo de objeto especificado ou

nome.

Exemplo:

Syntax 1

n_Conexao lnv_Conexao

lnv_Conexao = Create n_Conexao

Syntax 2

String ls_Classe

n_Conexao lnv_Conexao

ls_Classe = “n_Conexao”

lnv_Conexao = Create Using ls_Class

Page 12: Power Builder

Destroy

Elimina uma instância do objeto que foi criado com a instrução CREATE.

Depois de uma declaração DESTROY, as propriedades da instância do objeto

excluído não pode ser mais referenciado.

TabOrder

TabOrder especifica a ordem na qual o controle receberá o foco. O TabOrder

só é aplicado em componentes visíveis.

Exemplo:

Objeto.TabOrder = 10

Também há possibilidade de definir o taborder em momento de construção do

aplicativo.

This

O pronome This refere-se a classe/objeto do aplicativo ou controle que possui o

script atual.

Exemplo:

This.Text = “OK”

Parent

O pronome Parent refere-se ao objeto que contem o objeto atual. Por exemplo,

uma janela é o objeto pai dos controles que ela possui. Resumindo-se é o objeto

principal onde o componente esta contido.

Exemplo:

Close(Parent)

Exercícios Construa uma nova window chamada w_principal. Quando a aplicação abrir, deve chamar a w_principal. No subitem Sair deve conter o código para fechar a aplicação. O subitem comandos fazer a chamada da tela w_comando Criar uma window chamada w_exercicio Modelar a w_exercicio contendo os seguintes controles:

Page 13: Power Builder

Controles SingleLineEdit sle_nome sle_sobrenome sle_idade sle_filhos sle_rua sle_bairro DropDownListBox ddlb_estado RadioButton rb_masculino rb_feminino GroupBox gb_Dadosprincipais gb_sexo gb_endereco CommandButton cb_incluirfilhos cb_exibirfilhos cb_limpar cb_verificardados cb_mostrardados cb_sair

Propriedades Preencher a propriedade Items da ddlb_estado com os estados da região. Todos os campos devem iniciar limpos.

Função de cada botão da Window cb_limpar - Limpar todos os controles da window

Como fazer:

Para todos os controles que tiverem texto (propriedade Text), atribuir o valor „‟.

cb_verificardados – Analisar a validade dos dados digitados (emitir um MessageBox se todos estiverem ok, mas se algum estiver com problema, emitir um MessageBox e posicionar o foco em cima): Todos os campos devem ser preenchidos (obrigatórios). Como fazer: Fazer vários testes condicionais, testando cada conteúdo de campo texto. A idade do cliente deve ser maior que 15 e menor que 100 anos. O número de filhos não pode passar de 20 e não pode ser menor que 0. Ao validar os campos, todos os textos (conteúdos) devem ser convertidos para maiúsculo. Como fazer: Usar função que converte texto para caixa alta.

Page 14: Power Builder

cb_incluirfilhos – Criar e chamar uma nova window a w_filho, chama a window tantas vezes quanto definido no número de filhos.

Criar uma variável de instância na w_exercicio_01[] ela irá armazenar cada filho em um elemento Criar estrutura de repetição para guardar cada filho – a janela w_filho deve ser chamada uma vez para cada filho cb_exibirfilhos – Mostrar um MessageBox com todos filhos do cliente. Como fazer:

Criar uma função (of_textofilhos) que retorne uma string contendo todos os filhos do cliente, separados por um caractere „~r‟ que serve para quebrar a linha. Exibir o resultado desta função em um MessageBox. Exemplo: Lista de filhos ----------------------------- Claudio Rafael Cristiane Roberta ----------------------------- cb_mostrardados – Mostrar um MessageBox com todos os dados do cliente, incluindo todos os filhos. Como fazer: Criar uma função (of_textodados) que retorne uma string contendo todos os dados do cliente (passar por todos os controles). Aproveitar a função of_textofilhos. Exemplo de texto a mostrar: Nome: João Batista Idade: 36 Anos Sexo: Masculino Filhos: 3 Lista de filhos ----------------------------- Claudio Rafael Cristiane Roberta ----------------------------- Endereço:

Page 15: Power Builder

Rua: 7 de Setembro, 325 Bairro: Centro Estado: Paraná

cb_sair – Sair do programa – Pedir ao usuário se ele deseja realmente sair do programa (MessageBox).

Integração com banco de dados

Conexão

Para conectar-se a banco de dados o PowerBuilder Disponibiliza varias formas,

as mais usadas são:

Conexão pelo driver nativo.

Conexão pelo driver ODBC (Open Data Base Connectivity)

Objeto Transaction

Objeto responsável por criar uma transação entre sua aplicação e o banco de

dados, permitindo a leitura e a escrita no banco de dados. O PowerBuilder possui um

objeto padrao de transação SQLCA.

Tratamento de erro

SQLCode

Código referente ao cucesso ou erro referente a sua operação ao banco de

dados.

SQLDBCode

Código retornado do banco de dados.

SQLErrText

Mensagem de erro retornada pelo banco de dados.

SQLNRows

Numero de linhas afetadas no seu banco de dados referente a operação

executada.

Comandos SQL

Insert

Inserir registros no banco de dados.

Exemplo:

Insert Into cliente ( codigo, nome) Values ( 1, „Marcelo‟)

Page 16: Power Builder

Update

Atualizar Registros no banco de dados que correspondem as especificações do

Where.

Exemplo:

Update Cliente Set nome = “Marcelo Michels” Where codigo = 1;

Delete

Apagar Registros do banco de dados, este comando também pode ser usado a

especificação Where.

Exemplo:

Delete From Cliente Where codigo = 1;

Select

Lê as Informações já gravadas em banco de dados.

Exemplo:

Select * From cliente Where codigo = 1;

Select codigo, nome From Cliente Where codigo = 1;

Commit & RollBack

Sempre que um comando DML (Data Manipulation Language) é executado no

banco de dados, é necessário executar o comando Commit ou RollBack.

Estes comandos são responsáveis por confirmar ou desfazer a operação.

o Commit – Responsável por confirmar a operação.

o RollBack – Responsável por desfazer a operação.

Uma Vez executado um dos comandos acima mencionados não é possível

executar outro na mesma operação.

Page 17: Power Builder
Page 18: Power Builder