Actualizacion de vista remota mdb

103 views
Skip to first unread message

Giovani Bonifaz

unread,
Nov 2, 2010, 12:37:49 PM11/2/10
to Comunidad de Visual Foxpro en Español
Buenos dìas amigos
Espero puedan darse un tiempito para revisar esta consulta les estaré
muy agradecido.
He hecho una vista remota hacia una tabla de una base de acces, el
hecho es que quiero actualizar una campo de esa tabla con diferentes
valores, estoy haciendo unas pruebas y con el codigo que estoy
poniendo me reeemplaza todos los registros del campo con un mismo
valor, pero lo que quiero es solo cambiar un valor por vez, abajo les
copio el codigo que estoy usan por favor si alguien me lo puede
devolver corregido o indicarme que es lo que esoty haciendo mal.

Muchas gracias por su ayuda.

OPEN DATABASE "\siasis.dbc"
USE hmap AGAIN IN 0
SELECT Hmap
CURSORSETPROP("KeyFieldList","Extcode","hmap")
REPLACE Extcode WITH "10"
CURSORSETPROP("SendUpdates",.t.,"hmap")
tableupdate(.t.,.t.,"hmap")
REQUERY("hmap")
BROWSE LAST FOR iso_ctry="PE"
USE

Giovani Bonifaz

unread,
Nov 3, 2010, 11:43:29 AM11/3/10
to Comunidad de Visual Foxpro en Español
Hola nuevamente

Reactivo mi consulta, por favor si alguien pueda ayudarme le estare
muy agradecido.

Saludos,

Guillermo MDQ

unread,
Nov 3, 2010, 11:58:04 AM11/3/10
to Comunidad de Visual Foxpro en Español
Me parece que en el REPLACE tendrias que indicarle el campo clave que
identifica el registro con la clausula FOR:

REPLACE Extcode WITH "10" FOR campoID=variableID

Saludos
Guillermo

Luis Mata

unread,
Nov 3, 2010, 12:08:35 PM11/3/10
to publice...@googlegroups.com
?pero este codigo deberia de llevar un condicion:

REPLACE Extcode WITH "10"

deberia de ser:

REPLACE Extcode WITH "10" FOR MICAMPOUNICO=5

lUIS

----- Original Message -----
From: "Giovani Bonifaz" <giovani...@gmail.com>
To: "Comunidad de Visual Foxpro en Espa�ol"
<publice...@googlegroups.com>
Sent: Wednesday, November 03, 2010 10:43 AM
Subject: [vfp] Re: Actualizacion de vista remota mdb


Hola nuevamente

Reactivo mi consulta, por favor si alguien pueda ayudarme le estare
muy agradecido.

Saludos,


On 2 nov, 11:37, Giovani Bonifaz <giovaniboni...@gmail.com> wrote:

> Buenos d�as amigos
> Espero puedan darse un tiempito para revisar esta consulta les estar�

Giovani Bonifaz

unread,
Nov 3, 2010, 12:36:58 PM11/3/10
to Comunidad de Visual Foxpro en Español
Gracias por darse el tiempo para responder,

Hice lo que me sugirieron de esta forma:

OPEN DATABASE "c:\users\gbonifaz\desktop\maestros siasis sig
\siasis.dbc"
USE hmap AGAIN IN 0
SELECT Hmap
CURSORSETPROP("KeyFieldList","Extcode","hmap")
REPLACE Extcode WITH "000" FOR name=="LAMBAYEQUE"
CURSORSETPROP("SendUpdates",.t.,"hmap")
tableupdate(.t.,.t.,"hmap")
REQUERY("hmap")
BROWSE LAST FOR iso_ctry="PE"
USE

Como resultado, no hay ningun cambio es decir no reemplaza ningun
valor, sin embargo cuando hago esto:

OPEN DATABASE "c:\users\gbonifaz\desktop\maestros siasis sig
\siasis.dbc"
USE hmap AGAIN IN 0
SELECT Hmap
CURSORSETPROP("KeyFieldList","Extcode","hmap")
REPLACE Extcode WITH "000"
CURSORSETPROP("SendUpdates",.t.,"hmap")
tableupdate(.t.,.t.,"hmap")
REQUERY("hmap")
BROWSE LAST FOR iso_ctry="PE"
USE

El resultado es que me cambia el valor de ese campo con "000" en todos
los registro de la tabla.

Algo falta verdad? que sera....Gracias nuevamente por su tiempo.
> > USE- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Luis Mata

