Foro Oficial de Java

No trataste la opción mía?

Cada fecha que te llegue con ".0" buscas el índice del punto y luego le hacés un substring desde la posición 0 hasta la que te devuelva el método indexOf.
 
corregí haciendo esto:
jComboBox1.addItem(rs.getString(1).replace(".0", "").trim()); y ya manda sin el .0, pero me esta arrojando java.lang.NullPointerException al consultar.
Consulto de esta forma:
historiac1.setFecha(jComboBox1.getSelectedItem().t oString().trim());
javax.swing.JOptionPane.showMessageDialog(null,his toriac1.getFecha());
try {
ResultSet rs = con.consultaHistoria(historiac1);
abdomen.setText(rs.getString(21).toUpperCase());
afamiliares.setText(rs.getString(12).toUpperCase() );
aobstetras.setText(rs.getString(11).toUpperCase()) ;
apersonales.setText(rs.getString(9).toUpperCase()) ;
quirurgicos.setText(rs.getString(10).toUpperCase() );
cardiop.setText(rs.getString(20).toUpperCase());
ccc.setText(rs.getString(18).toUpperCase());
diag.setText(rs.getString(25).toUpperCase());
dir.setText(rs.getString(4).toUpperCase());
extremidades.setText(rs.getString(23).toUpperCase( ));
fc.setText(rs.getString(14).toUpperCase());
fr.setText(rs.getString(15).toUpperCase());
gentomano.setText(rs.getString(22).toUpperCase());
lab.setText(rs.getString(26).toUpperCase());
mconsulta.setText(rs.getString(8).toUpperCase());
nmadre.setText(rs.getString(7).toUpperCase());
npadre.setText(rs.getString(6).toUpperCase());
peso.setText(rs.getString(16).toUpperCase());
respaciente.setText(rs.getString(3).toUpperCase()) ;
snc.setText(rs.getString(24).toUpperCase());
ta.setText(rs.getString(13).toUpperCase());
talla.setText(rs.getString(17).toUpperCase());
tel.setText(rs.getString(5).toUpperCase());
temp.setText(rs.getString(28).toUpperCase());
torax.setText(rs.getString(19).toUpperCase());
trat.setText(rs.getString(27).toUpperCase());
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, "Error:"+e);
}

y el método con que consulto es este:
public ResultSet consultaHistoria(medicdoft.beans.historiac h)
{
PreparedStatement ps=null;
ResultSet rs = null;
try
{
ps = c.prepareStatement("select * from historia where cedula="+h.getCod()+", fecha="+h.getFecha()+"");
rs = ps.executeQuery();

while(rs.next())
{
return rs;
}
}catch (Exception ex){
System.out.print("Error al consultar: "+ex);
}

return null;

}

Que estoy haciendo mal?
 
Mirar el API:

A constructor de la clase, SimpleDateFormat se le puede pasar el formato que uno quiera.
SimpleDateFormat sf = new SimpleDateFormat();

PERO si va a hacer un query y tiene muchas filas con la fecha, puede poner a hacer eso al motor de la Bd. Ahi si toca mirar que DB tiene.
 
Estoy utilizando mysql, me tira este error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fecha=2011-11-16 17:51:58' at line 1

No sé pq me estará retornando ese valor así..

Cambie en el método:
public ResultSet consultaHistoria(medicdoft.beans.historiac h)
{
PreparedStatement ps=null;
ResultSet rs = null;
try
{
ps = c.prepareStatement("select * from historia where cedula=?, fecha=?");
ps.setString(1,h.getCod());
ps.setString(2,h.getFecha());
rs = ps.executeQuery();

while(rs.next())
{
return rs;
}
}catch (Exception ex){
System.out.print("Error al consultar: "+ex);
}

return null;

}
y ahora me sale esto:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' fecha='2011-11-16 17:51:58'' at line 1

El método getFecha() es
public String getFecha() {
return fecha;
}

public void setFecha(String fecha) {
this.fecha = fecha;
}
 
ya descubrí el error, muchas gracias por su ayuda.

Cambié esto ps = c.prepareStatement("select * from historia where cedula=?, fecha=?"); por ps = c.prepareStatement("select * from historia where cedula=? and fecha=?");

estaba escribiendo mal la sentencia SQL
 
Quien conoce instituciones autorizadas en Colombia especialmente en Medellin que trabajen las diferentes certificaciones de java?
 
