FoxPro/Visual FoxPro - INSER INTO de VFP a ACCESS

 
Vista:

INSER INTO de VFP a ACCESS

Publicado por Juan Carlos Lopez Lopez (128 intervenciones) el 30/09/2011 21:00:05
Sres buenas tardes alguien me puede ayudar con este codigo, no me hace el insert, que estare haciendo mal.


*Insertando registros en Access desde VFP
*Este es un ejemplo básico de como interactuar con una base de datos de Access desde VFP.
cStrConn = "DRIVER={Microsoft Access Driver (*.mdb)};" +;
"Dbq=c:\Sigtra\Tareos\bd\Tareos.mdb;" +;
"Uid=usuario;" +;
"Pwd=password;"
lnAccess = SQLSTRINGCONNECT(cStrConn)

If lnAccess > 0
* =MessageBox("Yupi !!!!!!!!!!!!")
vv_cod_obra='239'
vv_cod_planilla='OBCTL'
vv_cod_periodo_planilla='201140'

mi_insert = "INSERT INTO TAREO_TM (cod_obra,cod_periodo_planilla) VALUES " + "(" + vv_cod_obra + "," + vv_cod_periodo_planilla + ")"


SQLEXEC(lnAccess,mi_insert)

= VerMisDatos()
Else
=MessageBox("No fue posible conectarse a la Base de Datos")
EndIf
* Cerramos la conección
SQLDISCONNECT(lnAccess)


FUNCTION VerMisDatos
*-* Si queremos ver la información de una tabla de Access
lcSQL = "SELECT * FROM TAREO_TM WHERE COD_PERIODO_PLANILLA='201140' ORDER BY COD_PERSONA" && Tabla debe ser una tabla de la base de Access
lcCursor = "VerDatos" && Nombramos un cursor donde mostrar los datos
SQLEXEC(lnAccess,lcSQL,lcCursor) && ejecutamos el proceso de traslado de la info
SELECT (lcCursor) && Seleccionamos el cursor
BROWSE NOMODIFY && Vemos la info
RETURN
ENDFUNC


Cualquier ayuda estare agradecido.
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

INSER INTO de VFP a ACCESS

Publicado por xx (378 intervenciones) el 01/10/2011 15:23:37
Bueno a simple vista parece estar todo bien, deberias chequear los tipos de campos de la tabla a la que intentas insertar, un comando util para ver el error devuelto por el motor SQL es:
SQLSETPROP( _HCSQL,"DispWarnings", .T.) al menos en mysql funciona deberia en access, es decir lo colocas antes de lanzar la sentencia SQLEXEC(...)
una forma sencilla de armar tu insert es la siguiente:

_cSQL=[INSERT INTO TAREO_TM (cod_obra,cod_periodo_planilla) VALUES (?vv_cod_obra,?vv_cod_periodo_planilla)]
IF SQLEXEC( _HCSQL, _cSQL )!=1
MESSAGEBOX( [FALLO SQL]+_cSQL, 16, [ERROR] )
RETURN
ENDIF
Ojo: si tienes un campo por ejemplo entero/integer debes convertirlo a caracter es decir
cod_obra=STR(125,3,0) o mejor -> cod_obra=ALLTRIM(STR(125,11,0)) para enteros grandes

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