unread,
Nov 3, 2010, 12:41:05 PM11/3/10
to publice...@googlegroups.com
?Toma en cuenta que name con el dato "LAMBAYEQUE" puede tener espacios en el
lado derecho los cuales tambien se tomane en cuanta:
para esto debes de usar ALLTRIM(name)
o activar en el fox SET EXACT OFF
o LIKE
Luis

Miguel Antúnez

unread,
Nov 3, 2010, 12:57:56 PM11/3/10
to publice...@googlegroups.com
Siempre tuve problemas con las vistas remotas actualizables. te recomendaría usar el SQLPASSTHROUGH

Saludos.

El 3 de noviembre de 2010 11:55, Giovani Bonifaz <giovani...@gmail.com> escribió:
Hola Luis

Gracias nuevamente por responder, le puse el alltrim y no hubieron
cambios, no reemplazo nada. No se supopne que si yo pongo el replace
SOLO sin FOR el reemplaso se hace solo en el registro que se esta
apuntando? lo extraño tambien es que cuando no le pongo FOR me
reemplasa todos los registros con el valor que le indique, presiento
que algo tiene que ver con que es una vista remota...sera?

Giovani
> >> - Mostrar texto de la cita -- Ocultar texto de la cita -

>
> - Mostrar texto de la cita -



--
Miguel Angel Antúnez Camones
Especialista en SQL Server

mant...@frenosa.com.pe
mant...@gmail.com
miguel_...@msn.com
Cel. 997914428

Microsoft Active Professional
Membresía FY10-04-0745

Giovani Bonifaz

unread,
Nov 3, 2010, 12:55:08 PM11/3/10
to Comunidad de Visual Foxpro en Español
Hola Luis

Gracias nuevamente por responder, le puse el alltrim y no hubieron
cambios, no reemplazo nada. No se supopne que si yo pongo el replace
SOLO sin FOR el reemplaso se hace solo en el registro que se esta
apuntando? lo extraño tambien es que cuando no le pongo FOR me
reemplasa todos los registros con el valor que le indique, presiento
que algo tiene que ver con que es una vista remota...sera?

Giovani

On 3 nov, 11:41, "Luis Mata" <lm...@cclf.com.pe> wrote:
> >> - Mostrar texto de la cita -- Ocultar texto de la cita -

Guillermo MDQ

unread,
Nov 3, 2010, 1:17:53 PM11/3/10
to Comunidad de Visual Foxpro en Español

El campo "name" que pusiste es la clave unica de esa tabla ?
Porque no probas tambien uando el comando UPDATE en vez de el REPLACE.


Saludos
Guillermo

Luis Mata

unread,
Nov 3, 2010, 1:20:59 PM11/3/10
to publice...@googlegroups.com
?Una de las formas de poder descartar la comparacion de datos es primero
hacer un test con un SELECT.
para hacer descartes has un select si no devuelve ningun regustro algo esta
mal.

Luis
----- Original Message -----
From: "Giovani Bonifaz" <giovani...@gmail.com>
To: "Comunidad de Visual Foxpro en Espa�ol"
<publice...@googlegroups.com>
Sent: Wednesday, November 03, 2010 11:55 AM
Subject: [vfp] Re: Actualizacion de vista remota mdb


Hola Luis

Gracias nuevamente por responder, le puse el alltrim y no hubieron
cambios, no reemplazo nada. No se supopne que si yo pongo el replace
SOLO sin FOR el reemplaso se hace solo en el registro que se esta

apuntando? lo extra�o tambien es que cuando no le pongo FOR me

Giovani Bonifaz

unread,
Nov 3, 2010, 1:34:32 PM11/3/10
to publice...@googlegroups.com
Ya lo hice y si se ejecuta el select correctamente

El 3 de noviembre de 2010 12:20, Luis Mata <lm...@cclf.com.pe> escribió:
?Una de las formas de poder descartar la comparacion de datos es primero hacer un test con un SELECT.
para hacer descartes has un select si no devuelve ningun regustro algo esta mal.

Luis
----- Original Message ----- From: "Giovani Bonifaz" <giovani...@gmail.com>
To: "Comunidad de Visual Foxpro en Español" <publice...@googlegroups.com>

Sent: Wednesday, November 03, 2010 11:55 AM

Subject: [vfp] Re: Actualizacion de vista remota mdb


Hola Luis

Gracias nuevamente por responder, le puse el alltrim y no hubieron
cambios, no reemplazo nada. No se supopne que si yo pongo el replace
SOLO sin FOR el reemplaso se hace solo en el registro que se esta
apuntando? lo extraño tambien es que cuando no le pongo FOR me



--
----------------------------------
Giovani Bonifaz Pantani
Cel.992475652


