Saludos Joaquín Todo perfecto, muchas gracias ________________________________ De: gvsig_usuarios-boun...@listserv.gva.es <gvsig_usuarios-boun...@listserv.gva.es> en nombre de Joaquin Jose del Cerro Murciano <jjdelce...@gvsig.org> Enviado: jueves, 4 de octubre de 2018 11:22 Para: Lista de Usuarios de gvSIG Asunto: Re: [Gvsig_usuarios] Problema al actualizar una tabla con scrip
El jue., 4 oct. 2018 a las 9:52, Ovidio Ribeira (<albore...@hotmail.es<mailto:albore...@hotmail.es>>) escribió: Buenos días, tengo el siguiente script para actualizar una tabla desde un formulario, pero me da el siguiente error " Concurrente modification in store" si coge los nuevos datos pero no cierra la edición de la tabla ni guarda los cambios y no consigo saber cual es el problema, Gracias y saludos Ovidio def Okey_click(self,*args): NREXISTRO = self.Nentrada.getText() NDATA = self.Dentrada.getText() NVISITA = self.Comprobada.getText() NASINA = self.Dsinatura.getText() Nexpedi = self.n_expedi.getText() TablaExpe = currentProject().getTable("NExpedi") ndoexpe = TablaExpe().features("CLAVE_EXPE= '" +Nexpedi +"'" ) contarE = ndoexpe.getCount() print contarE if contarE == 0: msgbox("Non hai este expediente ", "AVISO", 1) return TablaExpe.edit() for expe in ndoexpe: c = expe.getEditable() c.set("NREXI", NREXISTRO) c.set("DATAREXI", NDATA) c.set("DATAVISTA",NVISITA) c.set("DATASINA",NASINA) TablaExpe.update(c) TablaExpe.commit() Hola, pues la respuesta simple seria: - Si vas a recorrer una tabla/capa para consultar los datos, puedes hacerlo tal como lo has hecho. Pero solo para consultar. - Si vas a actualizar los datos de una tabla, debes obtener un feature-set, y utilizarlo para recorrer los datos y hacer los updates sobre el. Basicamente, en cuanto hay alguien que esta recorriendo los datos de una tabla, nadie mas puede hacer updates sobre ella, asi evitamos que puedan haber modificaciones concurrentes. Los updates solo se pueden hacer sobre el feature set del que hemos obtenido la feature que queremos actualizar (lo mismo con inserts y removes). Los cambios en el codigo que has incluido deberian ser minimos, algo como: TablaExpe.edit() # Obtenemos un FeatureSet de la tabla featureSet = TablaExpe.getFeatureStore().getFeatureSet() for expe in featureSet: # Usamos el FeatureSet para recorrer la tabla c = expe.getEditable() c.set("NREXI", NREXISTRO) c.set("DATAREXI", NDATA) c.set("DATAVISTA",NVISITA) c.set("DATASINA",NASINA) featureSet.update(c) # El update lo hacemos sobre el FeatureSet TablaExpe.commit() Un saludo Joaquin _______________________________________________ gvSIG_usuarios mailing list gvSIG_usuarios@listserv.gva.es<mailto:gvSIG_usuarios@listserv.gva.es> Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios -- -------------------------------------- Joaquin Jose del Cerro Murciano Development and software arquitecture manager at gvSIG Team jjdelce...@gvsig.com<mailto:jjdelce...@gvsig.com> gvSIG Association www.gvsig.com<http://www.gvsig.com>
_______________________________________________ gvSIG_usuarios mailing list gvSIG_usuarios@listserv.gva.es Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios