Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
kokin

Buscar dados

Recommended Posts

kokin

Boa noite antes de mais 

Passo a explicar a minha duvida:

Estou a fazer um trabalho que tem como tema uma clinica veterinaria no qual tem estas 2 funções:

  - Recepcionista ( Insere; apaga;edita etc animais, medicos e marca as consultas)

  - Medico  (Tem de ver suas consultas e na consulta selecionada dar um preço por consulta.)

Ambos tem um acesso de login para a sua instancia o que quer dizer: recepcionista , medico , main...

Tenho uma parte no Medico que é para  Listar as Consultas do medico que fez login, numa Jlist. A duvida que tenho é que não sei como faço isso.

main é so para chamar as instancias e fazer o login.

Na Instacia medico neste caso o que esta logado carrego as consultas da base de dados assim. Mas como faço para que só  o medico que fez login consiga ver suas consultas ?

private Vector<consultas> preencheConsultas() {

	Vector<consultas> tmp = new Vector<consultas>();
	try {
	Connection con = DriverManager.getConnection("jdbc:mysql://localhost/veterinario", "root", "");
		Statement stmt = con.createStatement();
		ResultSet res = stmt.executeQuery("SELECT * FROM consultas");

		while (res.next()) {				
			int id_consulta = res.getInt("id_consulta");
			int id_animal = res.getInt("id_animal");
			int id_medico = res.getInt("id_medico");
			int id_servico = res.getInt("id_servico");
			String data = res.getString("data");
			tmp.add(new consultas(id_consulta, id_animal, id_medico, id_servico, data));
		}
	} catch (SQLException ex) {
		System.out.println("Erro na Base de Dados de Consultas");
	}
	return tmp;
}

Uso Eclipse

Share this post


Link to post
Share on other sites
kokin

Este e a parte do login que tenho.. na instancia "main"

private void login() {
	user_info = field.getText();
	pass_info = fieldPass.getText();

	if (user_info.equals("") || pass_info.equals("")) {
		JOptionPane.showMessageDialog(null,"Preencha todos os campos","",JOptionPane.ERROR_MESSAGE);
		return;
	}
	for(Admin tmp: preencheAdmin()){
		if(user_info.equals(tmp.getAdmin())&& pass_info.equals(tmp.getPass())){
			new Administrador();
			activo_admin = tmp;
			dialog.dispose();
			return; 
	}
	}
	for (medicos tmep : preencheMedicos()) {
		if(tmep.getMedico().equals(user_info) && tmep.getPass().equals(pass_info)){
			new medico();
			activo = tmep;
			dialog.dispose();
			return;
			}
	}
	JOptionPane.showMessageDialog(new JOptionPane(),"Login incorrecto", "", JOptionPane.ERROR_MESSAGE);
}

Share this post


Link to post
Share on other sites
Knitter

Pelo princípio, os acentos são para colocar nas palavras e essas descrições estão confusas, seria conveniente que explicasses melhor o que pretendes.

Depois, estás a guardar os dados de alguma forma particular? Que estruturas de dados usas para guardar os objectos e como é que listas os vários objectos?

Tenho uma parte no Medico que é para  Listar as Consultas do medico que fez login, numa Jlist. A duvida que tenho é que não sei como faço isso.

Mas tens isso já feito ou não tens isso feito? No início dizes que tens feito, mas depois dizes que não sabes fazer.

Mas como faço para que só  o medico que fez login consiga ver suas consultas ?

Suponho que todas as consultas tenham o ID do médico que as criou, bastará colocar esse ID como condição do SQL ou de algum filtro que estejas a fazer se o fizeres sem ser em SQL.

Onde estão as queries para pesquisa de dados e como estás a filtrar os dados nas queries?

Share this post


Link to post
Share on other sites
kokin

Já resolvi a minha duvida, desde já muito obrigado se voltar a ter duvidas volto aqui e vou tentar ser mais preciso no que pretendo.

Share this post


Link to post
Share on other sites
kokin

Como faço para que uma JTextField  no caso de ser por exemplo o nome do animal que não se possa poder inserir números?

O mesmo para por exemplo a idade que não se possa inserir letras.

Gostava de saber como poder dar essa regra.

if(txtmorada.getText().equals(?)){
      JOptionPane.showMessageDialog(null,"Inserio caracter invalido","",JOptionPane.ERROR_MESSAGE);
return;}

devo meter algo dentro do equals?

Share this post


Link to post
Share on other sites
Knitter

