sexta-feira, 29 de maio de 2009

C# - Aplicação em Camadas

Hoje vou postar algo sobre Csharp/SqlSever, como você já deve saber, hoje em dia o que domina o mercado são ferramentas O.O (Orientada a Objeto), e aplicações feitas em camadas.
A ferramenta que eu mais gosto é Csharp, acho ela muito completa, tanto quanto JAVA, e em aplicações Desktop acho bem melhor, ainda estou aprendendo a usar os recursos dessa poderosa ferramenta e coloquei no rapidshare uma aplicação feita em camadas explicada passo a passo(é muito grande para eu colocar aqui..rs).

http://rapidshare.com/files/238563434/Desenvolvimento_Multicamadas_em_Csharp.doc.html

Peguei esse documento na Devmedia, aprendi muita coisa com essa explicação, é das melhores que já li.
Estou buscando informações sobre WPF, uma nova maneira de desenvolver do Visual Studio, assim que eu tiver bastante informações posto aqui pra vocês.
Quem quiser ir conhecendo é só entrar aqui:

http://msdn.microsoft.com/pt-br/library/cc564903.aspx

Por hoje é só pessoal, um abraço a todos e até mais.

quinta-feira, 28 de maio de 2009

Delphi - Manipulando Dados ( CRUD)

Como prometi, vou explicar agora inclusão, Alteração e Exclusão de dados do banco.
Agora que nossa aplicação já está conectada com o banco (se a sua não está, dê uma olhadinha no post anterior), vamos a preparação das telas, podemos fazer de duas maneiras:
1 - Trazer os campos direto da query, deixando assim eles conectados automaticamente no banco.
2 - Colocar as Label's e Edit's do jeito que quisermos e depois no evento click dos botões, passamos as informações para o ClientDataSet.
Farei da maneira numero 1, pois o código ficara mais fácil de ser entendido, com o tempo você escolhe a maneira que mais lhe agradar, e que a sua aplicação necessitar.
Obs: Estou deixando meus componentes todos ativados, pois o foco aqui é a manipulação dos dados, vale lembrar que o ideal seria mantelos desativados, e ativa-los pelo código conforme a necessidade.
Faremos uma tela de cadastro de clientes, bem simples só para aprendizado, no form que você vai montar a tela, aperte a tecla F12, ele mostrará o código do form, em baixo da palavra implementation, você vai dizer que usaremos o Modulo, então ficará assim:

implementation uses

Modulo;


Agora vá para o Modulo e dê dois cliques no qry_clientes, a tela que abrirá estará mostrando os campos da sua tabela no banco, deixe essa tela aberta e vá para o form , arreste os campos da telinha para o form, já serão criadas uma label e um dbedit, a label você dá o nome que desejar, e vai montando sua tela do jeito que quizer, agora coloque 5 botôes(Incluir, Alterar, Gravar, Excluir, Cancelar) e um dbgrid, minha tela ficou assim:

Como você pode perceber, o Delphi já criou um data source nesse form, mas não vamos usa-lo, para evitar bagunça, vamos usar o que já criamos no Modulo, então delete esse que ele criou, e nas opções DataSource das dbedits você seleciona dm -> ds_clientes, e também coloque a mesma coisa na propriedade DataSource do DbGrid, pronto estamos conectados, se você tiver informações cadastradas nessa tabela, ela já estará aparecendo ai pra vc.
Os títulos do DbGrid você pode mudar pela estrutura do form (Structure) localizado no canto superior esquerdo, como você pode ver na figura acima, lá estará o grid e os campos dele, você seleciona o campo e muda o caption dele para o que achar melhor.
Agora no evento click do botão Incluir coloque o seguinte comando dm.cds_clientes.Append; , toda vez que o botão incluir for clicado ele criará um registro novo na tabela.
No botão Alterar coloque dm.cds_clientes.Edit; , com esse comando o registro que você selecionar no grid, será mostrado nas dbedit's e poderá ser alterado.
No botão Gravar coloque dm.cds_clientes.ApplyUpdates(0); , esse botão servirá tanto para gravar a inclusão dos registros novos quanto para gravar alterações, o (0) , significa que se tiver algum erro que o firebird detect nas informações ele não vai gravar.
No botão Excluir coloque dm.cds_clientes.Delete; e dm.cds_clientes.ApplyUpdates(0); , assim você deleta o registro e grava a alteração do banco.
E no Cancelar dm.cds_clientes.cancel; .
Pronto nosso cadastro está pronto, a rotina é a seguinte, para incluir registros novos, você clica no botão Incluir, Digita as informações e depois clica no botão Gravar, para alterar, selecione o registro no grid e clique no botão Alterar, Modifique o que for necessário e clique no botão Gravar, para excluir, selecione o registro no grid e clique no botão Excluir e se você clicou em Incluir ou Alterar e deseja cancelar a operação, clique no botão Cancelar.
Foi simples não foi ?
Lembrando que essa aplicação é apenas para que você entenda como é a comunicação do Delphi com o firebird, e como usar o modulo, agora cabe a você deixar essa aplicação utilizavél, pois não foi feito nenhum tratamento de erro nesse form, nenhuma verificação ele está praticamente cru.... ;).
futuramente colocarei projetos mais completos.
Boa Sorte !!!!

quarta-feira, 27 de maio de 2009

Começando com Delphi/Firebird

