You are on page 1of 14

Modelando Dados e Criando Formulrios Pais: Sistema Simples de uma Biblioteca Parte 1

Neste artigo veremos a modelagem dos dados e cria o das telas iniciais !"ormulrios pais# de um Sistema para uma Biblioteca$
5 Gostei (0) (0) Ol pessoal, neste artigo irei criar um sistema simples para uma Biblioteca. Nele, irei usar as operaes bsicas de C%&D para fazer o cadastro, e clus!o, atualiza!o e a consulta de li"ros, funcionrios e clientes. N!o farei o mesmo em tr#s camadas, $ %ue o foco deste artigo n!o & este e, como $ disse antes, ser algo simples. 'ara este artigo usarei o banco S'( Server )**+ ( press, em con$unto com o ,isual Studio )**+ 'rofessional )'*. Nesta parte "amos modelar o banco de dados e comear a criar as telas. 'ara isso, abra o S'( Server )**+ (ou +005) para criarmos as tabelas referentes , nossa -iblioteca. Neste e emplo teremos as seguintes tabelas. / (ivros, %ue ter os seguintes campos. 01, NO2(, 345O6, 3NO, G(N(6O, (105O63, '3G0N3) e )5354) (%ue ser um c-ar de uma posi!o, podendo conter o "alor 7D8, de dispon9"el ou 7.8, de indispon9"el). 4se o seguinte script. :6(35( 53-;( ;i"ros ( 0d<;i"ro Nome<;i"ro 3utor<;i"ro 3no<;i"ro Genero<;i"ro (ditora<;i"ro 0N5 01(N505=(*,*) '60236= >(=, ?36:@36(*00) NO5 N4;;, ?36:@36(50) NO5 N4;;, )23;;0N5 NO5 N4;;, ?36:@36(50) NO5 N4;;, ?36:@36(50) NO5 N4;;,

'aginas<;i"ro )tatus<;i"ro )

)23;;0N5 N4;;, :@36(*) NO5 N4;;

/ Funcionrios, %ue ter os seguintes campos. 01, NO2(, (N1(6(:O, :0131(, ()531O, 5(;(AON(, :36GO, 1353<3120))3O e 1353<1(20))3O (%ue ser uma coluna %ue aceita "alores nulos). 4se o script abai o. :6(35( 53-;( Auncionarios ( 0d<Auncionario Nome<Auncionario (ndereco<Auncionario :idade<Auncionario (stado<Auncionario 5elefone<Auncionario :argo<Auncionario 1ata<3dmissao<Auncionario 1ata<1emissao<Auncionario ) / Clientes, %ue ter os seguintes campos. 01, NO2(, (N1(6(:O, :0131(, ()531O, 5(;(AON( e )5354) (%ue ser um c-ar de uma posi!o, podendo conter o "alor 7/8, de ati"o ou 7.8, de inati"o). 4se o script a seguir. :6(35( 53-;( :lientes ( 0d<:liente Nome<:liente (ndereco<:liente :idade<:liente 0N5 01(N505=(*,*) '60236= >(=, ?36:@36(*00) NO5 N4;;, ?36:@36(50) NO5 N4;;, ?36:@36(50) NO5 N4;;, 0N5 01(N505=(*,*) '60236= >(=, ?36:@36(*00) NO5 N4;;, ?36:@36(50) NO5 N4;;, ?36:@36(50) NO5 N4;;, ?36:@36(B0) NO5 N4;;, ?36:@36(+0) N4;;, ?36:@36(B0) NO5 N4;;, )23;;135(502( NO5 N4;;, )23;;135(502( N4;;

(stado<:liente 5elefone<:liente )tatus<:liente )

?36:@36(B0) NO5 N4;;, ?36:@36(+0) N4;;, :@36(*) NO5 N4;;

'oder9amos criar muito mais tabelas para armazenar os autores, editoras, etc. 2ais "amos nos manter nessas tr#s tabelas. 4se os scripts acima para criar as respecti"as tabelas. :rie primeiro a de (ivros para %ue contenCa as seguintes colunas (ao final deste artigo irei disponibilizar o linD para doEnload dos scripts das tabelas criadas).

3gora "e$a as colunas da tabela de Funcionrios.

Ainalizando com as colunas da tabela de Clientes.

'ronto, nosso modelo de dados est completo. 'erceba %ue n!o usamos relacionamentos entre as tabelas (sF usamos cCa"es primrias), $ %ue o ob$eti"o a%ui &

%ue cada tabela se$a Gnica (seguindo esta id&ia mais adiante criaremos formulrios Gnicos para estas tabelas) dando a id&ia de %ue uma tabela se$a totalmente independente da outra.

Cria o dos Formulrios Fil-os: Sistema Simples de uma Biblioteca Parte )


,e0a neste artigo a continua o do sistema para uma Biblioteca1 onde criaremos os "ormulrios "il-os$
* Gostei (0) (0) Ol pessoal, na segunda parte de nosso artigo "amos finalizar a cria!o dos formulrios filCos para comearmos a codifica!o dos mesmos, fazendo o cadastro, altera o, dele o e consulta dos dados. 3companCem. ?oltando da onde paramos, adicione um no"o HindoEs Aorms, d# a ele o nome de "rmCadastrarClientes e cli%ue em O>. 1ei e as propriedades parecidas com os forms anteriores (apenas altere a propriedade Minimi2eBo3 para Aalse e Si2e para 550IJ00 nos forms filCos), altere os botes, agora teremos + no topo. 4ravar Dados e Cancelar Cadastro. 5eremos tamb&m * bot!o no rodap& %ue ser o ,oltar, nesse Gltimo bot!o altere a propriedade 5nabled para Aalse. Os 01Ks destes botes s!o. tsbtn4ravar, tsbtnCancelar e tsbtn,oltar. 3gora arraste da 5ool-o alguns controles referentes aos dados do cliente a ser gra"ado (%uais%uer dG"idas sobre os controles a serem usados, & sF conferir os campos na tabela de Clientes %ue criamos na parte anterior do artigo). 3ntes de tudo, aperte AL para ir , pgina de cFdigos. Nela, crie os seguintes m&todos. pri"ate "oid 1esabilita-otoes(ob$ect sender, ("ent3rgs e) M tsbtn3lterar( cluir.(nabled N falseI tsbtn:adastrar.(nabled N falseI tsbtn:onsultar.(nabled N falseI tsbtn?oltar.(nabled N falseI

tsbtn)air.(nabled N falseI O

pri"ate "oid @abilita-otoes(ob$ect sender, ("ent3rgs e) M tsbtn3lterar( cluir.(nabled N trueI tsbtn:adastrar.(nabled N trueI tsbtn:onsultar.(nabled N trueI tsbtn?oltar.(nabled N trueI tsbtn)air.(nabled N trueI O :omo "oc#s podem imaginar, estes cFdigos ser"em para CabilitarPdesabilitar os botes do formulrio pai. No modo Design, d# dois cli%ues no bot!o Cadastrar Clientes e adicione o seguinte cFdigo. pri"ate "oid tsbtn:adastrar<:licD(ob$ect sender, ("ent3rgs e) M frm:adastrarAuncionarios ob$Arm:adastrarAuncionarios N neE frm:adastrarAuncionarios()I

PP0nformo a aplica!o %ue o frm:adastrarAuncionarios & o form filCo do frmAuncionarios ob$Arm:adastrarAuncionarios.2di'arent N tCisI

PP:Camo o m&todo %ue desati"a os botes do formulrio pai tCis.1esabilita-otoes(sender, e)I

PP?inculo ao bot!o :ancelar :adastro, do form filCo o m&todo para ati"ar os botes do formulrio pai, por meio de delegate ob$Arm:adastrarAuncionarios.tsbtn:ancelar.:licD QN neE ("ent@andler(tCis.@abilita-otoes)I

PP?inculo ao bot!o ?oltar, do form filCo, o m&todo para ati"ar os botes do formulrio pai, por meio de delegate ob$Arm:adastrarAuncionarios.tsbtn?oltar.:licD QN neE ("ent@andler(tCis.@abilita-otoes)I

PP?erifico se o form $ est aberto. )e esti"er impeo a abertura de um no"o e e ibo uma mensagem ao usurio if (ob$Arm:adastrarAuncionarios.?isible NN false) M ob$Arm:adastrarAuncionarios.)CoE()I O else M 2essage-o .)CoE(RO formulrio $ est aberto com a gra"a!o dos dados em andamentoS AecCe este formulrio para abrir outroSR, R2ensagem do )istemaR, 2essage-o -uttons.O>, 2essage-o 0con.( clamation)I O O 6ode o sistema, cli%ue em Clientes e cli%ue no bot!o Cadastrar Clientes. )eu form rec&m/criado de"er aparecer.

3 id&ia & a seguinte. %uando eu clico no bot!o Cadastrar do formulrio pai, abro o formulrio filCo, desabilito os controles do form pai, e dei o tamb&m desabilitado o bot!o ,oltar do form filCo. 1essa forma o usurio sF poder sair do :adastro clicando no bot!o Cancelar. O bot!o ,oltar ser Cabilitado apFs o usurio ter gra"ado ao menos um registro com sucesso. Note %ue se eu clicar em Cancelar Cadastro e clicar em Sim, os botes do formulrio pai ser!o Cabilitados. Os 01Ks usados nestes controles s!o. t3tNome, t3t5ndereco, t3tCidade, ddl5stado, mtb6ele"one, rbt/tivo e rbt.nativo. Obs. no campo 6ele"one usei um controle cCamado Mas7ed6e3tBo3, na propriedade Mas7 dele, escolCi a op!o P-one Number. :rie outros + forms como esse, um para os :adastro de Auncionrios, dando o nome de "rmCadastrarFuncionario (sempre seguindo a lFgica do form de :lientes).

Obs. nos campo Data /dmiss o e Data Demiss o usei no"amente o Mas7ed6e3tBo3, e na propriedade Mas7 dele, escolCi a op!o S-ort date. ( um form para o :adastro de ;i"ros, com o nome de "rmCadastrar(ivros (sempre usando a mesma id&ia de formulrios MD., aplicada no form de :adastrar :lientes).

Os 01Ks usados nos controles do "rmCadastrarFuncionario s!o. t3tNome, t3t5ndereco, t3tCidade, ddl5stado, mtb6ele"one, mtbData/dmissao1 mtbDataDemissao e t3tCargo. Os 01Ks usados nos controles do "rmCadastrar(ivros s!o. t3tNome(ivro, t3t/utor, t3t/no, t3tPaginas, t3t4enero, t3t5ditora1 rbtDisponivel e rbt.ndisponivel. OD, formulrios de :adastro criados, "amos partir para os de :onsulta. 3dicione um no"o HindoEs Aorms, dando o nome a ele de "rmConsultaClientes. Nele, "amos adicionar alguns controles para %ue, por e emplo, o funcionrio da -iblioteca possa filtrar :lientes pelo Nome, Cidade ou Status. O resultado da filtragem do funcionrio ir aparecer no mesmo formulrio, dentro de um (ist,ie8. ?olte ao modo Design do formulrio pai, d# dois cli%ues no bot!o Consultar e adicione o seguinte cFdigo. pri"ate "oid tsbtn:onsultar<:licD(ob$ect sender, ("ent3rgs e) M

frm:onsultar:lientes ob$Arm:onsultar:lientes N neE frm:onsultar:lientes()I

PP0nformo a aplica!o %ue o frm:onsultar:lientes & o form filCo do frm:lientes ob$Arm:onsultar:lientes.2di'arent N tCisI

PP:Camo o m&todo %ue desati"a os botes do formulrio pai tCis.1esabilita-otoes(sender, e)I

PP?inculo ao bot!o :ancelar :adastro, do form filCo o m&todo para ati"ar os botes do formulrio pai, por meio de delegate ob$Arm:onsultar:lientes.tsbtn?oltar.:licD QN neE ("ent@andler(tCis.@abilita-otoes)I

PP?erifico se o form $ est aberto. )e esti"er impeo a abertura de um no"o e e ibo uma mensagem ao usurio if (ob$Arm:onsultar:lientes.?isible NN false) M ob$Arm:onsultar:lientes.)CoE()I O else M 2essage-o .)CoE(RO formulrio $ est aberto com a gra"a!o dos dados em andamentoS AecCe este formulrio para abrir outroSR, R2ensagem do )istemaR, 2essage-o -uttons.O>, 2essage-o 0con.( clamation)I O O

3penas lembre/se %ue "oc# de"er instanciar o formulrio filCo antes de cCam/lo no e"ento Clic7 do bot!o Consultar. ?olte ao modo Design, cli%ue na Smart6ag do ;ist?ieE, cli%ue em 5dit Columns, e adicione as seguintes colunas (no campo 6e3t). C9digo (altere a propriedade :idt- para 0, $ %ue n!o precisamos mostrar o cFdigo do cliente para o usurio), 5ndereo, Cidade, 5stado, 6ele"one e Status. )eu form de"er ficar da seguinte forma.

'erceba %ue utilizei di"ersos controles, o 01 deles s!o os seguintes. gpb;pcoes (para o Group-o ), rbtNome (com a propriedade C-ec7ed como 5rue), rbtCidade, rbtStatus, t3tConsulta, temos tamb&m + 6adio-uttonKs, sF %ue est!o in"is9"eis. rbt/tivo (com a propriedade C-ec7ed como 5rue e ,isible como Aalse) e rbt.nativo (com a propriedade ,isible como Aalse). 5emos tamb&m o btnConsultar, lsvDados, %ue & meu ;ist?ieE, e %ue cont&m as propriedades 4rid(ines como 5rue, Full%o8Select como 5rue, para selecionarmos a linCa inteira do registro, MultiSelect como Aalse, para %ue sF selecionemos um Gnico registro por "ez, BorderSt<le como Ai ed)ingle e ,ie8 como 1etails. Ainalizando temos tamb&m o bot!o ,oltar com o 01 tsbtn,oltar

:rie os forms de :onsulta para Funcionrios e (ivros iguais a este %ue acabamos de criar, apenas altere as colunas de acordo com os dados da respecti"a tabela do banco (n!o se es%uea de adicionar a coluna C9digo). 'ara o de ;i"ros, "amos filtrar por Nome do (ivro, 5ditora e Status. ;embre/se de incluir dois 6adio -uttons para o Status, %ue ter!o os "alores Dispon=vel e .ndispon=vel e ter!o o atributo ,isible como Aalse. ?e$a como ficar nosso form.

'ara o form de Funcionarios, filtraremos por Nome, 5stado e Cargo. ?e$a como ele ficar.

Ainalizando a cria!o dos formulrios filCo, adicione um no"o HindoEs Aorm, dando a ele o nome de "rm/lterar53cluirClientes e cli%ue O>. 3rraste pra ele apenas um (abel e um Data4rid,ie8, dando o 01 de dgvDados para o grid e lblMensagem para o ;abel. 3bra a Smart6ag do grid e desmar%ue as opes 5nable /dding, 5nable 5diting e 5nable Deleting, n!o precisamos dessas opes $ %ue nossos dados "ir!o de nosso banco de dados, e usaremos os botes 5ditar e 53cluir para essa finalidade. :opie para este form o bot!o de ,oltar dos outros forms. Na )mart5ag do Grid?ieE, adicione as seguinte colunas. Nome, 5ndereo, Cidade, 5stado, 6ele"one, Status e mais duas colunas do tipo Data4rid,ie8ButtonColumn, ou se$a ser!o botes, com os nomes 5ditar e 53cluir (sF incluir estes nomes na propriedade 6e3t). )eu form de"er ficar da seguinte forma.

;embre/se de ir ao formulrio pai, de Clientes, e fazer a cCamada a este form %ue acabamos de criar. :rie mais + formulrios, para altera!oPe clus!o de Auncionrios e ;i"ros, e apli%ue as mesmas configuraes %ue fizemos nesse form. 5al"ez precisaremos criar mais B pe%uenas telas, %ue ser!o para editarmos os dados do grid acima, e dos outros forms. 2ais isso ficar para a prF ima e Gltima parte. 'ara %uem se interessar em fazer o doEnload do cFdigo/fonte do pro$eto (feito no ?isual )tudio +00T), bai e neste post 3ssim finalizo o artigo. Na prF ima parte finalmente iremos codificar as telas. :omearemos pelas telas de Cadastro, depois "amos para a de Consulta dos dados e "amos fecCar com a /ltera o > 53clus o dos dados. 3guardeS

You might also like