Ou validas manualmente, com os métodos que a classe String tem ou, em vez de usares um JTextField, usas um JFormattedField. Este componente permite a criação de filtros e a definição de regras para os valores que são permitidos. Consulta a documentação que tens lá exemplos de como usar o componente.

Share this post


Link to post
Share on other sites
kokin

Surgiu me mais uma duvida  :D :

Tenho na base de dados na tabela animal um campo chamado foto no qual estou a armazenar todos os nomes das imagem. Como faço para imprimir esse campo de novo para a label.

Pois guardar o nome guarda mas como é que vai saber o caminho onde essa imagem tava?

Esta e a minha lista:

	ListaAnimais.addListSelectionListener(new ListSelectionListener() {	

		int x=0; 
		public void valueChanged(ListSelectionEvent arg0) {
			animais anSelect = (animais) ListaAnimais.getSelectedValue();
			File diretorio = fich.getSelectedFile();
			if (x==0) {				
				txtnome.setText(anSelect.getAnimal());
				txtdono.setText(anSelect.getDono());

				txtmorada.setText(anSelect.getMorada());
				combocor.setSelectedIndex(getIndiceCor(anSelect.getId_cor()));
				combotipo.setSelectedIndex(getIndiceTipo(anSelect.getId_tipo()));
				foto.setIcon(anSelect.getFoto()); //Erro ta aqui 						

				x++;
			}
			else{ 
				x--;				
			}

		}
	});

Share this post


Link to post
Share on other sites
Knitter

Pois guardar o nome guarda mas como é que vai saber o caminho onde essa imagem tava?

Guardaste o caminho todo ou apenas o nome da imagem? Se guardaste apenas o nome da imagem então não tens forma de saber onde estava a imagem, tens de guardar o caminho todo ou ter todas as imagens no mesmo local, um local pré-definido.

Share this post


Link to post
Share on other sites
kokin

Só guardei o nome como por exemplo: nome.png

E como faço então para ir buscar ao local predefinido?

Tipo workspace-->programa--->imagens

Share this post


Link to post
Share on other sites
Knitter

Fazes como quiseres, ou guardas na BD, ou guardas num ficheiro de texto, num ficheiro de configurações, enfim, guardas onde te der jeito de acordo com o código que tens.

Share this post


Link to post
Share on other sites
kokin

O problema é esse, não sei como deva fazer...

    Não tenho grandes conhecimentos em Java, tenho muita dificuldade neste tipo de situações.

Pensava que havia uma forma de dizer exactamente onde as imagens se situavam.Especificar o caminho com um comando ou algo assim...

Mas pelo que percebi o que dizes é guardar na base de dados o caminho todo ou guardar numa txt os caminhos.

Share this post


Link to post
Share on other sites
Knitter

Se só estás a guardar o nome da images estás a perder o resto da informação.

Se sabes sempre em que pasta estão as imagens, mesmo que seja relativo à aplicação, já tens tudo o que precisas, basta criares um File com essa informação.

Se a pasta vai ser diferente para cada imagem, ou se não sabes em que local estão as imagens, então devias guardar o caminho completo para a imagem.

Não há nada automático que te possa dar a informação de onde estavam as imagens, como é que o computador pode adivinhar? :D

Share this post


Link to post
Share on other sites
kokin

Já consegui por o caminho da imagem no campo da imagem na base de dados.

O que não consigo é ler o caminho da imagem para o label, pois o que pretendo é quando seleccionar o animal da lista, mandar para os dados para os textfield, label"imagem". Se alguém me poder ajudar ficarei muito agradecido ter de entregar este trabalho hoje...

Aqui ta o código da Lista 🤔

ListaAnimais.addListSelectionListener(new ListSelectionListener() {        
                        
                        int x=0; 
                        public void valueChanged(ListSelectionEvent arg0) {
                                animais anSelect = (animais) ListaAnimais.getSelectedValue();
                                File diretorio = fich.getSelectedFile();
                                if (x==0) {                                
                                        txtnome.setText(anSelect.getAnimal());
                                        txtdono.setText(anSelect.getDono());
                                        
                                        txtmorada.setText(anSelect.getMorada());
                                        combocor.setSelectedIndex(getIndiceCor(anSelect.getId_cor()));
                                        combotipo.setSelectedIndex(getIndiceTipo(anSelect.getId_tipo()));
                                        label_foto.setIcon(anSelect.getFoto()); //[b]Erro ta aqui [/b]                                                
                                        
                                        x++;
                                }
                                else{ 
                                        x--;                                
                                }

                        }
                });

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.