Você está na página 1de 18

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 De instncia Global Recebida por (funes)

l i g parmetro a (argument)

Tipo Integer Long Double Decimal String Boolean Como usar os padres:

i l d dec s b

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: =; <>; >; <; >=; <=. Os operadores aritmticos so: +, -, *, /. Os operadores lgicos so: AND (e); OR (ou); NOT (no); e combinaes entre eles.

Mensagens
Para exibir mensagens em texto usando a caixa de mensagens padro do Windows, utilizamos o comando MessageBox(). Sintaxe: MessageBox(<Ttulo>, <Sua mensagem>, <cone>*, <boto>*, <boto default>*) * Opcionais Icon: Information! (Default) StopSign! Exclamation! Question! None! Button: OK! - (Default) Boto OK OKCancel! - Botes OK e Cancelar YesNo! - Botes Sim e No YesNoCancel! - Botes Sim, No, e Cancelar

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 <Condio> THEN <Valor verdadeiro> END IF Sintaxe: IF <Condio> THEN <Valor verdadeiro> ELSE <Valor falso> END IF Sintaxe: IF <Condio> THEN <Valor verdadeiro> Sintaxe: IF <Condio> THEN <Valor verdadeiro> ELSEIF <Condio> THEN <Valor verdadeiro> ELSE <Valor no satisfeito em nenhuma condio> 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 <Varivel> = <Valor inicial> To <Valor final> Step <Incremento> ... 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 <Expresso Booleana> Faa Loop Exemplos: Integer i i=1 Do While i <= 4 i=i+1 MessageBox(Testando, String(i)) Loop

Exerccios
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 Aplicao chamada Curso coloque no evento Open() o cdigo 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 mtodos: of_if; of_choose; of_do; of_for. Cada boto deve chamar o seu respectivo mtodo. Dentro de cada mtodo deve ser testado se o valor dos campos sle_inicio e sle_Fim so nmero com o comando: IsNumber(<string para condio>) Caso no atenda a condio anterior deve mostrar uma mensagem e sair do mtodo. Dentro do mtodo of_If deve ser testado se sle_Inicio maior do que sle_Fim e informado em uma MessageBox.

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.