Java - UcanAccess Java

 
Vista:
sin imagen de perfil

UcanAccess Java

Publicado por Rodrigo (1 intervención) el 26/10/2016 19:53:56
Hola estoy trabajando en un proyecto en java del cual estoy haciendo una conexión con Acces con ayuda del driver UcanAccess todo va bien (los insert, delete, select) pero tengo un problema con el update ya que necesito hacer un update en 3 tablas relacionadas y lo estoy hacuiendo con INNER JOIN pero UcanAccess no reconoce INNER JOIN.

Mi consulta es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
String sql = ""
                    + "UPDATE CuerpoFolio INNER JOIN (Comisionado INNER JOIN (DocumentoServicio INNER JOIN (Partida INNER JOIN (Folio INNER JOIN (ClaveProg INNER JOIN CuerpoFolio ON ClaveProg.IdClaveProg = CuerpoFolio.fkClaveProg) ON Folio.IdFolio = CuerpoFolio.fkFolio) ON Partida.IdPartida = CuerpoFolio.fkPartida) ON DocumentoServicio.IdDocumentoServicio = CuerpoFolio.fkDocumentoServicio) ON Comisionado.IdComisionado = CuerpoFolio.fkComisionado) ON Ejercicio.IdEjercicio = Folio.fkEjercicio  "
                    + "SET CuerpoFolio.dni = ?, "
                    + "CuerpoFolio.fecha = ?, "
                    + "CuerpoFolio.oficio = ?, "
                    + "CuerpoFolio.boleto = ?, "
                    + "CuerpoFolio.importe = ?, "
                    + "CuerpoFolio.observaciones = ?, "
                    + "CuerpoFolio.fkPartida = ?, "
                    + "CuerpoFolio.fkClaveProg = ?, "
                    + "CuerpoFolio.fkDocumentoServicio = ?, "
                    + "CuerpoFolio.fkComisionado = ?"
                    + "WHERE (((CuerpoFolio.dni)=1) AND ((Folio.noFolio)=1) AND ((Ejercicio.IdEjercicio)=4))";

y la pila de errores es la siguiente:


net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 palabra no esperado: INNER required: SET

at net.ucanaccess.jdbc.UcanaccessConnection.prepareStatement(UcanaccessConnection.java:528)
at Control.ControlAperturaFolio.UpdateRegistroFolio(ControlAperturaFolio.java:167)
at Vista.Folio.btnGuardarActionPerformed(Folio.java:974)
at Vista.Folio.access$3100(Folio.java:45)
at Vista.Folio$21.actionPerformed(Folio.java:404)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.sql.SQLSyntaxErrorException: palabra no esperado: INNER required: SET
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)
at net.ucanaccess.jdbc.UcanaccessConnection.prepareStatement(UcanaccessConnection.java:525)
... 40 more
Caused by: org.hsqldb.HsqlException: palabra no esperado: INNER required: SET
at org.hsqldb.error.Error.parseError(Unknown Source)
at org.hsqldb.ParserBase.unexpectedTokenRequire(Unknown Source)
at org.hsqldb.ParserBase.readThis(Unknown Source)
at org.hsqldb.ParserDML.compileUpdateStatement(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
at org.hsqldb.Session.compileStatement(Unknown Source)
at org.hsqldb.StatementManager.compile(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
... 43 more


Quisiera saber si alguien conoce alguna forma de hacer mi update de otra forma teniendo en cuenta que estoy trabajando con Access 2007
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

UcanAccess Java

Publicado por Tom (1630 intervenciones) el 26/10/2016 20:32:28
Access no es ninguna maravilla que digamos, pero ¿ esa sentencia es SQL ? ¿ la admitiría cualquier otro gestor de BBDD ?

Quizás deberías mover el join al where ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

UcanAccess Java

Publicado por truthless (1 intervención) el 26/10/2016 21:44:51
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar