La Web del Programador: Comunidad de Programadores
 
    Pregunta:  52439 - CONSULTA SQL DESDE VISUAL BASIC PARA TABLA EN VISUAL FOXPRO
Autor:  Oscar William Valderrama Díaz
Hola, tengo un problema al realizar una consulta SQL desde Visual Basic para actualizar una tabla en Visual FoxPro, ya he realizado la conexión hacia la tabla de fox. Yo solo quiero actualizar el campo 'DOCUMENTO' de la tabla VentaDia donde 'ID_CONTADO' sea igual a, p. eje, 4, así: "update VentaDia set DOCUMENTO = 3010000004 where ID_CONTADO = 4".

He hecho casi de todo por resolver el problema, y el error que sale es parecido a esto: "La operación es incorrecta porque necesita de una consulta actualizable (updateble query)" más o menos.

Espero contar con ustedes para poder avanzar con mi trabajo.

Muy agradecido de antemano.

  Respuesta:  Marvin Zepeda
Buenas tardes a todos, yo hago eso que tu expones pero desde la version 6 del visual basic y me fucniona muy bien. A continuacion te detallo el entorno en el que se ejecuta el SQL:

1- En un modulo tengo el siguiente codigo

'variable de conexion
Public Conexion As ADODB.Connection
'recordsets
Public RST As ADODB.Recordset 'recordset general
'cadena SQL
Public SQL As String

'Yo trabajo con tablas y utilizo esta conexion
Public Sub Abrir_Conexion()
Set Conexion = New ADODB.Connection
Conexion.ConnectionString = "DSN=Visual FoxPro Tables;UID=;SourceDB=<aqui las rutas ej: c: ablas>SourceType=DBF;Exclusive=No;BackgroundFetch=Sí;Collate=Machine;"
Conexion.ConnectionTimeout = 0
Conexion.CommandTimeout = 0
Conexion.Open
End Sub

2- en el programa lo uso de la siguiente manera
'se detalla la consulta
SQL = "update tabla1 set cantidad=10, nombre='Marvin' where cantidad=0"
'se hace una instancia del recordset
Set RST = New ADODB.Recordset
'se ejecuta la consulta
RST.Open SQL, Conexion
'como resultado se actualiza en la tabla llamada TABLA1, los campos CANTIDAD y NOMBRE que cumpla con la condicion

Espero te sea e ayuda.

Saludos.

  Respuesta:  Saul Hernandez
hay una instruccion segun tu FOX que estes usando
yo uso el 8.0 y me funciona bien.

SELECT * FROM alumno;
into cursor sha READWRITE