hola buenos dias, tengo un problemilla, y espero me puedan ayudar, estoy haciendo una aplicacion con un jDesktopPane en el cual uso varios jInternalFrame el problema es el siguiente, quiero que estos jInternalFrame no tengan los botones de control(minimizar, maximizar, etc) sino que al momento de ejecutar otro jInternalFrame (a travez de un jButton que tengo en un panel) este ejecute el nuevo jInternalFrame y me cierre u oculte el jInternalFrame anterior, he intentado con el .dispose(), el .hide(), y varios metodos que me he encontrado por ahi pero ninguno me ha funcionado, que me aconsejan que puedo hacer?? es posible hacerlo?? (deberia ser posiblee!!!) o si es necesario cambiar de metodo y pensar en una solucion mejor para la ejecucion de los jInternalFrames.....
mil gracias de antemano
Saludos....
 
hola buenos dias, tengo un problemilla, y espero me puedan ayudar, estoy haciendo una aplicacion con un jDesktopPane en el cual uso varios jInternalFrame el problema es el siguiente, quiero que estos jInternalFrame no tengan los botones de control(minimizar, maximizar, etc) sino que al momento de ejecutar otro jInternalFrame (a travez de un jButton que tengo en un panel) este ejecute el nuevo jInternalFrame y me cierre u oculte el jInternalFrame anterior, he intentado con el .dispose(), el .hide(), y varios metodos que me he encontrado por ahi pero ninguno me ha funcionado, que me aconsejan que puedo hacer?? es posible hacerlo?? (deberia ser posiblee!!!) o si es necesario cambiar de metodo y pensar en una solucion mejor para la ejecucion de los jInternalFrames.....
mil gracias de antemano
Saludos....

intente llamar el método repaint del JDesktopPane después de darle hide al JInternalFrame
 
intente llamar el método repaint del JDesktopPane después de darle hide al JInternalFrame

hola gracias intente con el repaint y no me sirvio, intente nuevamente con el .dispose() y ya los cierra y me funciona, pero al intentar por 3ra vez ya deja de abrir los frames... :( ke pasara?? este es el codigo ke estoy usando
PHP:
    public static int opc1=0, opc2=0, opc3=0;
    Form1 frame1 = new Form1();
    Form2 frame2 = new Form2();
    Form3 frame3 = new Form3();
    private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                               
        opc1+=1;
        if(opc2==1)
        {
            opc2=0;
            frame2.dispose();
        }
        else if(opc3==1)
        {
            opc3=0;
            frame3.dispose();
        }
        if(opc1==1)
        {
            DesktopPane.add(frame1);
            try
            {
                frame1.setMaximum(true);
                frame1.setVisible(true);
                frame1.setPreferredSize(null);
            }
            catch(Exception e)
            {
                javax.swing.JOptionPane.showMessageDialog(null, "Ha ocurrido algo inesperado...");
            }
            finally
            {
                frame1.show();
            }
        }
    }

ese es el mismo codigo para otros 2 botones que son los que me activan los otros formularios, me funcionan bien hasta cuando oprimo por 3ra vez uno de los botones, estoy usando jToggleButtons los cuales tengo en un group button, la idea es que al presionar uno de los botones se active el formulario y si hay algun otro formulario abierto lo cierre y solo ejecute el que esta referenciado en el boton presionado...no se si me explique.....
 
hola gracias intente con el repaint y no me sirvio, intente nuevamente con el .dispose() y ya los cierra y me funciona, pero al intentar por 3ra vez ya deja de abrir los frames... :( ke pasara?? este es el codigo ke estoy usando
PHP:
    public static int opc1=0, opc2=0, opc3=0;
    Form1 frame1 = new Form1();
    Form2 frame2 = new Form2();
    Form3 frame3 = new Form3();
    private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                               
        opc1+=1;
        if(opc2==1)
        {
            opc2=0;
            frame2.dispose();
        }
        else if(opc3==1)
        {
            opc3=0;
            frame3.dispose();
        }
        if(opc1==1)
        {
            DesktopPane.add(frame1);
            try
            {
                frame1.setMaximum(true);
                frame1.setVisible(true);
                frame1.setPreferredSize(null);
            }
            catch(Exception e)
            {
                javax.swing.JOptionPane.showMessageDialog(null, "Ha ocurrido algo inesperado...");
            }
            finally
            {
                frame1.show();
            }
        }
    }

ese es el mismo codigo para otros 2 botones que son los que me activan los otros formularios, me funcionan bien hasta cuando oprimo por 3ra vez uno de los botones, estoy usando jToggleButtons los cuales tengo en un group button, la idea es que al presionar uno de los botones se active el formulario y si hay algun otro formulario abierto lo cierre y solo ejecute el que esta referenciado en el boton presionado...no se si me explique.....

le adjunto el programa de prueba que hice para verificar el funcionamiento, está hecho en netbeans, lo importante son los dos métodos de la clase DesktopApplication1View:

