[Gvsig_usuarios] Problema al actualizar una tabla con scrip

2018-10-04 Thread Ovidio Ribeira
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()

___
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


Re: [Gvsig_usuarios] Problema al actualizar una tabla con scrip

2018-10-04 Thread Joaquin Jose del Cerro Murciano
El jue., 4 oct. 2018 a las 9:52, Ovidio Ribeira ()
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
>
> 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
gvSIG Association
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


Re: [Gvsig_usuarios] Problema al actualizar una tabla con scrip

2018-10-04 Thread Ovidio Ribeira
Saludos Joaquín
Todo perfecto, muchas gracias

De: gvsig_usuarios-boun...@listserv.gva.es 
 en nombre de Joaquin Jose del Cerro 
Murciano 
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 
(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

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
gvSIG Association
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


[Gvsig_usuarios] Columna serial

2018-10-04 Thread yeli
Buenas tardes grupo tengo un pequeño bloqueo, estoy insertando desde gvSIG
2.4 unos datos a una tabla ya existente que esta en mi base de datos
postgresql, tengo exactamente las mismas columnas , en la tabla que tengo
en mi base de datos el id es serial y primary key, cuando intento inserta
como es lógico me da un error por datos duplicados (la tabla de la base de
datos postgresql ya tiene datos), que hago para que me inserte los datos
sin que me de error y la columna se siga autoincrementando sin problemas
___
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