Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Silvio Sampaio

Helpdesk - Controle de Equipamentos por Serial

Recommended Posts

Pessoal, meu primeiro post espero contar com ajuda e compreensão de amigos aqui.

 

Obs. Não sei nada de programação, quero só aprender pelo prazer do conhecimento e dar boa utilidade deste tipo de conteúdo.

 

Só que eu fui aprendendo, fazendo e agora vem vindo as dificuldades...

 

Foi dificil mas instalei Apache + Mysql + PHPMyAdmin, faço uso do MySQL Administrator e Query Browser

 

Estruturei o banco da seguinte forma:

 

bd_helpdesk

 

view_equipamentos_ativos

view_colaboradores_ativos

 

 

tb_equipamentos

Campos:

id,

Patrimônio,(Nº. de série)

Descrição, (texto qualquer)

Categoria (Notebook, Netbook, Desktop)

Status (Ativo ou Inativo)

 

tb_registro

Campos:

id,

Colaborador ( )

Patrimônio (view_equipamentos_ativos)

Descrição, (texto qualquer)

Empréstimo (Formato, Date dd/mm/aaaa)

Devolução (Formato, Date dd/mm/aaaa)

 

Agora o problema...

 

No Campo, (Patrimônio) da tabela tb_registro não deve ser possível visualizar um equipamento que ainda não foi devolvido.

 

 

Ou seja, acho que deveria criar uma view com where dizendo que a consulta deve acontecer da tabela view_equipamentos_ativos mas também que respeitasse a cláusula "devolução" da própria tb_registro do campo patrimônio

 

Acho que ficou muito confuso e tb não sei que comando usar.

 

Como posso estruturar melhor esse banco?

Por favor dêem sugestões...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

 

Muito obrigado pela dica. Apesar de ser um projeto sem grandes pretensões, começarei os estudos de imediato pois gosto do que faço na área de helpdesk e dos novos desafios que me proporcionam maior aprendizagem.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, meu primeiro post espero contar com ajuda e compreensão de amigos aqui.

 

Obs. Não sei nada de programação, quero só aprender pelo prazer do conhecimento e dar boa utilidade deste tipo de conteúdo.

 

Só que eu fui aprendendo, fazendo e agora vem vindo as dificuldades...

 

Foi dificil mas instalei Apache + Mysql + PHPMyAdmin, faço uso do MySQL Administrator e Query Browser

 

Estruturei o banco da seguinte forma:

 

bd_helpdesk

 

view_equipamentos_ativos

view_colaboradores_ativos

 

 

tb_equipamentos

Campos:

id,

Patrimônio,(Nº. de série)

Descrição, (texto qualquer)

Categoria (Notebook, Netbook, Desktop)

Status (Ativo ou Inativo)

 

tb_registro

Campos:

id,

Colaborador ( )

Patrimônio (view_equipamentos_ativos)

Descrição, (texto qualquer)

Empréstimo (Formato, Date dd/mm/aaaa)

Devolução (Formato, Date dd/mm/aaaa)

 

Agora o problema...

 

No Campo, (Patrimônio) da tabela tb_registro não deve ser possível visualizar um equipamento que ainda não foi devolvido.

 

 

Ou seja, acho que deveria criar uma view com where dizendo que a consulta deve acontecer da tabela view_equipamentos_ativos mas também que respeitasse a cláusula "devolução" da própria tb_registro do campo patrimônio

 

Acho que ficou muito confuso e tb não sei que comando usar.

 

Como posso estruturar melhor esse banco?

Por favor dêem sugestões...

 

Até que não esta tão ruim assim ,acho que posso lhe ajudar ....

 

select a.* from tb_equipamentos a,tb_registro b where

a.patrimonio=b.patrimonio and a.status='Ativo'

 

Bom dessa forma só listara os equipamentos que tiveram baixa restristrada, na tabela registro.

E somente os equipamentos ativos.

 

Espero ter ajudado.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Welisson C. Dias,

 