Giovani Bonifaz

unread,
Nov 3, 2010, 1:35:42 PM11/3/10
to publice...@googlegroups.com
El campo name es un campo comun, lo pongo solo por probar nada mas, voy a hacer la prueba con el Update
 
Gracias

Luis Mata

unread,
Nov 3, 2010, 2:02:06 PM11/3/10
to publice...@googlegroups.com
Pero el select tiene que tener WHERE para hacer descartes.
 
captura tu tabla datos y campos para verlo y ponlo aqui.

Giovani Bonifaz

unread,
Nov 3, 2010, 2:19:34 PM11/3/10
to publice...@googlegroups.com
Miren he puesto esto:
 

OPEN DATABASE

"c:\users\gbonifaz\desktop\maestros siasis sig\siasis.dbc"

USE

hmap AGAIN IN 0

SELECT

Hmap

CURSORSETPROP

("KeyFieldList","Extcode","Hmap")

CURSORSETPROP

("updatetype",1,"Hmap")

UPDATE

Hmap SET Extcode = "012" WHERE ALLTRIM(Lvlid)="PEH001000000000000000"

tableupdate

(0,.t.,"Hmap")

*REQUERY("hmap")

BROWSE LAST FOR

iso_ctry="PE"

 

Hasta ahi todo bien, el cambio se hace aparentemente, pero luego al hacer el Requery todo queda como antes, es decir no se actualiza el cambio. Entonces asumo que el problema no esta en el Update o Replace, sino mas bien con el cursorsetprop o algo de eso, alguna sugerencia?



Giovani Bonifaz

unread,
Nov 3, 2010, 2:38:16 PM11/3/10
to Comunidad de Visual Foxpro en Español
Hola Miguel

Por favor podrias mandarme un ejemplito de como aplicar SQLPASSTHROUGH
no lo he visto antes

Gracias

On 3 nov, 11:57, Miguel Antúnez <mantun...@gmail.com> wrote:
> Siempre tuve problemas con las vistas remotas actualizables. te recomendaría
> usar el SQLPASSTHROUGH
>
> Saludos.
>
> El 3 de noviembre de 2010 11:55, Giovani Bonifaz
> <giovaniboni...@gmail.com>escribió:
> mantu...@frenosa.com.pe
> mantun...@gmail.com
> miguel_antu...@msn.com
> Cel. 997914428
>
> Microsoft Active Professional
> Membresía FY10-04-0745- Ocultar texto de la cita -

Luis Mata

unread,
Nov 3, 2010, 3:13:27 PM11/3/10
to publice...@googlegroups.com
?Lo que indica Miguel es que deberias de trabajar directamente con las
tablas, no entiendo bien a que te refieres con vista remota.

Al menos yo trabajo con la BD me conecto y ahi ejecuto cualquier comando sql
con SQLEXEC().

Luis

----- Original Message -----
From: "Giovani Bonifaz" <giovani...@gmail.com>
To: "Comunidad de Visual Foxpro en Espa�ol"
<publice...@googlegroups.com>
Sent: Wednesday, November 03, 2010 1:38 PM
Subject: [vfp] Re: Actualizacion de vista remota mdb


Hola Miguel

Por favor podrias mandarme un ejemplito de como aplicar SQLPASSTHROUGH
no lo he visto antes

Gracias

On 3 nov, 11:57, Miguel Ant�nez <mantun...@gmail.com> wrote:
> Siempre tuve problemas con las vistas remotas actualizables. te

> recomendar�a


> usar el SQLPASSTHROUGH
>
> Saludos.
>
> El 3 de noviembre de 2010 11:55, Giovani Bonifaz

> <giovaniboni...@gmail.com>escribi�:


>
>
>
>
>
> > Hola Luis
>
> > Gracias nuevamente por responder, le puse el alltrim y no hubieron
> > cambios, no reemplazo nada. No se supopne que si yo pongo el replace
> > SOLO sin FOR el reemplaso se hace solo en el registro que se esta

> > apuntando? lo extra�o tambien es que cuando no le pongo FOR me

> Miguel Angel Ant�nez Camones


> Especialista en SQL Server
>
> mantu...@frenosa.com.pe
> mantun...@gmail.com
> miguel_antu...@msn.com
> Cel. 997914428
>
> Microsoft Active Professional

> Membres�a FY10-04-0745- Ocultar texto de la cita -

Miguel Antúnez

unread,
Nov 3, 2010, 3:19:56 PM11/3/10
to publice...@googlegroups.com

Giovani Bonifaz

