Instrucción Similar a SQLEXEC de VFP - Off Topic

Post Reply
LuchoMontero
Posts: 13
Joined: Mon Jul 16, 2012 10:31 am
Location: Lima, Perú
Contact:

Instrucción Similar a SQLEXEC de VFP - Off Topic

Post by LuchoMontero »

Estimados:
Para comentarles, que se me presentó un desarrollo de Interfaz de exportar datos de BD Progress hacía PostgreSql, el asunto es tenía que juntar información contenida en varias tablas y exportar a las de PostgreSql pero resumidas, para lo cual hice mano de Visual Foxpro 9 ... y bueno la programación es muy similar a FW y Harbour/xHarbour.
En VFP existe esta función: SQLEXEC es muy potentísima pues permite mediante SQL atacar cualquier BD y devuelve cursores que pueden manejarse como Cursores propiamente dichos y también como tablas DBF a las cuales incluso se pueden crear índices, hacer búsquedas, append, reclock, etc.
Aquí pongo una porción del código empleado para ver si con FW se puede hacer o tratar de encontrar algo similar.
- En cuanto a TEXT TO ... he probado con FW y funciona correctamente y está muy bueno pues evita la fatiga de estar concatenando la cadena de la consulta.
- En el código mostrado, la instrucción: SQLEXEC(nBdFe,cQry,"oRstmpdet") hace la consulta a la BD contenida en la variable cQry y el resultado es un Recordset (el nombre puede ser distinto al mostrado).
- El Recordset devuelto - en este caso se llama "oRstmpdet"- se puede manipular como si fuera una tabla DBF.
- En este caso el Recordset existe mientras la conexión está activa, y se elimina automáticamente cuando se cierra la conexión

Ejemplo 1:

Code: Select all

      cQry := " "
      TEXT TO cQry NOSHOW TEXTMERGE PRETEXT 1+2+4+8
          SELECT fedetalle.tipodoc, fedetalle.tipoletra, fedetalle.seriedoc, fedetalle.numerodoc, fedetalle.nroitem
          FROM fedetalle
          WHERE fedetalle.tipodoc = '<<ALLTRIM(cTipodoc)>>' AND
        fedetalle.tipoletra = '<<cTipoletra>>' AND
        fedetalle.seriedoc = <<cSeriedoc>> AND
                fedetalle.numerodoc= <<nNnumerodoc>> AND
                fedetalle.nroitem = <<nNroitem>>
      ENDTEXT
      SQLEXEC(nBdFe,cQry,"oRsCab")
      GO TOP
      DO WHILE NOT EOF()
             ....
             ....
 

Acá otro ejemplo de SQLEXEC en donde se puede copiar el Recordset a una tabla DBF é incluso la crea en una carpeta del Disco duro.

Ejemplo 2:

Code: Select all

      cQry := " "
      TEXT TO cQry NOSHOW TEXTMERGE PRETEXT 1+2+4+8
          SELECT fedetalle.tipodoc, fedetalle.tipoletra, fedetalle.seriedoc, fedetalle.numerodoc, fedetalle.nroitem
          FROM fedetalle
          WHERE fedetalle.tipodoc = '<<ALLTRIM(cTipodoc)>>' AND
        fedetalle.tipoletra = '<<cTipoletra>>' AND
        fedetalle.seriedoc = <<cSeriedoc>> AND
                fedetalle.numerodoc= <<nNnumerodoc>> AND
                fedetalle.nroitem = <<nNroitem>>
      ENDTEXT
      cmdcab = SQLEXEC(nBdFe,cQry,"oRsCab")
      COPY TO .\DATA\cabecera.dbf
      SELECT 1
      USE cabecera SHARED ALIAS cabecera
      INDEX ON tipodoc+tipoletra+seriedoc+numerodoc TO .\DATA\cabecera
      GO TOP
      DO WHILE NOT EOF()
             ....
             ....
 
¿Existe alguna función de FW similar a SQLEXEC ?.

Saludos.
Atte.
Lucho Montero.
Lima - Perú.
---------------------------------------------------------------------------------------------
FW + xHarbour 1.2.3 + ADO + Borland C 5.8.2
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Instrucción Similar a SQLEXEC de VFP - Off Topic

Post by Armando »

Lucho:

Todo Lo que mencionas lo puedes hacer con ADO + FW, nada extra.

ADO son 7 comandos SQL, FW?, pues ya lo conoces.

Date un vuelta por el siguiente LINK

http://www.recursosvisualbasic.com.ar/h ... es/ado.htm

O busca ADO en San Google y veras que hay mucha literatura.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply