Fórum Barreira Inicial no Firebird #39884

04/11/2003

0

Aqui estou eu novamente. Consegui baixar uma apostila muito boa (chama-se delphiCS) que oferece uma visão panorâmica da filosofia Cliente/Servidor. Depois de ter lido uma parte dela (pretendo ler o restante), percebo que Cliente/Servidor em essência é uma filosofia de trabalho em rede, não se aplica a uma máquina que trabalha sozinha. Entretanto, ao desenvolver um projeto, dispondo de apenas uma máquina para isso, deve ser possível simular nesta máquina o ambiente de rede e desenvolver nela uma aplicação Cliente/Servidor a ser futuramente instalada em uma rede. Acho que é aí que reside a minha dificuldade. Acho que mesmo usando apenas um computador tenho que me colocar ora na situação de servidor, ora na de cliente e é o que não estou sabendo fazer.
Talvez possam me ajudar a resolver um caso específico. Desenvolvi um programa relativamente simples porém bastante funcional, que permite a um usuário controlar seu movimento financeiro fazendo lançamentos de receitas e despesas. O programa dá a opção de incluir, excluir, alterar lançamentos, exibir gráficos (usando o TChar), imprimir relatórios, etc. Com o duplo objetivo de ganhar experiência e de tornar o programa mais atraente para possíveis interessados, decide iniciar uma segunda versão deste programa, incluindo agora um SGBD (escolhi o Firebird) e a segurança resultante do uso da filosofia Cliente/Servidor.
Perdido em meio a um mar de ferramentas e opções, tentei seguir o exemplo da página 18 da revista 45, IBX e ClientDataSets. Para isso criei um data module e adicionei os componentes:
IbDataBase, IbTransaction, IbQuery (paleta Interbase), DataSetProvider, ClientDataSet e DataSource (paleta Data Access). O Form principal de programa é um menu. Ao selecionar, neste menu, a opção lançamentos, um outro form deve ser exibido, no qual existe um DbGrid que deveria mostrar os lançamentos já incluídos na tabela respectiva.
Na unit do data module aparecem os nomes dos campos da tabela Nr, espédie, valor, data, etc, do lançamento, como campos persistentes da Query, mas não consigo que esses dados apareçam no DbGrid. O foramulário que o contem é criado e mostrado quando é dada a opção lançamentos, mas o DbGrid permanece vazio. As ´ligações´ entre componentes foram feitas de acordo com o diagrama na Fig. 2 do artigo mencionado.
Tudo pode ser conseqüência de um pequeno detalhe, ou será que alguma coisa de fundamental está sendo negligenciada? Consegui fazer todo o programa como uma aplicação desktop e utilizando técnicas do Pascal para o tratamento do arquivo lançamentos. Entretanto, não consigo deslanchar com o FireBird.
Agradeço, mais uma vez, a quem possa ajudar.


Roberto Padilha

Roberto Padilha

Responder

Posts

06/11/2003

Marcos Fernando

Bom, na minha opnião vc deve criarum programa Client\servidor, pois funciona com 1 ou mais computadores, e seu objetivo és comercializar teu programa, com certeza vai ter clientes com mais de um micro, kra só peso desculpas por minha falta de tempo para te auxiliar, mais vc está no caminho certo com o FireBird,

Procure usar o Maximo dele por meio das SPs, Tringgers e os vaios recursos disponiveis,,,,

uma boa é o site www.firebase.com.br lá vc encontrará dicas exeplos e outros....


Responder

Gostei + 0

08/11/2003

Afarias

|percebo que Cliente/Servidor em essência é uma filosofia de trabalho
|em rede, não se aplica a uma máquina que trabalha sozinha.

Perfeito.


|Entretanto, ao desenvolver um projeto, dispondo de apenas uma
|máquina para isso, deve ser possível simular nesta máquina o ambiente
|de rede e desenvolver nela uma aplicação Cliente/Servidor a ser
|futuramente instalada em uma rede.

Vc não poderá ver o efeito/impácto de sua programação para um ambiente com muitos usuários -- mas, se vc trabalhar com uma base com MUITOS registros (fictícios) e com os conceitos de C/S em mente, estará no caminho certo e seu sistema deverá rodar perfeitamente no ambiente real.


|Acho que mesmo usando apenas um computador tenho que me colocar
|ora na situação de servidor, ora na de cliente e é o que não estou
|sabendo fazer.

Não -- apenas tenha em mente ´como o servidor trabalha´ ... preocupe-se apenas em seguir as ´práticas´ C/S no desenvolvimento de seu CLIENTE. -- Não tem problema o fato do Cliente e Servidor serem na mesma máquina.

Específicamente para o INTERBASE/FIREBIRD... NUNCA use conexão LOCAL, sempre use TCP/IP com o servidor sendo LOCALHOST (endereço de loopback) para que a comunicação utilize o mesmo transporte q será usando na rede.


|mas não consigo que esses dados apareçam no DbGrid.

O DataSource associado ao DBGrid deve estar apontando para o ClientDataSet... que é o componente q vc deve Abrir (Open) e Fechar (Close).


O ClientDataSet por sua vez deve estar associado ao DataSetProvider ... o o DataSetProvider a Query. A Query deve ter configurado seu SQL (antes de se abrir o ClientDataSet) e deve possuir sua propriedade UniDirecional = TRUE.

A transação do IBQuery deve ser configurada com a propriedade AUTOSTOPACTION = Commit e será sempre controlada automaticamente pelos demais componentes.


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar