FoxPro/Visual FoxPro - Actualizar Vistas Remotas (No me anda)

 
Vista:

Actualizar Vistas Remotas (No me anda)

Publicado por Nicolas (3 intervenciones) el 02/02/2012 20:53:52
Hola gente, tuve leyendo por internet como actualizar vistas remotas desde vfp con SQL Server 2008 y todas las formas que encontre no logro hacer andar, no me tira error pero no logro lo que quiero.

Lo que hago es crear una base de datos en SQL Server, luego establesco la coneccion por ODBC y en el foxpro lo enlazo. Me conecta todo bien, una vez hecho esto creo una vista remota con la tabla. La pongo en el formulario con Propiedad de BufferModeOverride en 3 o 5. Despues busco un registro x o agrego un registro y le ejecuto el comando =TABLEUPDATE(.T., .T., 'vista2') y no me refresca en el SQL Server. Alguien me podria decir que cosa estoy haciendo mal.

Desde ya muchas gracias.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Actualizar Vistas Remotas (No me anda)

Publicado por Saul (728 intervenciones) el 02/02/2012 21:54:52
Bueno yo trabajo con Mysql el VF pero no lo hago con vistas remotas porque es un solo rollo

yo lo trabajo asi..

** HAGO LA CONECION
lcStringCnxLocal = "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"SERVER="+SERVERMYSQL+";" + ;
"UID="+USUARIO+";" + ;
"PWD="+CLAVE+";" + ;
"DATABASE="+BD+";" + ;
"OPTIONS='';"

SQLSETPROP(0,"DispLogin" , 3 )

CnxIfh = SQLSTRINGCONNECT(lcStringCnxLocal)


** ESTE ESCRIPT ES COMO SI ESTUBIERAS TRABAJANDO EN SQL
** Lo guardo en una variable de texto lcSQLcommand luego lo ejecuto..


&& Scrip para Reporte para consulta

TEXT TO lcSQLcommand NOSHOW
SELECT *
FROM inscripcionanimales i
WHERE sexo_anm = 'MACHO'
ENDTEXT

cmd = SQLEXEC(CnxIfh,lcSQLcommand,"Cur_Report")


** esto lo pongo enmi rutina grabar

lcSQLcommand = ""

IF thisform.nmodieli = 1 &&Nuevo
TEXT TO lcSQLcommand NOSHOW
INSERT INTO Asociacion (codigo_asc,
nombre_asc,
prefijo_asc,
direccion_asc,
Telfono_asc,
contacto_asc,
correo_asc,
empresa_asc)
VALUES (?m.codigo_asc,
?m.nombre_asc,
?m.prefijo_asc,
?m.direccion_asc,
?m.telfono_asc,
?m.contacto_asc,
?m.correo_asc,
?xcodigoempresa) /*Codigo Publico de Empresa*/
ENDTEXT
ELSE
TEXT TO lcSQLcommand NOSHOW
UPDATE Asociacion SET codigo_asc = ?m.codigo_asc,
nombre_asc = ?m.nombre_asc,
direccion_asc = ?m.direccion_asc,
telfono_asc = ?m.telfono_asc,
contacto_asc = ?m.contacto_asc,
correo_asc = ?m.correo_asc
WHERE codigo_asc = ?m.codigo_asc
AND empresa_asc = ?m.empresa_asc
ENDTEXT
ENDIF

IF !EMPTY(lcSQLcommand)
cmd = SQLEXEC(CnxIfh,lcSQLcommand)
IF cmd > 0 && Intenta confirmar los cambios
WAIT WINDOW AT SROWS() / 2,(SCOLS() / 2) - 5 TIMEOUT 1 'Guardando en Base de Datos!!!'
ELSE
IF AERROR(laError)> 0
Messagebox("No guardo ningún dato se ha producido un Error: "+laError[2])
ENDIF
ENDIF
ENDIF


ESPERO ESTO TE SIRVE PERO LA LOGICA DE SQL ES LA MISPA aunque en MySQl a veces cambian cosas pero no es mucho ok..

Saludos

Saul Hernandz - Guatemala
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar Vistas Remotas (No me anda)

Publicado por Nicolas (3 intervenciones) el 02/02/2012 22:53:05
Si de esa forma lo hago andar, pero como tengo proyectos con VFP y .Dbf quiero ahorrarme tiempo en escribir todo el codigo de vuelta. Es por eso que quiero usar las vistas. Gracias por tu ayuda de todas forma.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar Vistas Remotas (No me anda)

Publicado por Saul (728 intervenciones) el 06/02/2012 21:38:18
Verifica este link

http://www.portalfox.com/index.php?name=News&file=article&sid=2749
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar Vistas Remotas (No me anda)

Publicado por Raymundo (1 intervención) el 24/02/2012 06:53:07
te recomiendo que utilices el comando requery(), yo tenia el mismo problema y lo ejecuto despues de actualizar tabals y me funciono, acctualiza inmediatamente la vista remota. te mando el codigo

sqlinst1 = "update fsp_mpio set nom_mpio = ?m_nombr, abrevia = ?m_abrev, direccion = ?m_direc,"
sqlinst2 = " no_ext = ?m_noext, no_int = ?m_noint, colonia = ?m_colon, ciudad = ?m_ciuda,"
sqlinst3 = " edo = ?m_estad, cod_pos = ?m_codpo, pais = ?m_pais"
sqlinst4 = " where ?m_clave = clave_mpio"
sqlinstt = sqlinst1 + sqlinst2 + sqlinst3 + sqlinst4
m_codigo = SQLEXEC(mydatabseexa,sqlInstt)
IF m_codigo <> 1 then
= MESSAGEBOX("Error: no se pudo actualizar la información, favor de verificar",16,"Aviso del sistema")
ELSE
= MESSAGEBOX('Actualización realizada satisfactoriamente', 48, 'SQL Connect Message')
ENDIF


REQUERY() */ actualiza inmediatamente mis datos en la vista a como estan en las tablas sql server
SQLDISCONNECT(MyDataBseexa)

espero te sirva

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar