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

Responder a