unread,
Nov 3, 2010, 3:22:36 PM11/3/10
to publice...@googlegroups.com
Habe me explico
 
Tengo una base de datos nativa de VFP a la que le añadido por medio de una conexion de Vista remota una tabla de una base de datos mdb de acces, la base en cuestion no tiene clave ni ninguna restricción. Lo que quiero hacer es actualizar un campo de esa vista remota con algunos datos que se encuentran en las tablas de la base de datos vfp, primero estoy haciendo el reemplazo manual de un solo valor al campo Extcode para probar, pero como les decia todo sale bien aparentemete hasta cuando recupero nuevamente los datos y veo que los cambios no se han guardado.
 
Creo que esta mas claro no? ojala y me puedan ayudar.


 
El 3 de noviembre de 2010 14:13, Luis Mata <lm...@cclf.com.pe> escribió:
?Lo que indica Miguel es que deberias de trabajar directamente con las tablas, no entiendo bien a que te refieres con vista remota.

Al menos yo trabajo con la BD me conecto y ahi ejecuto cualquier comando sql con SQLEXEC().

Luis

----- Original Message ----- From: "Giovani Bonifaz" <giovani...@gmail.com>
To: "Comunidad de Visual Foxpro en Español" <publice...@googlegroups.com>

Sent: Wednesday, November 03, 2010 1:38 PM

Subject: [vfp] Re: Actualizacion de vista remota mdb


Hola Miguel

Por favor podrias mandarme un ejemplito de como aplicar SQLPASSTHROUGH
no lo he visto antes

Gracias

On 3 nov, 11:57, Miguel Antúnez <mantun...@gmail.com> wrote:
Siempre tuve problemas con las vistas remotas actualizables. te recomendaría

usar el SQLPASSTHROUGH

Saludos.

El 3 de noviembre de 2010 11:55, Giovani Bonifaz






> Hola Luis

> Gracias nuevamente por responder, le puse el alltrim y no hubieron
> cambios, no reemplazo nada. No se supopne que si yo pongo el replace
> SOLO sin FOR el reemplaso se hace solo en el registro que se esta
> apuntando? lo extraño tambien es que cuando no le pongo FOR me
Miguel Angel Antúnez Camones

Especialista en SQL Server

mantu...@frenosa.com.pe
mantun...@gmail.com
miguel_antu...@msn.com
Cel. 997914428

Microsoft Active Professional
Membresía FY10-04-0745- Ocultar texto de la cita -


- Mostrar texto de la cita -

Luis Mata

unread,
Nov 3, 2010, 3:37:27 PM11/3/10
to publice...@googlegroups.com
Por eso.. usa SQLCONNECT(), SQLEXEC()
Osea te tienes que conectar al MDB y hacer los cambios en el mdb directamente.
ahora como conectarte a access
aqui:
 
 
pero si no has usado esos comandos te dire que es un mundo completamente diferente a usar DBF pero es lo mejor.

Miguel Antúnez

unread,
Nov 3, 2010, 3:37:42 PM11/3/10
to publice...@googlegroups.com
ncon=SQLstringconnect("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False;")
=SQLEXEC(ncon,"select * from mitabla","micursor")
=SQLEXEC(ncon,"update mitabla set micampo=?mivariable where micampoclave=?micondicion")

ahí te va un ejemplo de SQLPASSTHROUGH
mant...@frenosa.com.pe
mant...@gmail.com
miguel_...@msn.com

Giovani Bonifaz

unread,
Nov 3, 2010, 4:03:53 PM11/3/10
to publice...@googlegroups.com
Hay amigos, no pasa nada, segui sus instrucciones e hice esto:
 

ncon=

SQLstringconnect("Provider=Microsoft.ACE.OLEDB.12.0;DataSource=c:\users\gbonifaz\desktop\maestros siasis sig\Hmap.mdb;Persist Security Info=False;")

=

SQLEXEC(ncon,"select * from Hierarchy","micursor")

=

SQLEXEC(ncon,"update Hierarchy set ExtCode=987 where LvlId=PEH001000000000000000")

 

Se ejecuto sin dar errores, luego reviso la tabla y los cambios no se han grabado, osea lo mismo que antes.

Algo mas antes que me infarte!!!!

 

Miguel Antúnez

unread,
Nov 3, 2010, 4:07:55 PM11/3/10
to publice...@googlegroups.com
si pones esto que sale ?SQLEXEC(ncon,"select * from Hierarchy","micursor")
si da mayor a 1 lo hace bien, lo mismo en el update
si no, puedes capturar el error con 
aerror(mierror)
?mierror(2)
y ver que sale.