@Action
public void ocultarJInternalFrame() {
this.jInternalFrame1.setVisible(false);
jDesktopPane1.repaint();
}

@Action
public void mostrarJInternalFrame() {
this.jInternalFrame1.setVisible(true);
jDesktopPane1.repaint();
}

saludos.
 

Archivos adjuntos

  • DesktopApplication1.zip
    125.3 KB · Visitas: 61
Alguien sabe por que mi arreglo me esta mostrando esto
null35
null20
null17
null22

estoy sacando los valores de un string y metiendolos en el arreglo pero me adjunta el null
y no se por que...
 
Alguien sabe por que mi arreglo me esta mostrando esto
null35
null20
null17
null22

estoy sacando los valores de un string y metiendolos en el arreglo pero me adjunta el null
y no se por que...

Depronto no está haciendo algo como

arrayString[0]=arrayString[0]+"35";

Cuando un objeto String es null, pero usted lo opera con el "+", se convierte en el String "null", no en el tipo de dato null....
 
hola de nuevo!! tengo otro problemilla.....aver....lo de podes cambiar de jInternalFrames dentro del jDestopPanel ya lo hago sin problemas....pero ahora se me ocurrio hacer una pantalla de logueo ke se ejecuta al iniciar la aplicacion
private void formWindowActivated(java.awt.event.WindowEvent evt) {
try
{
inicio.setVisible(true);
inicio.setMaximum(true);

DesktopPane.add(inicio);
DesktopPane.repaint();
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, e);
}
}
y como evento dentro de este frame coloque este codigo:
private void btn_LoginActionPerformed(java.awt.event.ActionEvent evt) {
if(txt_Login.getText().length()!=0)
{
Connection conexion = null;
Statement sentencia;
ResultSet resultado;

try
{
conexion=DriverManager.getConnection(Conexion.rute,Conexion.user,Conexion.pass);
System.out.println("Connection Ok");
sentencia=conexion.createStatement();
resultado = sentencia.executeQuery("SELECT Password FROM Usuario WHERE Id_Usuario="+txt_Login.getText());
resultado.next();
pass=resultado.getString("Password");

if(pass.equals(txt_Pass.getText()))
{
javax.swing.JOptionPane.showMessageDialog(null, "Bienvenido!");
this.dispose();
Files.Interfaz.DesktopPane.repaint();
}

}
catch(SQLException e)
{
if(conexion != null)
{
try
{
conexion.close();
}
catch(SQLException ex)
{
System.out.println("Error en busqueda");
}
}
javax.swing.JOptionPane.showMessageDialog(null,"No se encontro ningun Usuario con esa cedula", "Espera", javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
javax.swing.JOptionPane.showMessageDialog(null,"Debes Ingresar una Cedula a buscar", "Espera", javax.swing.JOptionPane.INFORMATION_MESSAGE);
}

}

la variable "pass" es una variable string publica que tengo dentro del mismo formulario de logueo....y reconoce el el usuario y la contraseña de la base de datos.... pero cuando lo hace le coloco ke haga un dispose() para ke se cierre esta pantalla y me deje en la interfaz de la aplicacion donde podre usar lsa opciones que tengo...pero no pasa...de hecho tengo que darle nuevamente clic al boton de inicar secion para que se cierre la ventana de logeo...no se que pasa.... como puedo evitar esto? tambien al iniciar la aplicacion me sale un mensaje de una de las excepciones, pero no se cual es, me dice: "java.lang.NullPointerException" no se si es por algun foco o algo... :( kien me puede ayudar?
 
ok, voy a intentar y te digo enseguida

bueno el error de repetir ya se quitó, muchas gracias!! pero aun tengo el de la excepción "java.lang.NullPointerException" y me sale cada vez que ejecuto uno de los frames, y me manda nuevamente al framde de login

private void btn_1ActionPerformed(java.awt.event.ActionEvent evt) {
try
{
venta.setVisible(false);
options.setVisible(false);
CheckSit.setVisible(true);
CheckSit.setMaximum(true);

DesktopPane.add(CheckSit);
DesktopPane.repaint();
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, "Error en "+e);
}
}

este es otro frame ke ejecuto desde uno de los botones de la interfaz principal (la ke contiene el jDesktopPanel) y al presionar el boton sale la excepcion esa... y me manda de nuevo al login

pfff al parecer el problema es por usar el .setMaximum(); existe alguna otra forma de maximizar el frame?
 
ok, voy a intentar y te digo enseguida

bueno el error de repetir ya se quitó, muchas gracias!! pero aun tengo el de la excepción "java.lang.NullPointerException" y me sale cada vez que ejecuto uno de los frames, y me manda nuevamente al framde de login



este es otro frame ke ejecuto desde uno de los botones de la interfaz principal (la ke contiene el jDesktopPanel) y al presionar el boton sale la excepcion esa... y me manda de nuevo al login

pfff al parecer el problema es por usar el .setMaximum(); existe alguna otra forma de maximizar el frame?

Cuando le sale al Exception siempre sale el número de línea en la cual ocurre, mire a ver si en esa línea esta accediendo a un objeto al cual no le hayas hecho un = new NombreDeTuClase();

Como cositas adicionales:
1. El acceso de base de datos debe hacerse desde otra clase que no sea la UI (por si quiere cambiar de UI no le toque volver a hacer TODO el programa completo).
2. El nombre de los Objetos deben empezar en minuscula (Cuando accedes a DesktopPane.repaint(); pareciera que estas llamando un método estático de la clase y no al método del objeto).

Revise con un debug que todos los objetos que esta usando tengan un valor distinto de null.
Me cuenta como le va.
 
De esa forma me manda en formato dd/mm/yy hh:mm AM/PM :(

edit: corregí haciendo esto:
jComboBox1.addItem(rs.getString(1).replace(".0", "").trim()); y ya manda sin el .0, pero me esta arrojando java.lang.NullPointerException al consultar.
Consulto de esta forma:
historiac1.setFecha(jComboBox1.getSelectedItem().toString().trim());
javax.swing.JOptionPane.showMessageDialog(null,historiac1.getFecha());
try {
ResultSet rs = con.consultaHistoria(historiac1);
abdomen.setText(rs.getString(21).toUpperCase());
afamiliares.setText(rs.getString(12).toUpperCase());
aobstetras.setText(rs.getString(11).toUpperCase());
apersonales.setText(rs.getString(9).toUpperCase());
quirurgicos.setText(rs.getString(10).toUpperCase());
cardiop.setText(rs.getString(20).toUpperCase());
ccc.setText(rs.getString(18).toUpperCase());
diag.setText(rs.getString(25).toUpperCase());
dir.setText(rs.getString(4).toUpperCase());
extremidades.setText(rs.getString(23).toUpperCase());
fc.setText(rs.getString(14).toUpperCase());
fr.setText(rs.getString(15).toUpperCase());
gentomano.setText(rs.getString(22).toUpperCase());
lab.setText(rs.getString(26).toUpperCase());
mconsulta.setText(rs.getString(8).toUpperCase());
nmadre.setText(rs.getString(7).toUpperCase());
npadre.setText(rs.getString(6).toUpperCase());
peso.setText(rs.getString(16).toUpperCase());
respaciente.setText(rs.getString(3).toUpperCase());
snc.setText(rs.getString(24).toUpperCase());
ta.setText(rs.getString(13).toUpperCase());
talla.setText(rs.getString(17).toUpperCase());
tel.setText(rs.getString(5).toUpperCase());
temp.setText(rs.getString(28).toUpperCase());
torax.setText(rs.getString(19).toUpperCase());
trat.setText(rs.getString(27).toUpperCase());
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, "Error:"+e);
}

y el método con que consulto es este:
public ResultSet consultaHistoria(medicdoft.beans.historiac h)
{
PreparedStatement ps=null;
ResultSet rs = null;
try
{
ps = c.prepareStatement("select * from historia where cedula="+h.getCod()+", fecha="+h.getFecha()+"");
rs = ps.executeQuery();

while(rs.next())
{
return rs;
}
}catch (Exception ex){
System.out.print("Error al consultar: "+ex);
}

return null;

}

Que estoy haciendo mal?

Ya inicio el objeto de conexion?

Cuando le sale al Exception siempre sale el número de línea en la cual ocurre, mire a ver si en esa línea esta accediendo a un objeto al cual no le hayas hecho un = new NombreDeTuClase();

Como cositas adicionales:
1. El acceso de base de datos debe hacerse desde otra clase que no sea la UI (por si quiere cambiar de UI no le toque volver a hacer TODO el programa completo).
2. El nombre de los Objetos deben empezar en minuscula (Cuando accedes a DesktopPane.repaint(); pareciera que estas llamando un método estático de la clase y no al método del objeto).

Revise con un debug que todos los objetos que esta usando tengan un valor distinto de null.
Me cuenta como le va.

para complementar lo que dice R4 peguele una leidita a este documento
 
HOla .. alguien el el foro sabe cuanto cuesta el examen de certificacion en Java Associate .. o SCJA.. que es el primer nivel . Y que centros autorizados existen en el pais para realizar dicho examen? . pongo la duda aqui porque los hilos que tratan del tema estan demasiado desactualizados y no creo conveniente revivirlos..

gracias
 

Los últimos temas