power builder
TRANSCRIPT
-
Programao Sybase PowerBuilder
Marcelo Michels Autor
-
WorkSpace
WorkSpace a base para a criao de aplicaes. Cada WorkSpace pode
conter um ou mais projetos. Usando a WorkSpace possvel cria uma controlador de
verses. Sem a WorkSpace impossvel desenvolver uma aplicao.
New WorkSpace WorkSpace
Target
Os projetos so as Targets no PowerBuilder, lembrando que podemos ter
vrias targets dentro de uma mesma WorkSpace.
New Target Aplication
PBT PowerBuilder Target
A pbt um arquivo que armazena as informaes sobre sua aplicao, como
nome, lista de suas bibliotecas e deploy.
PBL PowerBuilder Library
Dentro das Targets temos as PBLs que so 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 diviso, as principais so: A aba Event List exibe todos os eventos do objeto que est selecionado.
A aba Function List mostra as Funes e Mtodos.
A aba Declare Instance Variables onde podemos declarar as variveis do tipo Global
e do tipo Instncia.
New PB Object Window
Instncia, Global e Local So os nveis de declarao das variveis no sistema. Para entendermos
melhor.
Instncia: so as variveis que ficaro visveis a todo o objeto e ficaro disponveis quando o objeto estiver sendo utilizado. Global: pertencem aplicao. Local: so as variveis declaradas dentro de mtodos ou funes e so destrudas aps o trmino da execuo do mtodo ou funo.
Variveis So alocaes de memria responsveis por armazenar algum tipo de
informao. Existem vrios tipos de variveis no PowerBuilder. So eles: Integer, Double, Long, LongLong, Char, String, Date, Time, DateTime, Boolean DataWindow, DataStore e etc...
Padres de nomenclatura usados no PowerBuilder
Nomes de variveis devem dizer exatamente para que elas so usadas. Um importante ponto que surge neste instante que devemos, ao olhar para o nome da
-
varivel, saber sua abrangncia e seu tipo de dados. As algumas das convenes de nomenclatura de variveis so as seguintes:
Abrangncia
Local l
De instncia i
Global g
Recebida por parmetro (funes)
a (argument)
Tipo
Integer i
Long l
Double d
Decimal dec
String s
Boolean b
Como usar os padres: Varivel local do tipo string, para armazenar o nome de uma pessoa: ls_nome Varivel global do tipo integer para armazenar o nmero de usurios conectados ao sistema: gi_usuarios_conect Varivel long de instncia para armazenar um contador il_ctd
Sintaxes Operadores Os operadores relacionais so: =; ; >; =;
-
RetryCancel! - Botes Repetir e Cancelar AbortRetryIgnore! - Botes Abortar, Repetir, e Ignorar Exemplo: MessageBox('Ateno', 'Programando!')
Comentrios H duas formas de se inserir comentrios no script do PowerBuilder, so elas: Comentrio em linha: // Comentrio ou comentrio em bloco: /* Comentrio Comentrio linha 2 Comentrio linha 3 */
IF O IF o comando fundamental para desenvolver um sistema
Sintaxe: IF THEN END IF Sintaxe: IF THEN ELSE END IF Sintaxe: IF THEN Sintaxe: IF THEN ELSEIF THEN ELSE 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
-
Choose Case Como foi visto, o comando if serve para situaes que exigem condies
(verdadeiro ou falso). Mas para determinadas situaes, onde devemos analisar mais de duas condies, existe o comando choose case.
Sintaxe: Choose Case Valor Case 1 Faa Case 2 Faa Case 3, 4 Faa Case 5 TO 9, Faa Case Else Faa End Choose Exemplos: Uma varivel chamada Time que tem um valor atribudo 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 Grmio CorCamisa = azul Case Internacional CorCamisa = vermelha Case So 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 repetio Laos
For ... To ... Next Executa um conjunto de instrues um nmero definido ou indefinido de vezes Sintaxe: For = To Step ... Cdigo Next
-
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(Repetio regressiva, Contador = + String(i)) Next Repare que uma varivel deve ser declarada para receber o contador.
Do While ... Loop Executar um conjunto de instrues enquanto um determinado estado de
coisas prevalecer. Sintaxe: Do While Faa Loop Exemplos: Integer i i = 1 Do While i
-
No mtodo of_Choose deve ser testado se sle_Inicio tem os seguintes valores(1, 5, de
6 a 8, maior do que 8 ou se no se encaixa em nenhuma destas condies) e informar
em uma MensageBox.
No mtodo 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 no maior do que o
valor do sle_Final enquanto isto for verdade.
No mtodo of_For deve mostrar mensagens com cada um dos nmeros entre
sle_Inicio at sle_Fim.
Funes Internas da IDE Funo 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)
Funo Close
Fecha uma Janela e libeba o espao ocupado por uma janela e todos os
controles na janela.
Exemplo:
Close(w_ExibeMensagem)
Funo OpenWithParm
A mesma funcionalidade da funao Open, mas com um diferencial de
passagem de parmetro para a janela. Estes parmetros podem ser strings, numeros
e objetos.
Exemplo:
OpenWithParm (w_ExibeMensagem,Gravao efetuada com sucesso!)
Funo 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!)
Funo Trim
Remove espaos de sobra antes e depois de qualquer string.
Exemplo:
ls_Trim = Trim( PowerBuilder )
A varivel ls_Trim aps sua execuo resulta em PowerBuilder.
Funo LeftTrim
Remove os espeos a partir do inicio de uma string.
Exemplo:
-
ls_LeftTrim = LeftTrim( PowerBuilder )
A varivel ls_LeftTrim aps sua execuo resulta em PowerBuilder .
Funo RightTrim
Remove os espeos a partir do inicio de uma string.
Exemplo:
ls_RightTrim = RightTrim( PowerBuilder )
A varivel ls_LeftTrim aps sua execuo resulta em PowerBuilder.
Funo Left
Obtm um numero especifico de caracteres a partir do inicio de uma string at
o numero informado no segundo parmetro.
Exemplo:
ls_Left = Left (PowerBuilder,5)
A varivel ls_Left aps sua execuo resulta em Power.
Funo Right
Obtm um numero especifico de caracteres a partir do fim de uma string at o
numero informado no segundo parmetro.
Exemplo:
ls_Right = Right(PowerBuilder,7)
A varivel ls_ Right aps sua execuo resulta em Builder.
Funo Pos
Procurara do inicio de um caractere ou exprexo dentro de um literal.
Exemplo:
ll_Pos = Pos(PowerBuilder,er)
A varivel ll_ Right aps sua execuo resulta em 4.
Funo Len
Retorna o tamanho da String ou Blob.
Exemplo:
ll_Len = Len(PowerBuilder)
A varivel ll_ Len aps sua execuo resulta em 12.
Funo Mid
Obtm um numero especificado de caracteres a partir de uma determinada
posio em uma string.
Exemplo:
ls_Mid = Mid(PowerBuilder,3,5)
A varivel ls_Mid aps sua execuo resulta em werbu.
Funo Upper
Converte todos os caracteres em uma string para maisculas.
Exemplo:
-
ls_Upper = Upper(PowerBuilder)
A varivel ls_Upper aps sua execuo resulta em POWERBUILDER.
Funo Lower
Converte todos os caracteres em uma string para minsculas.
Exemplo:
ls_Lower = Lower(POWERBUILDER)
A varivel ls_Lower aps sua execuo resulta em powerbuilder.
Funo Reverse
Inverte a string informada.
Exemplo:
ls_Reverse = Reverse(powerbuilder)
A varivel ls_Reverse aps sua execuo resulta em redliubrewop.
Funo Replace
Altera parte de uma string, substitui um caractere por outro determinado.
Exemplo:
ls_Replace = Replace(powerbuilder, 1, 3, SYBASE)
A varivel ls_Reverse aps sua execuo resulta em SYBASEerbuilder.
Funo Round
Arredonda um nmero para o nmero especificado de casas decimais.
Exemplo:
lde_Round = Round(9.626, 2)
A varivel lde_Round aps sua execuo resulta em 9.63.
Funo Truncate
Trunca um nmero para o nmero especificado de casas decimais.
Exemplo:
lde_Truncate = Truncate(9.626, 2)
A varivel lde_Round aps sua execuo resulta em 9.62.
Funo UpperBound
Obtm o limite superior de uma dimenso 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 varivel li_UpperBound aps sua execuo resulta em 3.
Funo Today
Obtm a data atual.
Exemplo:
Date ld_Atual
-
ld_Atual = Today( )
Funo Now
Obtm a hora atual.
Exemplo:
Time lt_Atual
lt_Atual = Now( )
Funo ABS
Obtm o valor absoluto de um nmero.
Exemplo:
Iteger li_Abs
li_Abs = Abs(-4)
A varivel li_Abs aps sua execuo resulta em 4.
Funo Sleep
Pausa a aplicao por um tempo em segundos, determinado no parmetro da
funo.
Exemplo:
Sleep(10)
Funo Yield
Liberta o uso do processador dedicado a aplicao para ser usado em damais
recursos.
Exemplo:
Yield( )
Funo DaysAfter
Obtm o nmero de dias entre as datas informadas.
Exemplo:
ll_Dias = DaysAfter(20/08/2011, 25/08/2011)
A varivel ll_Dias aps sua execuo resulta em 5.
Funo Fill
Cria uma sequncia de caracteres especificada repetindo-os de acordo com o
parmetro informado.
Exemplo:
ls_Fill = Fill(-,5)
A varivel ls_Fill aps sua execuo resulta em -----.
Funo IsNumber
Retorna se o valor string um numero.
Exemplo:
If IsNumber(12635475) Then
MessageBox(Tipo, numero)
Else
MessageBox(Tipo,No numero)
-
End If
Funo IsDate
Retorna se o valor string uma data.
Exemplo:
If Not IsDate (12635475) Then
MessageBox(Tipo, No data)
Else
MessageBox(Tipo, data)
End If
Funo RetativeDate
Obtm uma data de diferena entre nmero de dias informado antes ou depois
de outra data.
Exemplo:
ld_Relative = RelativeDate(21/08/2011, 2)
A varivel ld_Relative aps sua execuo resulta em 23/08/2011.
Funo RetativeTime
Obtm uma hora de diferena entre nmero de segundos informado antes ou
depois de outra hora.
Exemplo:
lt_Relative = RelativeTime(21/08/2011, 2)
A varivel lt_Relative aps sua execuo resulta em 23/08/2011.
Funo Restart
Interrompe a execuo de todos os scripts, fecha todas as janelas, desconecta
do banco de dados e reinicia a aplicao.
Exemplo:
Restart( )
Create
Cria uma instncia/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
-
Destroy
Elimina uma instncia do objeto que foi criado com a instruo CREATE.
Depois de uma declarao DESTROY, as propriedades da instncia do objeto
excludo no pode ser mais referenciado.
TabOrder
TabOrder especifica a ordem na qual o controle receber o foco. O TabOrder
s aplicado em componentes visveis.
Exemplo:
Objeto.TabOrder = 10
Tambm h possibilidade de definir o taborder em momento de construo 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)
Exerccios Construa uma nova window chamada w_principal. Quando a aplicao abrir, deve chamar a w_principal. No subitem Sair deve conter o cdigo para fechar a aplicao. O subitem comandos fazer a chamada da tela w_comando Criar uma window chamada w_exercicio Modelar a w_exercicio contendo os seguintes controles:
-
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 regio. Todos os campos devem iniciar limpos.
Funo de cada boto 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 (obrigatrios). Como fazer: Fazer vrios testes condicionais, testando cada contedo de campo texto. A idade do cliente deve ser maior que 15 e menor que 100 anos. O nmero de filhos no pode passar de 20 e no pode ser menor que 0. Ao validar os campos, todos os textos (contedos) devem ser convertidos para maisculo. Como fazer: Usar funo que converte texto para caixa alta.
-
cb_incluirfilhos Criar e chamar uma nova window a w_filho, chama a window tantas vezes quanto definido no nmero de filhos.
Criar uma varivel de instncia na w_exercicio_01[] ela ir armazenar cada filho em um elemento Criar estrutura de repetio 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 funo (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 funo 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 funo (of_textodados) que retorne uma string contendo todos os dados do cliente (passar por todos os controles). Aproveitar a funo of_textofilhos. Exemplo de texto a mostrar: Nome: Joo Batista Idade: 36 Anos Sexo: Masculino Filhos: 3 Lista de filhos ----------------------------- Claudio Rafael Cristiane Roberta ----------------------------- Endereo:
-
Rua: 7 de Setembro, 325 Bairro: Centro Estado: Paran
cb_sair Sair do programa Pedir ao usurio se ele deseja realmente sair do programa (MessageBox).
Integrao com banco de dados
Conexo
Para conectar-se a banco de dados o PowerBuilder Disponibiliza varias formas,
as mais usadas so:
Conexo pelo driver nativo.
Conexo pelo driver ODBC (Open Data Base Connectivity)
Objeto Transaction
Objeto responsvel por criar uma transao entre sua aplicao e o banco de
dados, permitindo a leitura e a escrita no banco de dados. O PowerBuilder possui um
objeto padrao de transao SQLCA.
Tratamento de erro
SQLCode
Cdigo referente ao cucesso ou erro referente a sua operao ao banco de
dados.
SQLDBCode
Cdigo 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 operao
executada.
Comandos SQL
Insert
Inserir registros no banco de dados.
Exemplo:
Insert Into cliente ( codigo, nome) Values ( 1, Marcelo)
-
Update
Atualizar Registros no banco de dados que correspondem as especificaes do
Where.
Exemplo:
Update Cliente Set nome = Marcelo Michels Where codigo = 1;
Delete
Apagar Registros do banco de dados, este comando tambm pode ser usado a
especificao Where.
Exemplo:
Delete From Cliente Where codigo = 1;
Select
L as Informaes 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, necessrio executar o comando Commit ou RollBack.
Estes comandos so responsveis por confirmar ou desfazer a operao.
o Commit Responsvel por confirmar a operao.
o RollBack Responsvel por desfazer a operao.
Uma Vez executado um dos comandos acima mencionados no possvel
executar outro na mesma operao.