Muito obrigado pela sua dica (nossa como programador pensa de forma estruturada rsrsrs)

 

Mas assim, por conta de mudanças futuras eu penso que deveria ir mais além;

 

Fiz essas modificações e gostaria de manter um registro fixo dos empréstimos para fins de relatórios posteriores.

 

Ficou agora dessa forma:

 

bd_helpdesk

 

view_equip_ativos

view_colaboradores_ativos

 

 

tb_equipamentos >> (Serve para cadastrar os equipamentos)

 

Campos da tabela:

 

id,

Patrimônio,(Nº. de série)

Descrição, (texto qualquer)

Categoria (Notebook, Netbook, Desktop)

Status (Ativo ou Inativo)

 

 

tb_registro >> (Serve para realizar o controle de retirada e entrega dos equipamentos

 

Campos da tabela:

 

id,

Colaborador (view_colaboradores_ativos )

Patrimônio (view_equip_ativos)

Descrição, (texto qualquer)

Dt_Inicial (Formato, Date dd/mm/aaaa)

Hr_Inicial (Formato, Time 00:00:00)

Dt_Final (Formato, Date dd/mm/aaaa)

Hr_Final (Formato, Time 00:00:00)

 

Com isso, fiz esse select...

 

SELECT `Patrimônio` FROM `tb_registro`

WHERE `Hr_Final` AND `Dt_Final` >= `Dt_Inicial` AND `Hr_Inicial`;

 

 

Mas sei que ainda não está certo, pois com a data trocada ele ainda lista todos, não sei como validar a informação

 

E ainda falta acrescentar no select o argumento de Status=Ativo da tb_equipamentos.

============================================================================

Bom consegui avançar...

 

Uma parte do select já está pronta:

 

SELECT `Patrimônio` FROM `tb_registro`

WHERE `Hr_Final` + `Dt_Final` >= `Dt_Inicial` + `Hr_Inicial`;

 

 

Assim ele respeita a condição de Data e Hora do jeito que eu preciso, mas ainda falta aprender a juntar os 2 select com:

 

SELECT `Patrimônio` FROM `tb_equipamentos`

 

WHERE `Status` = 'Ativo';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Welisson C. Dias,

 

Muito obrigado pela sua dica (nossa como programador pensa de forma estruturada rsrsrs)

 

Mas assim, por conta de mudanças futuras eu penso que deveria ir mais além;

 

Fiz essas modificações e gostaria de manter um registro fixo dos empréstimos para fins de relatórios posteriores.

 

Ficou agora dessa forma:

 

bd_helpdesk

 

view_equip_ativos

view_colaboradores_ativos

 

 

tb_equipamentos >> (Serve para cadastrar os equipamentos)

 

Campos da tabela:

 

id,

Patrimônio,(Nº. de série)

Descrição, (texto qualquer)

Categoria (Notebook, Netbook, Desktop)

Status (Ativo ou Inativo)

 

 

tb_registro >> (Serve para realizar o controle de retirada e entrega dos equipamentos

 

Campos da tabela:

 

id,

Colaborador (view_colaboradores_ativos )

Patrimônio (view_equip_ativos)

Descrição, (texto qualquer)

Dt_Inicial (Formato, Date dd/mm/aaaa)

Hr_Inicial (Formato, Time 00:00:00)

Dt_Final (Formato, Date dd/mm/aaaa)

Hr_Final (Formato, Time 00:00:00)

 

Com isso, fiz esse select...

 

SELECT `Patrimônio` FROM `tb_registro`

WHERE `Hr_Final` AND `Dt_Final` >= `Dt_Inicial` AND `Hr_Inicial`;

 

 

Mas sei que ainda não está certo, pois com a data trocada ele ainda lista todos, não sei como validar a informação

 

E ainda falta acrescentar no select o argumento de Status=Ativo da tb_equipamentos.

============================================================================

Bom consegui avançar...

 

Uma parte do select já está pronta:

 

SELECT `Patrimônio` FROM `tb_registro`

WHERE `Hr_Final` + `Dt_Final` >= `Dt_Inicial` + `Hr_Inicial`;

 

 

Assim ele respeita a condição de Data e Hora do jeito que eu preciso, mas ainda falta aprender a juntar os 2 select com:

 

SELECT `Patrimônio` FROM `tb_equipamentos`

 

WHERE `Status` = 'Ativo';

 

Pense dessa forma para progredir em suas novas cosultas...

 

Temos duas tabelas, que por sua vez tem em comum o patrimonio, ou seja a ligação .

 

Para listar das duas tabelas seria da seguinte forma:

 

Select a.*,b.*

Dessa forma iremos listar todos os campos da tabela a e todos os campos da tabela b.

 

from tb_equipamentos a,tb_registro b

 

Das duas tabelas....

 

where a.patrimonio=b.patrimonio

 

Dessa forma só ira listar os equipamentos que estiverem registrados na tabela registro.

 

Caso queira colocar as condição de data como você fez anteriormente,ficaria da seguinte forma seu where.

 

where a.patrimonio=b.patrimonio and b.Hr_Final + b.Dt_Final >= b.Dt_Inicial + b.Hr_Inicial

 

Com relação datas, não mudei nada so copiei da forma que você fez,pois se rodou para você rodaria nessa consulta tb....rsrsr

 

==================================

 

 

Não seria mais fácil você colocar o campo dt_inicial e dt_final como datetime??

 

Assim ele aceitaria no formato data hora, e não seria necessário concatenar hora com data.

 

Abraço .

 

Vamos progredindo.. rsr

Compartilhar este post


Link para o post
Compartilhar em outros sites

Definitivamente preciso de ajuda... rsrsrs

 

Consegui evoluir neste sentido:

 

tb_registro >>

 

Campos da tabela:

 

id,

Colaborador (view_colaboradores_ativos )

Patrimônio (view_equip_ativos)

Descrição, (texto qualquer)

 

======================================

Dt_Inicial (Formato, Date dd/mm/aaaa) | ISSO JÁ NÃO EXISTE MAIS

Hr_Inicial (Formato, Time 00:00:00) | AGORA CONSEGUI FAZER O SEGUINTE

======================================

 

 

Emprestimo timestamp / CURRENT_TIMESTAMP Ex: (2012-05-18 17:34:06)

 

 

Dt_Final (Formato, Date dd/mm/aaaa)

Hr_Final (Formato, Time 00:00:00

 

Mas qdo faço o select abaixo o valor fica em branco:

 

SELECT `Patrimônio` FROM `tb_registro`

 

WHERE `Dt_Entrega` > `Emprestimo`;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Welisson C. Dias

 

Desculpe ter demorado tanto a responder

 

Eh q soh vejo o forum ou email pessoal no fim do dia.

 

Ainda assim obrigado por sua atenção

 

Meu msn é sampaiosp@hotmail.com

 

A gemte pode trocar algumas dicas e experiências na área de TI pois meu dia-a-dia é trabalhar com Helpdesk.

 

 

Fico no aguardo do contato

Grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que horrível, "gemte" em vez de "gente" rsrsrs. Isso que dá ficar digitando com sono.

 

Parceiro,

 

Entendo que fiz alterações consideravéis na estrutura deste banco e até mesmo na forma como creio que ele seja útil.

 

# bd_helpdesk

 

tabelas importantes;

 

*tb_registro Campos >>(indice, Colaborador, Patrimônio, Descrição, Emprestimo, Setor)

*tb_entrega Campos >>(indice, Colaborador, Patrimônio, Devolução, Devolvido)

 

Campos >> "Emprestimo" e "Devolução" = current_timestamp.

"indice" = INT (e os demais são VARCHAR)

 

Obs: Sei que tenho que criar uma relação entre as tabelas.

A dúvida está em 1:N ou N:N, se for a 1ª opção o que devo relacionar?

id_registro com id_entrega ou os campos em comum? ("Colaborador e Patrimônio")?

 

PS: Não quero ter que digitar na tabela entrega o que já aconteceu na tabela registro e evitar erros.

 

Fiz esses dois select's ambos funcionam, mas preciso colocá-los numa nova tabela.

 

select tb_registro.Colaborador,Descrição,Setor,Emprestimo,tb_entrega.Devolvido,Devolução

from bd_helpdesk.tb_registro inner join bd_helpdesk.tb_entrega on tb_registro.patrimônio=tb_entrega.patrimônio where bd_helpdesk.tb_entrega.Devolvido='Não'

 

select tb_registro.Patrimônio,Descrição,Setor,Emprestimo,tb_entrega.Devolvido,Devolução

from bd_helpdesk.tb_registro inner join bd_helpdesk.tb_entrega on tb_registro.patrimônio=tb_entrega.patrimônio where bd_helpdesk.tb_entrega.Devolvido='Não'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos,

 

Ainda preciso de ajuda.

 

Mas agora com um pouco mais de domínio da ferramenta e conhecendo o básico Mysql

 

Já consigo realizar meus select's, inserção de dados nas tabelas, alerações de caracteristicas etc

 

Entretanto minha grande dificuldade agora é com CHAVE ESTRANGEIRA, pois é, pode parecer repetitivo mas sem um exemplo prático eu não conseguirei entender

 

Pois já vi vários videos no youtube, li orientações e ainda não consegui assimilar a lógica desta utilização.

 

Segue meu exemplo prático (confesso que bastante incomum)

 

 

tb_emprestimo

id Colaborador Patrimônio Descrição Emprestimo Setor

1 Jovem Aprendiz 68143 Reunião no auditório 29/5/2012 15:20:28 Administração

2 Adriana Silva Santos 80404 Eventos externos 29/5/2012 16:00:46 Secretaria Escolar

3 Clovis Campagnolo 68142 Aulas N I 1/6/2012 10:02:55 Educação Integral

 

tb_entrega

id Colaborador Patrimônio Devolução Devolvido

1 Jovem Aprendiz 68142 29/5/2012 16:19:10 Não

2 Adriana Silva Santos 80404 30/5/2012 10:43:03 Não

3 Clovis Campagnolo 68142 1/6/2012 11:00:53 Não

 

 

Como todos são bem sábios aqui creio ficou claro o interesse

A idéia é que toda vez que alterar algum "Colaborador" ou "Patrimônio" da tabela EMPRESTIMO essa atualização ocorra nos mesmos campos da tabela ENTREGA.

 

Para isso no PHPMYADMIN na tabela ENTREGA usei a seguinte opção:

 

FOREIGN KEY INNODB tb_emprestimo.id on delete on cascate

 

No fim das contas eu relacionei os campos IDs das duas tabelas, mas no ACCESS isso não tem funcionado na prática

 

Quem me dá uma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Após várias dicas recebidas por colegas aqui do fórum.

Venho atualizar esse projeto e fazer algumas considerações:

 

1 - No meu entendimento o projeto tem cerca de 30% concluido, mas já é um sistema funcional.

 

2 - Com o aprendizado a estrutura foi atualizada e está cada vez mais dinâmica

 

3 - Com a integração do Access já é possível usá-lo de forma satisfatória

 

4 - Ainda é possível realizar muitas melhorias e transformar o projeto numa aplicação web rodando na intranet e futuramente na internet

 

5 - Pretendo disponibilizar uma cópia do Banco de Dados com alguns exemplos e o arquivo *.mdb já com todos os parametros ajustados.

 

 

 

Tabela - Cadastro de Equipamentos

 

 

Tabela - Emprestimo de Equipamentos

 

 

Tabela de Entrega

 

Irei colocar uma demonstração em video de todo o progresso obtido aqui em breve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.