ANTONIO BAUZA HERNANDEZ

unread,
Nov 3, 2010, 4:13:15 PM11/3/10
to FOXPRO GRUPO
Disculpen mi ignorancia pero no sera que la clave esta en las negritas????


Tengo una base de datos nativa de VFP a la que le añadido por medio de una conexion de Vista remota una tabla de una base de datos mdb de acces, la base en cuestion no tiene clave ni ninguna restricción. Lo que quiero hacer es actualizar un campo de esa vista remota con algunos datos que se encuentran en las tablas de la base de datos vfp, primero estoy haciendo el reemplazo manual de un solo valor al campo Extcode para probar, pero como les decia todo sale bien aparentemete hasta cuando recupero nuevamente los datos y veo que los cambios no se han guardado.

Estas actualizando una vista y pues le puedes hacer los cambios que quieras mientras este abierta pero si no guardas los cambios en una tabla, los cambios de la vista se pierden al volver a abrirla.... Al menos asi entiendo lo que planteas, debes guardarlas fisicamente en una tabla....


Lic. Antonio Bauza Hernández
Analista
Cel. 782 115 2544
AVC Computacion S.A. de C.V.
Desarrollo
Tel. +52 782 822 0505
Poza Rica, Ver., Mexico



Miguel Antúnez

unread,
Nov 3, 2010, 4:16:41 PM11/3/10
to publice...@googlegroups.com
me parece que aqui esta el error, los tipo char tiene  que ir en ''
SQLEXEC
(ncon,"update Hierarchy set ExtCode=987 where LvlId=PEH001000000000000000")
asi:
SQLEXEC(ncon,"update Hierarchy set ExtCode=987 where LvlId='PEH001000000000000000'")

Giovani Bonifaz

unread,
Nov 3, 2010, 4:33:40 PM11/3/10
to publice...@googlegroups.com
MUY ESTIMADOS AMIGOS QUE SE DIERON EL TIEMPO DE CONTESTAR, GRACIAS!
Por fin quedo la bendita actualización de esta forma:
 

ncon=

SQLstringconnect("Provider=Microsoft.ACE.OLEDB.12.0;DataSource=c:\users\gbonifaz\desktop\maestros siasis sig\Hmap.mdb;Persist Security Info=False;")

?

SQLEXEC(ncon,"select * from Hierarchy","micursor")

SQLEXEC

(ncon,"update Hierarchy set ExtCode=444 where LvlId='PEH001000000000000000'")

SQLEXEC

(ncon,"update Hierarchy set ExtCode=555 where LvlId='PEH001001000000000000'")
Espero que este post sirva para futuras consultas, como sabemos a veces no hay razon para que algo no funcione, asi que hay que hacerlo de otra forma y ahi si resulta, como ahora. Nuevamente muchas GRACIAS!, despues de mucho regrese a programar en VFP asi que ahora estare participando en lo que pueda aportar en el foro.
 
Saludos
 
Giovani

Luis Mata

unread,
Nov 3, 2010, 4:55:03 PM11/3/10
to publice...@googlegroups.com
Felicidades, acabas de dar un gran paso.

IVAN MARTINEZ

unread,
Nov 3, 2010, 6:24:28 PM11/3/10
to publice...@googlegroups.com
Si es una vista remota creo que la puedes acceder con:
 
use xxxxx
 
locate for clave=xxxxx
 
replace campo with valor2
 
chequea sia si si te hace la actualizacion
 
ivan martinez von halle


De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Giovani Bonifaz
Enviado el: Miércoles, 03 de Noviembre de 2010 03:34 p.m.
Para: publice...@googlegroups.com
Asunto: Re: [vfp] Re: Actualizacion de vista remota mdb

IVAN MARTINEZ

unread,
Nov 3, 2010, 6:29:00 PM11/3/10
to publice...@googlegroups.com
Seria bueno añadir que todo el alboroto fue solucionado  con la ayuda de:
 Miguel Antúnez <mant...@gmail.com> escribió:
me parece que aqui esta el error, los tipo char tiene  que ir en ''
SQLEXEC
(ncon,"update Hierarchy set ExtCode=987 where LvlId=PEH001000000000000000")
asi:
SQLEXEC(ncon,"update Hierarchy set ExtCode=987 where LvlId='PEH001000000000000000'")
 
 
 


De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Giovani Bonifaz
Enviado el: Miércoles, 03 de Noviembre de 2010 04:04 p.m.
Para: publice...@googlegroups.com
Asunto: Re: [vfp] Re: Actualizacion de vista remota mdb

Reply all
Reply to author
Forward
0 new messages