• Nenhum resultado encontrado

Incluindo controle DataWindow a Window (janela)

No documento PowerBuilder_9[1].0_Básico2 (páginas 146-153)

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.

PowerBuilder 9.0 Básico Capítulo 9 124

Incluindo controle DataWindow a Window (janela)

No template propriedades à direita no item DataObject. Clique no botão de seleção mais à direita e selecione o objeto DataWindow, d_lista01.

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

Com estes procedimentos, já podemos visualizar os labels do objeto DataWindow, d_lista01.

Note que o PowerBuilder 9.0 automaticamente atribuiu a esse controle DataWindow o nome de dw_1, veja o atributo Name na figura. Você pode deixar sempre o PowerBuilder 9.0, atribuir nomes à seus controles, como também pode dar a eles o nome que desejar, mas sempre que possível, siga as regras já vistas para identificação de controles e objetos.

Agora repetiremos toda a operação anterior, para incluirmos o objeto DataWindow d_list02, em um novo controle DataWindow abaixo do controle dw_1.

PowerBuilder 9.0 Básico Capítulo 9 125

Incluindo controle DataWindow a Window (janela)

Veja como ficou:

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

PowerBuilder 9.0 Básico Capítulo 9 126

Incluindo controle DataWindow a Window (janela)

Mas notará que nenhum dado foi recuperado da base de dados porque ainda não vinculamos o controle a esta base de dados.

Para vincular o controle DataWindow a base de dados primeiro temos que ativar o banco de dados ou seja, colocá-lo ativo, para depois poder extrair dados desse banco, através da tabela customers.

Usaremos a transação padrão, a SQLCA, como já vimos em capítulos anteriores.

Os parâmetros necessários para serem informados são:

sqlca.dbms : Recebe o tipo de conexão nesse caso ODBC. sqlca.dbparm : Recebe os parâmetros de conexão como Nome do

profile definido, o nome do usuário do banco e a senha de acesso para o usuário que esta pedindo a conexão. // Aplica os parâmetros do DBMS de teste, a transação SQLCA sqlca.dbms ="ODBC"

sqlca.dbparm ="ConnectString='DSN=EAS Demo DB V9;UID=dba;PWD=sql'"

Após a definição dos parâmetros, conectamos ao banco. // Conecta com o banco

Connect;

O banco será ativado e estará disponível para acesso, para testarmos usamos:

//Testando a conexão If sqlca.sqlcode < 0 Then

MessageBox ("Erro: Impossivel conectar com o banco de dados", &

sqlca.sqlerrtext, Exclamation!) HALT

PowerBuilder 9.0 Básico Capítulo 9 127

Incluindo controle DataWindow a Window (janela)

//Se tudo estiver OK

//associamos o controle DataWindow a transação SQLCA //e recuperamos os dados

dw_1.settransobject(SQLCA) dw_1.Retrieve()

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

dw_2.settransobject(SQLCA)

Note que não faremos a recuperação dos dados neste momento porque os dados para este controle deverão ser recuperados a partir da seleção no controle DataWindow dw_1.

Para que o controle DataWindow dw_1 execute a seleção para o controle DataWindow dw_2 dê um duplo clique no controle dw_1, procure na drop- down de eventos, o evento “clicked” e escreva em PowerScript o código a seguir.

//Cria a variável numérica que recebera o código para a //recuperação em dw_2

integer wk_id

//Recupera a seleção

wk_id = dw_1.GetItemNumber(row, "id")

//Recupera os dados segundo a seleção em dw_1 dw_2.Retrieve(wk_id)

PowerBuilder 9.0 Básico Capítulo 9 128

Incluindo controle DataWindow a Window (janela)

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

Teremos então:

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

PowerBuilder 9.0 Básico Capítulo 9 129

Incluindo controle DataWindow a Window (janela)

O próximo passo será o desenvolvimento de rotinas de inclusão, atualização e alteração. Com esses procedimentos teremos uma visão bem ampla de como se pode manipular dados através de controles DataWindow e de como é simples e seguro faze-lo.

A manipulação de dados com controles DataWindow, embora seja uma tarefa simples pode se tornar complexa assim como, tão complexa for a sua aplicação e o foco do seu negocio. Você verá que esta tarefa por mais complexa que ela seja se tornará menos árdua utilizando os objetos e controles DataWindow.

O desenvolvimento utilizando objetos DataWindow não se limita às caixas de diálogos e wizards disponibilizados pelo PowerBuilder 9.0. Através de um editor SQL, como SQLplus® da Oracle por exemplo, você poderá desenvolver querys complexas e importar para o painter de SQL do PowerBuilder 9.0, além disso, você também poderá trabalhar com CURSOR e PROCEDURE para recuperar dados em um objeto DataWindow.

Uma outra forma de se trabalhar com um objeto DataWindow é a utilização de DataStore, o DataStore é um controle DataWindow não visual, ou seja, é um controle DataWindow invisível, Quase todas as funcionalidades de um controle DataWindow estão disponibilizados, menos as funcionalidades visuais que não caberiam ao DataStore, tendo em vista que ele não permite visualizar dados e só e somente só, recuperar e manipular dados.

Se você entendeu o que é um controle DataWindow, tenha certeza que também entendeu o que é um DataStore. No decorrer desse capítulo iremos exemplificar as diversas técnicas de se trabalhar com o objeto DataWindow. Para que o exemplo comece a ficar mais completo iremos incluir a rotina de inclusão de dados. Utilizaremos alguns conceitos interessantes que já foram explicados, mas não exemplificados, como criar um evento de usuário, chamar estes eventos e incluir objetos na janela.

PowerBuilder 9.0 Básico Capítulo 9 130

No documento PowerBuilder_9[1].0_Básico2 (páginas 146-153)