Ola galera…entao estou desenvolvendo um projetinho para gestao hospitalar…e cheguei em um problema aqui e gostaria que me ajuda-sem…fiz uma tela no swing de consulta de usuarios…essa consulta vai ser feita em uma unica tabela no banco de dados no caso paciente…posso fazer essa consulta por dois modos…ou pelo nome ou pelo cpf do paciente…ao efetuar a consulta logo a baixo vai abrir uma JTable onde no caso se for realizada pelo nome do paciente aparecera todos os pacientes com o nome parecido,caso nao seja digitado o nome completo…ai tive a seguinte ideia ou eu seleciono o paciente que quero e vou em ‘ok’…assim abrirá outra tela com todos os dados do paciente…ou dou dois cliques no paciente que quero e ele abre outra tela com todos os dados do paciente…gostaria de saber como posso fazer esta funcionalidade…obrigado!
Duvida
7 Respostas
Seria bom vc usar uam classe pra conexao ao banco de dados ( axo que isso vc ja deve ter feito )
na classe principal do JFRAME crie o modelo da tabela e mande por parametro para o metodo que ira buscar os pacientes e junto mande tbm um parametro com o campo de texto que o usuario vai digita ( no caso o nome do paciente )
e no metodo em conexao faca algo assim.
public DefaultTableModel busca_pacientes ( String nome, DefaultTableModel modelo)
{
try
{
resultset = statement.executeQuery("SELECT * FROM pacientes WHERE nome LIKE '"+"%"+nome+"%"+"'");
while(resultset.next())
{
modelo.addRow(new Object[] { resultset.getString("nome_da_coluna1") , resultset.getString("nome_da_coluna2") ... (ASSIM POR DIANTE ATE ACABAR SUAS COLUNAS)), } );
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Erro!","Erro!",JOptionPane.ERROR_MESSAGE);
}
return modelo; // << AQUI VC RETORNA O MODELO PARA CLASSE PRINCIPAL
}
Oi mymyself,
Ah,vc vai fazer tudo isso…só não sabe como… :roll: desculpe,mas não resisti…rs.
Seria legal vc postar o que já fez,com a duvida especifica,ou não sabe nem por onde começar… :roll:
Seria bom vc usar uam classe pra conexao ao banco de dados ( axo que isso vc ja deve ter feito )na classe principal do JFRAME crie o modelo da tabela e mande por parametro para o metodo que ira buscar os pacientes e junto mande tbm um parametro com o campo de texto que o usuario vai digita ( no caso o nome do paciente )
e no metodo em conexao faca algo assim.public DefaultTableModel busca_pacientes ( String nome, DefaultTableModel modelo) { try { resultset = statement.executeQuery("SELECT * FROM pacientes WHERE nome LIKE '"+"%"+nome+"%"+"'"); while(resultset.next()) { modelo.addRow(new Object[] { resultset.getString("nome_da_coluna1") , resultset.getString("nome_da_coluna2") ... (ASSIM POR DIANTE ATE ACABAR SUAS COLUNAS)), } ); } } catch (Exception e) { JOptionPane.showMessageDialog(null,"Erro!","Erro!",JOptionPane.ERROR_MESSAGE); } return modelo; // << AQUI VC RETORNA O MODELO PARA CLASSE PRINCIPAL }
mymyself
É dificil ajudar se não sabemos em que "etapa" vc está...que banco usa...
entao vamos la…passo a passo…e q sou iniciante…
criei uma metodo para consultar o paciente com o Jtable…segue abaixo
[i][color=green]
public Vector proximalinha(ResultSet rs, ResultSetMetaData rsmd){
Vector linhaAtual = new Vector();
try{
for(int i=1;i<rsmd.getColumnCount();++i){
switch(rsmd.getColumnType(i)){
case Types.VARCHAR:
linhaAtual.addElement(rs.getString(i));
break;
case Types.INTEGER:
linhaAtual.addElement(new Long(rs.getLong(i)));
break;
case Types.TIMESTAMP:
linhaAtual.addElement(rs.getDate(i));
break;
}}
}catch(SQLException ex){
}
return linhaAtual;
}
[i]public void mostrapaciente(){
Statement stmt;
ResultSet rs;
JTable tabela;
try{
Vector cabecalho = new Vector();
Vector linhas=new Vector();
stmt=conex.createStatement();
rs=stmt.executeQuery(“SELECT * FROM paciente”);
rs.next();
ResultSetMetaData rsmd=rs.getMetaData();
for(int i=1;i<rsmd.getColumnCount();++i){
cabecalho.addElement(rsmd.getColumnName(i));
}do{
linhas.addElement(proximalinha(rs,rsmd));
}while(rs.next());
tabela = new JTable(linhas,cabecalho);
JScrollPane scroller = new JScrollPane(tabela);
getContentPane().add(scroller,BorderLayout.CENTER);
validate();
setSize(400,200);
setTitle(“Pessoas Cadastradas”);
setLocationRelativeTo(null);
stmt.close();
}catch(SQLException ex){}
}[/color]
ai depois chamei esse metodo para a classe que criei da consulta paciente
[color=green]JB5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
conexao con=new conexao();
con.conectar();
[color=red]pa.mostrapaciente();[/color]
}}
);[/i]
entao ai to tentando fazer da seguinte forma…primeiramente queria que pode-se consultar os pacientes por dois modos…nome ou cpf…ai no caso teria que igualar no sql [color=brown]“rs=stmt.executeQuery(“SELECT * FROM paciente”);” [/color]com alguma varivel…no caso nome ou cpf…para assim me retornar a pesquisa…e logo apois o retorno da pesquisa…queria como disse acima poder clicar no paciente que quero…ao clicar ou precionar um botao…“ok” por exemplo…ele abri-se uma tela ou na mesma tela…colocando todos os dados para mim…exemplo…Nome: Nome do paciente…CPF: cpf do paciente…assim por diante…
vlw galera!
ALGUEM!!!HE
entao ai to tentando fazer da seguinte forma…primeiramente queria que pode-se consultar os pacientes por dois modos…nome ou cpf…ai no caso teria que igualar no sql [color=brown]“rs=stmt.executeQuery(“SELECT * FROM paciente”);” [/color]com alguma varivel…no caso nome ou cpf…para assim me retornar a pesquisa…e logo apois o retorno da pesquisa…queria como disse acima poder clicar no paciente que quero…ao clicar ou precionar um botao…“ok” por exemplo…ele abri-se uma tela ou na mesma tela…colocando todos os dados para mim…exemplo…Nome: Nome do paciente…CPF: cpf do paciente…assim por diante…
Então, se você quer uma consulta ou por nome ou por cpf faça o seguinte, antes de dar o executeQuery tente criar uma string que será a sql, e crie variaveis que recebe os comandos.
coloque um Jcombobox que o cara escolha a pesquisa por cpf ou nome, de um if para verificar qual ele selecionou
ai então crie a
Ex:
JComboBox box.... //segue codigo de inicialização e leitura da comboBox
String sql = "SELECT * FROM paciente where " + box + "= 'nome'";
Exemplo tosco pq estou sem tempo
senão der certo fds do uma olhadinha pra vc e mando codigo direitinho
Ah, e o negocio de abrir em uma nova janela, crie um JList (muito bom isso) e adiciona um ActionListenner ou ActionEvent
Abraçao
entao deixa eu entender bem…tenho duas clases…consulta paciente e conexao…na classe conexao q havia criado o metodo onde chamo ela na classe consulta…mais ai tenho q igualar as variaveis na classe consulta com a do metodo q chamei…a variavel da classe consulta e uma JTextField - JT1 no caso - ai tenho igualar o q escrevo dentro dela…com o script sql…isso to fazendo sem ser JComboBox…
VLW!