Antes de tudo queria lembrar a todos que esse blog é para iniciantes, então vou explicar tudo nos miiiiinimos detalhes, mas se tiver informações que pessoas mais experientes necessitam, fiquem a vontade..rs.
Aqui vou eu para minha primeira postagem, começarei com Delphi 2007 e Firebird, não posso dizer se o Delphi melhorou ou piorou, pois nunca usei versões anteriores, mas posso dizer que gostei bastante da linguagem e não tive muitos problemas com essa versão (apesar de não usar muito do potencial dela) e o velho e conhecido Firebird dispensa comentários.
Partirei do principio que você já criou seu banco no firebird com suas tabelas devidamente relacionadas, e um projetinho VCL Forms no Delphi para os testes (em uma outra postagem faço esse processo passo a passo).
Antes de tudo copie a dll fbclient (C:\Program Files\Firebird\Firebird_2_1\bin\fbclient.dll), para a pasta do seu projeto, assim você evita problemas de incompatibilidade de versões do firebird, só ai você cria o banco e expecifica que vai usar a fbclient que está dentro da pasta do projeto, já dentro do Delphi com seu projeto aberto, crie um data module, lá vão ficar todas as suas conexões para que você não deixe elas espalhadas pelos forms e depois fique perdido ( já passei por isso...rsrs).
Click com o botão direito do mouse no seu projeto selecione add new - Other..., como mostra a figura abaixo



Depois disso selecione a opção Data Module, será criada uma Unit pra você que é seu Módulo, na propriedade name dele, dê o nome que você quiser, eu costumo usar "dm".
Agora com seu módulo criado vá na palheta dbExpress e coloque no seu módulo um SQLConnection, e dê o nome que você quiser pra ele, eu deixo SQLConnection1 mesmo pois só uso um por projeto, dê dois click's no SQLConnection e adicione uma conexão, clicando no sinalzinho dê '+' , na tela que vai abrir selecione o Driver Name como Interbase e no Connection Name dê o nome que quiser (de preferência que tenha a ver com a aplicação) e OK, sua conexão já está na listas de conexões do seu SQLConnection, selecione ela e nas opções do lado direito vá em Database, lá coloque o caminho do seu banco, na frente do caminho coloque a palavra "localhost:" para evitar alguns probleminhas de conexão (lógico que isso vc coloca se seu banco for local), agora teste a conecção, ele vai pedir login e senha, coloque o padrão do firebird, ou o que você especificou na hora de criar o banco, se o teste deu OK, pode dar um OK nessa tela e sua conexão com o banco está pronta, mude a opção LoginPrompt do seu SQLConnection para false, se não ele vai ficar pedindo login e senha toda hora.
Agora vamos trazer os dados das tabelas para o projeto, coloque no seu módulo um SQLQuery da palheta dbExpress, um dataSetProvider da palheta Data Access, um ClientDataSet da palheta Data Access e um DataSource tb da palheta Data Access. Não se assuste com a quantidade de componentes, com o tempo eles aumentam...rsrs, você pode fazer a conexão via código, mas se for fazer assim eu sugiro usar o Csharp, o Dephi costumo usar para aplicações que preciso terminar logo e que sejam simples, quando preciso de algo mais elaborado uso o Csharp, depois postarei como fazer uma aplicação em camadas no Csharp.
Voltemos ao projeto, primeiro mude os nomes dos componentes, como bom costume use as siglas padrões para cada um deles, assim qualquer programador que olhar seu código, vai entender melhor, vou usar como exemplo uma conexão com uma tabela chamada clientes:
SQLQuery = qry_clientes
dataSetProvider = dsp_clientes
ClientDataSet = cds_clientes
DataSource = ds_clientes
Passarei a usar essas siglas a partir de agora, o primeiro que vamos mexer é o qry_clientes, na opção SQLConnection dele você seleciona o SQLConnection que criamos, deve estar com o nome "SQLConnection1", agora dê dois cliques na opção SQL, irá abiri um editor para você digitar o comando SQL, como queremos todos os campos da tabela digitq "Select * from Clientes" (sem as "" e com o nome da sua tabela no lugar de "Clientes"), agora mude a opção Active para true, se você fez tudo certinho ele mudará na boa, se não vai dar algum erro, ai você revisa tudo que fez até agora para achar o erro, agora com o qry_clientes ativado dê dois cliques no componente, na telinha que vai abrir clique com o botão direito do mouse e selecione a opção Add all fields, e todos os campos da sua tabela estarão disponíveis para serem utilizados, mas antes temos que configurar os outros componentes, para usarmos seus métodos.
Selecione seu dsp_clientes, na propriedade DataSet coloque o qry_clientes, agora selecione o cds_clientes, na propriedade ProviderName selecione o dsp_clientes, mude a propriedade Active para true, dê dois cliques no componente e selecione Add all fields, igual você fez com qry_clientes, agora selecione o ds_clientes, na propriedade DataSet dele selecione o cds_clientes e pronto, com todos eles ligados e funcionando, seu banco e sua tabela estão conectadas no seu projeto, agora repita o procedimento para cada tabela que for usar, e procure deixar os componetes na ordem das conexões dentro do módulo, para ficar mais facil de lembrar como conecta depois, com o tempo você acaba decorando...rsrs, vou colocar abaixo um print de um módulo meu para vocês verem a ordem:



espero ter ajudado alguém...rsrs....na próxima postagem mostrarei como gravar, alterar e excluir os dados do banco.
Qualquer dúvida deixe um recado com seu e-mail que eu entro em contato assim que possível.