Estoy usando xava pro 7.3.3, y no se si sea algo de esta version, pero tengo una clase llamada SituacionEconomicaFinanciera, que muestra los datos obtenidos de una vista de la base de datos, lo que quiero lograr es obtener esos datos que se muestran en pantalla, y guardarlos en sus respectivas tablas de la base de datos cuando se cambie algun valor de estas.
tengo esto en el archivo controllers.xml
<controller name="SituacionEconomicaFinanciera">
<extends controller="TypicalRealExcel">
<action name="save" mode="detail" by-default="if-possible" class="ec.com.mundoweb.acciones.GrabarSituacionEconomicaFinanciera" image="save.gif" icon="content-save" keystroke="Control S">
</action></extends></controller>
lo probe y no reemplaza a la accion que define por defecto openxava e incluso lo defini en application.xml aunque se que no es necesario pero queria ver si solucionaba el problema
yalerealiceuncleananbuildparaejecutarelproyectoperonosemecambiaporelcontroladorpersonalizado:publicclassGrabarSituacionEconomicaFinancieraextendsViewBaseAction{@Overridepublicvoidexecute()throwsException{System.out.println("Entro al grabar ");try{Mapdata=getView().getAllValues();System.out.println("Datos "+data.toString());addMessage("Successful");}catch(Exceptionex){addError("Error: "+ex.getMessage());throwex;}}
}
y sigue ejecutandose el metodo de guardado por default y como es una vista logicamente no me permite guardar los datos.
Que me falta o que estoy haciendo mal para que no se me ejecute la accion personalizada ya que me da este error por que no se cambia la accion
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: La vista o función 'dbo.v_situacion_economica_financiera_persona' no es actualizable porque la modificación afecta a varias tablas base.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:265)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1662)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:615)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:537)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7417)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3488)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:262)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:237)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:483)
Last edit: Saul Velecela 2024-07-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Generalmente las vistas se pueden usar para seleccionar datos, pero no siempre se pueden usar para alta, baja, modificación. Tendrías que ver si SQL Server permite hacer eso y si la vista creada esta configurada para eso.
De lo contrario, no te queda otra que crear entidades que mapeen a esas tablas cuya información deseas actualizar y hacerlo manualmente.
Saludos.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Lo que puedo acotar es que la clase cliente esta relacionada con la clase SituacionEconomicaFinanciera y como no mostraba el boton personalizado, le envie asi usando la anotacion @DetailAction permitiendome asi cargar la accion personalizada, talvez por alli va el tema pero como soy nuevo en openxava, no se si sea lo correcto, porque ahora necesitaria ocultar los botones por default que me carga la clase SituacionEconomicaFinanciera
<?xml version = "1.0" encoding = "ISO-8859-1"?><!DOCTYPE application SYSTEM "dtds/application.dtd"><applicationname="novacredit"><default-module><controllername="TypicalRealExcel"/></default-module><modulename="Proveedor"><env-varname="XAVA_SEARCH_ACTION"value="Proveedor.buscarProveedor"/><modelname="Proveedor"/><controllername="Proveedor"/></module><modulename="Cliente"><env-varname="XAVA_SEARCH_ACTION"value="Cliente.buscar"/><modelname="Cliente"/><controllername="Cliente"/></module><modulename="InventarioDeCartera"><env-varname="XAVA_SEARCH_ACTION"value="InventarioDeCartera.buscar"/><modelname="InventarioDeCartera"/><controllername="InventarioDeCartera"/></module><modulename="SituacionEconomicaFinanciera"><env-varname="XAVA_SEARCH_ACTION"value="SituacionEconomicaFinanciera.buscar"/><modelname="SituacionEconomicaFinanciera"/><controllername="SituacionEconomicaFinanciera"/></module></application>
y el controller.xml
<?xml version = "1.0" encoding = "ISO-8859-1"?><!DOCTYPE controllers SYSTEM "dtds/controllers.dtd"><controllers><controllername="Cliente"><extendscontroller="TypicalRealExcel"/><actionname="certificado"mode="detail"by-default="if-possible"class="ec.com.mundoweb.acciones.GenerarPDFVigentesCanceladas"/><actionname="certificadoCompleto"mode="detail"by-default="if-possible"class="ec.com.mundoweb.acciones.GenerarPDFCompleto"/><actionname="buscar"hidden="true"class="ec.com.mundoweb.acciones.BuscarDetalleCliente"></action></controller><controllername="SituacionEconomicaFinanciera"><extendscontroller="TypicalRealExcel"/><actionname="save"class="ec.com.mundoweb.acciones.GrabarSituacionEconomicaFinanciera"></action></controller></controllers>
Last edit: Saul Velecela 2024-07-27
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hola Chungyen Tsai, ya lo saque, he incluso probe eliminado de application.xml, le compile otra vez y sigue igual por el momento lo he solucionado definiendole @SaveAction sobre la coleccion
Si lo que buscas es ocultar el botón guardar y continuar de la aplicación. Puedes encontrar la solución aquí, que es añadir saveAndStayForCollections=false en xava.properties
Saludos.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Estoy usando xava pro 7.3.3, y no se si sea algo de esta version, pero tengo una clase llamada SituacionEconomicaFinanciera, que muestra los datos obtenidos de una vista de la base de datos, lo que quiero lograr es obtener esos datos que se muestran en pantalla, y guardarlos en sus respectivas tablas de la base de datos cuando se cambie algun valor de estas.
tengo esto en el archivo controllers.xml
<controller name="SituacionEconomicaFinanciera">
<extends controller="TypicalRealExcel">
<action name="save" mode="detail" by-default="if-possible" class="ec.com.mundoweb.acciones.GrabarSituacionEconomicaFinanciera" image="save.gif" icon="content-save" keystroke="Control S">
</action></extends></controller>
lo probe y no reemplaza a la accion que define por defecto openxava e incluso lo defini en application.xml aunque se que no es necesario pero queria ver si solucionaba el problema
<module name="SituacionEconomicaFinanciera">
<env-var name="XAVA_SAVE_ACTION" value="SituacionEconomicaFinanciera">
<model name="SituacionEconomicaFinanciera">
<controller name="SituacionEconomicaFinanciera">
</controller></model></env-var></module>
}
y sigue ejecutandose el metodo de guardado por default y como es una vista logicamente no me permite guardar los datos.
Que me falta o que estoy haciendo mal para que no se me ejecute la accion personalizada ya que me da este error por que no se cambia la accion
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: La vista o función 'dbo.v_situacion_economica_financiera_persona' no es actualizable porque la modificación afecta a varias tablas base.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:265)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1662)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:615)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:537)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7417)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3488)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:262)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:237)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:483)
Last edit: Saul Velecela 2024-07-20
Hola Saul,
Generalmente las vistas se pueden usar para seleccionar datos, pero no siempre se pueden usar para alta, baja, modificación. Tendrías que ver si SQL Server permite hacer eso y si la vista creada esta configurada para eso.
De lo contrario, no te queda otra que crear entidades que mapeen a esas tablas cuya información deseas actualizar y hacerlo manualmente.
Saludos.
Lo que puedo acotar es que la clase cliente esta relacionada con la clase SituacionEconomicaFinanciera y como no mostraba el boton personalizado, le envie asi usando la anotacion @DetailAction permitiendome asi cargar la accion personalizada, talvez por alli va el tema pero como soy nuevo en openxava, no se si sea lo correcto, porque ahora necesitaria ocultar los botones por default que me carga la clase SituacionEconomicaFinanciera
@OneToMany(mappedBy="cliente", cascade=CascadeType.ALL) @ListProperties("numeroOperación,fechaDeConcesión,actvidadRelación,lugarDeTrabajo,actividadEmpresa,antiguedadLaboral,ingresoFamiliar,gastoFamiliar,activos,pasivos,patrimonio,tipoVivienda")
@DetailAction("SituacionEconomicaFinanciera.save")
Collection<situacioneconomicafinanciera> situaciónEconómicaFinanciera;</situacioneconomicafinanciera>
Last edit: Saul Velecela 2024-07-22
Hola Saul,
Ahora que lo veo mejor, debería funcionar el guardado personalizado.
Puedes adjuntarme tu application.xml y controllers.xml?
Saludos.
esto es mi application.xml
y el controller.xml
Last edit: Saul Velecela 2024-07-27
Hola Saul,
Estas declarando XAVA_SEARCH_ACTION inexistentes en los modulos, prueba sacando eso.
Saludos.
Hola Chungyen Tsai, ya lo saque, he incluso probe eliminado de application.xml, le compile otra vez y sigue igual por el momento lo he solucionado definiendole @SaveAction sobre la coleccion
alli si se reemplaza por la accion personalizada, pero no se como ocultar el boton de grabar y continuar ya que si le doy clic alli me sale este error
Last edit: Saul Velecela 2024-07-29
Hola Saul,
Si lo que buscas es ocultar el botón guardar y continuar de la aplicación. Puedes encontrar la solución aquí, que es añadir saveAndStayForCollections=false en xava.properties
Saludos.