Grabar, recupera y mostrar imagen jpg en blob de mysql

User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by AIDA »

Despues de mil intentos no logre sacar y descodificar un PDF :cry:


a si lo tengo alguna idea para que ya funcione :idea:

Code: Select all

FUNCTION sacarpdf(cFichero,poliza)

Local oDlg,cFicheroo,oActiveX,nSeek,XoQry,nHandle ,cfile

 xoQry:= TDolphinQry():New( "SELECT * FROM  pdf order by archivos" )

if  xoQry:Seek( cFichero,alltrim("archivos") )== 0



else


cfile:=HB_Base64Decode( XoQry:documento )

 nHandle := FCreate( "c:\temppdf" + "\" + cfile  )

 FWrite( nHandle, XoQry:documento , Len( XoQry:documento ) )

 FWrite( nHandle, "exit" +CRLF )

 FCLOSE ( nHandle )

endif

VerPDFF(cFichero,oQry)

 Return
//-------------------------------------------------------------------------------------// 

FUNCTION VerPDFF(cFichero,oQry)
*********************************   
Local oDlg,cFicheroo,oActiveX



cFichero:="C:\TEMPPDF\"+alltrim(cFichero)


Rename ( cFichero ) to ("C:\TEMPPDF\"+"POLIZA.PDF")

DEFINE DIALOG oDlg RESOURCE "DIALOGPDF" TITLE "POLIZA EN FORMATO PDF---> "+" "+oQry:poliza
oDlg:lHelpIcon:=.F.

REDEFINE ACTIVEX oActiveX ID 800 OF oDlg PROGID "AcroPDF.PDF.1"

ACTIVATE DIALOG oDlg  CENTERED ;
ON INIT (oActiveX:Do( "LoadFile", "C:\TEMPPDF\"+"POLIZA.PDF" ),oActiveX:Do( "SetCurrentPage", 1 )  ) //NOMODAL


 FERASE("C:\TEMPPDF\"+"POLIZA.PDF")

RETURN NIL


Saluditos :wink:
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by cnavarro »

No estoy muy al dia de este tema pero,
cfile:=HB_Base64Decode( XoQry:documento )


nHandle := FCreate( "c:\temppdf" + "\" + cfile )

FWrite( nHandle, XoQry:documento , Len( XoQry:documento ) )
Tal y como lo tienes
cfile sería la cadena a grabar en el fichero, no el nombre del fichero, no?
FWrite( nHandle, cfile , Len( cfile ) )

o

FWrite( nHandle, HB_Base64Decode(XoQry:documento) , Len( HB_Base64Decode(XoQry:documento) ) )
Espero te ayude en algo
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by carlos vargas »

por que no usas la funcion StrFile, esta es parte de las CT de harbour.

Code: Select all

FUNCTION SacarPDF( cFichero )
    LOCAL oQry
    LOCAL cQry
    LOCAL cFile    := ""
    LOCAL lCreated := FALSE
    
    IF empty( cFichero )
        cQry := StrFormat( "SELECT archivos, documentos FROM  pdf WHERE archivos='%1'", cFichero )  
        oQry := TDolphinQry():New( cQry )
    
        IF oQry:RecCount() > 0
            cFile := alltrim( oQry:archivos )
            IF StrFile( "c:\temppdf\" + cFile, HB_Base64Decode( oQry:documento ) ) > 0
                lCreated := TRUE
            ENDIF               
        ENDIF
        oQry:end()
        IF lCreated
            VerPDFF( cFile )        
        ENDIF
    ENDIF
    
RETURN
salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by carlos vargas »

Dejo un ejemplo funciona, adjunto la base de datos y el programa.
la idea es que para estos menesteres es necesario dos tablas al menos, la tabla que contiene la lista de los archivos, y la tabla que contiene los binarios de los archivos,
esto es para evitar que en un query se recupere mas de un solo archivo a la vez,
el hacer un SELECT * FROM TABLA_PDF es muy ineficiente, ya que se traeria a memoria todo los archivos de la tabla, la cual dependido de sus tamaños es probable que te lleves la ram de la pc, en este ejemplo, son necesaria dos tablas con un campo en común "archivo_numero", así que cuando necesito un archivo en particular los traigo en un segundo query usado ese numero.
espero me comprendan.

en el ejemplo, estan dos funciones PDF2MYSQL y MYSQL2PDF, en la primera ejecucion del programa debera esta comentada MYSQL2PDF, en la segunda ejecucion debera estar comentada PDF2MYSQL.

la base de datos
-- --------------------------------------------------------
-- Host:
-- Versión del servidor: 5.1.69-0ubuntu0.10.04.1 - (Ubuntu)
-- SO del servidor: debian-linux-gnu
-- HeidiSQL Versión: 8.3.0.4726
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

-- Volcando estructura de base de datos para test
CREATE DATABASE IF NOT EXISTS `test` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `test`;


-- Volcando estructura para tabla test.tabla_archivo
CREATE TABLE IF NOT EXISTS `tabla_archivo` (
`archivo_numero` int(6) unsigned NOT NULL,
`archivo_nombre` char(150) NOT NULL,
KEY `archivo_numero` (`archivo_numero`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- La exportación de datos fue deseleccionada.


-- Volcando estructura para tabla test.tabla_pdf
CREATE TABLE IF NOT EXISTS `tabla_pdf` (
`archivo_numero` int(6) unsigned NOT NULL,
`archivo_contenido` mediumtext,
KEY `archivo_numero` (`archivo_numero`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- La exportación de datos fue deseleccionada.
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
el programa

Code: Select all

#include "Directry.ch"
#ifndef __XAHRBOUR__
#include "hbcompat.ch"

#endif
#include "tdolphin.ch"
#include "fivewin.ch"
 
#define TRUE  .t.
#define FALSE .f.

#define D_CLIENT_COMPRESS         32

REQUEST DBFCDX, DBFFPT
REQUEST HB_LANG_ESWIN, HB_CODEPAGE_ESWIN

procedure Main()
   private oErr
   private oServer
   private oQry

   IF !Configuracion()
      RETURN
   ENDIF

   PDF2MYSQL()
   
   //MYSQL2PDF()
   
   oServer:end()
   
return

/*------------------------------------------------------------------*/

function Configuracion()
   
   RddSetDefault( "DBFCDX" )
      
   HB_LangSelect(  "ESWIN" )
   HB_SetCodePage( "ESWIN" )

   SET DEFAULTCLPVALUE ON
   SET LOGICALVALUE    ON
   SET CASESENSITIVE   ON
   SET PADRIGHT        ON
   
return Conectar()

/*------------------------------------------------------------------*/

function Conectar()
   local lOk := FALSE
   LOCAL cSrv_Host  := "192.168.10.10"
   LOCAL cSrv_User  := "carlos"
   LOCAL cSrv_Pass  := "diana1"
   LOCAL cSrv_Port  := "3306"
   LOCAL cSrv_Data  := "test"
   
   TRY
      
      oServer := TDolphinSrv():New( cSrv_Host, cSrv_User, cSrv_Pass, Val( cSrv_Port ), D_CLIENT_COMPRESS, cSrv_Data )
      
      oServer:Execute( "SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" )
      oServer:Execute( "SET SESSION LOW_PRIORITY_UPDATES=0" )
      oServer:Execute( "SET SESSION SQL_BIG_SELECTS=1" )
      oServer:Execute( "SET SESSION sql_mode='STRICT_ALL_TABLES'" )
      oServer:Execute( "SET SESSION big_tables=0" )
      oServer:Execute( "SET SESSION query_cache_type=ON" )
      oServer:Execute( "SET SESSION collation_database='latin1_spanish_ci'" )
      oServer:Execute( "SET @DTRIGGERS=NULL" )
      oServer:Execute( "SET SESSION storage_engine=InnoDB" )

      lOk := TRUE

   CATCH oErr
      MsgAlert( oErr:Description, "No se conecto al servidor" )
   END

   D_SetCaseSensitive( TRUE )

   Set_MyLang( "es_ES" )
   
return lOk

/*------------------------------------------------------------------*/

function PDF2MYSQL()
   local lOk       := FALSE
   local cDir      := "d:\xhb\doc\sqlrdd"
   local aFilesPdf := Directory( cDir + "\" + "*.pdf" )
   local aFile, cFile, xCont, nFile

   if len( aFilesPdf ) > 0      
      nFile := 0
      try
         for each aFile in aFilesPdf
            nFile := nFile + 1           
            cFile := cDir + "\" + aFile[ F_NAME ]
            xCont := FileStr( cFile )
            ?nFile, cFile, len(xCont)
            if !empty( xCont )
               oServer:Insert( "tabla_archivo", ;
                               { "archivo_numero"  , "archivo_nombre"   }, ;
                               { nFile,              cFileName( cFile ) }  )   
               
               oServer:Insert( "tabla_pdf", ;
                               { "archivo_numero"  , "archivo_contenido"                    }, ;
                               { nFile             , HB_Base64Encode( xCont, len( xCont ) ) }  )   
               SysRefresh()
            endif
         next
         lOk := TRUE
      catch oErr
         lOk := FALSE
         MsgStop( oErr:description )
      end
      if lOk 
         MsgInfo( "Archivos respaldados en el servidor." )
      endif
   else
      MsgAlert( "No hay archivos pdf en el directorio indicado" )
   endif
   
return lOk

/*------------------------------------------------------------------*/

function MYSQL2PDF()
   local lOk       := FALSE
   local nFile, cFile, xCont
   local oQry2, cQry2
   local cPath := "d:\misapp"
   
   oQry := oServer:Query( "select archivo_numero, archivo_nombre from tabla_archivo" )
   
   oQry:GoTop()
   
   do while !oQry:eof()
      nFile := oQry:archivo_numero
      cFile := alltrim( oQry:archivo_nombre )     
      cQry2 := "select archivo_contenido from tabla_pdf where archivo_numero=%1 limit 1"
      cQry2 := StrFormat( cQry2, alltrim( str( nFile ) ) )
      try      
         oQry2 := oServer:Query( cQry2 )
         if oQry2:RecCount() > 0
            if !empty( oQry2:archivo_contenido )
               xCont := HB_Base64Decode( oQry2:archivo_contenido )
               if !empty( xCont )
                  if StrFile( xCont, cPath + "\" + cFile ) > 0
                     ?"Archivo creado:", cFile      
                  endif
               endif
            endif
         endif
         oQry2:end()
         
         lOk := TRUE
      catch oErr
         lOk := FALSE
         MsgStop( oErr:description )         
      end            
      oQry:Skip()      
   enddo
   
   oQry:end()
   
return lOk

/*------------------------------------------------------------------*/
//EOF
/*------------------------------------------------------------------*/
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by AIDA »

Hola en que libreria en xharbour esta StrFormat()


Saluditos :wink:
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by carlos vargas »

libmisc.lib
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by Daniel Garcia-Gil »

Aida

adicionalmente al ejemplo que te dejo carlos, te anexo este ejemplo, hay varios detalles que debes tener en consideracion

1.-
AIDA wrote:xoQry:= TDolphinQry():New( "SELECT * FROM  pdf order by archivos" )
debes tener cuidado con ese tipo de consulta, porque si tienes muchos archivos grabados sera mas lento pues te estarias trayendo toda la informacion, por eso es mejor hacer la consulta al registro en especifico que deseas traerte (mira los ejemplos que te han puesto)

estilo basico
oQry = oServer:Query("SELECT file FROM files WHERE filename='fwintro.pdf'")

estilo avanzado usando dolphin

Code: Select all

1. oQry = oServer:Query("SELECT file FROM files WHERE filename='&filename'", {"filename"=>"fwintro.pdf"})
2. oQry = oServer:Query("SELECT file FROM files WHERE filename='&1'", {"fwintro.pdf"})
estilo avanzado usando herramientas externas

Code: Select all

cQry2 := "select archivo_contenido from tabla_pdf where archivo_numero=%1 limit 1"
cQry2 := StrFormat( cQry2, alltrim( str( nFile ) ) )
2. Particularmente uso la funcion D_ReadFile proporcionada por TDolphin creada en C, se encarga directamente de insertar _ de escape (que mysql "entiende" ) a los datos leidos (en caso de necesitar lo escapes, de lo contrario no lo hara y tendras el mismo tamaño del archivo), leer el archivo y despues codificarlo puede resultar un archivo, aparte de resultar de mayor tamaño resulta un proceso mas lento incluso al momento de leerlo desde la tabla porque despues debes decodificarlo para poder mostarlo

Code: Select all

#include "fivewin.ch"
#include "tdolphin.ch"

FUNCTION Main() 

   LOCAL oWnd 
   LOCAL oMenu
   LOCAL oServer
   
   MENU oMenu 2007
      MENUITEM "Files"
         MENU
            MENUITEM "Save Pdf" ACTION SavePdf( oServer )
            MENUITEM "Show Pdf" ACTION ShowPdf( oServer )
         ENDMENU             
   ENDMENU

      
   D_SetCaseSensitive( .T. )
   
   IF ( oServer := ConnectTo() ) == NIL
      RETURN NIL
   ENDIF
   
   DEFINE WINDOW oWnd TITLE "Testing Dolphin - Fivewin" MENU oMenu
   
   ACTIVATE WINDOW oWnd 
   
   oServer:End()
   
RETURN NIL

FUNCTION ConnectTo()
    local oServer
    
  CONNECT oServer HOST "dolphintest.sitasoft.net" ;
                  USER "test_dolphin" ;
                  PASSWORD "1122334455";
                  PORT 3306;
                  FLAGS 0;
                  NAME "CONNECT1";
                  DATABASE "dolphin_man"

RETURN oServer


FUNCTION SavePdf( oServer )
    
    local uData
    local oQry
    
    oQry = oServer:Query("SELECT filename FROM files WHERE filename='fwintro.pdf'")
    
    IF oQry:RecCount() > 0
        oQry:Delete()
    ENDIF
    
    oQry:End()
    
    uData = D_ReadFile( "fwintro.pdf" )
    
    IF oServer:Insert( "files", {"filename", "file"}, { "fwintro.pdf", uData } )
        MsgInfo( "Save successfull")
    ELSE
        MsgInfo( "Not saved" )
    ENDIF
    
RETURN NIL

FUNCTION ShowPdf( oServer )
    
    local oQry, nHandle
    local oDlg, oActiveX
    local cTemp := hb_CurDrive() + ":\" + CurDir() + "\tempdf.pdf"
    
    oQry = oServer:Query("SELECT file FROM files WHERE filename='fwintro.pdf'")
    
    IF oQry:RecCount() > 0
        FErase( cTemp )
        
        nHandle := FCreate( cTemp )
        
        IF FError() # 0       
        MsgInfo( "Error creating file"  )
        ELSE
            
        FWrite( nHandle, oQry:file, Len( oQry:file ) )
        FClose( nHandle )

        oQry:End()

            DEFINE WINDOW oDlg TITLE "READ PDF FILE FROM MYSQL TABLE USING TDOLPHIN"

                @ 0,0 ACTIVEX oActiveX OF oDlg PROGID "AcroPDF.PDF.1"
                oDlg:oClient = oActiveX
                oActiveX:src = cTemp
                oActiveX:GotoFirstPage()
                
            ACTIVATE WINDOW oDlg

      ENDIF
    ELSE
        MsgInfo( "File not found!" )
    ENDIF
    
RETURN NIL
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by Daniel Garcia-Gil »

se me olvido colocar el link de descarga del ejemplo

http://sitasoft.net/fivewin/samples/testpdf.zip
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by carlos vargas »

daniel, interesante la función, la revisare.

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by AIDA »

Carlos y Daniel Muchas Gracias por su ayuda
me pondré a leer sus ejemplos para aplicarlos :D


Image


Que lindos son :mrgreen:

Saluditos :wink:
User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by AIDA »

Daniel

Me quede con una duda ya tengo 20000 pdf en la tabla estan codificados , por que ponerlos sin codificar se me tronaba el programa
en tu ejemplo esta sin codificar, se podria meter 20000 pdf sin codificar :?:


Gracias por tu tiempo :oops:


Saluditos :wink:
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by carlos vargas »

Te sugiero aida, que hagas la prueba codificado por ejemplo con StrToHex y HexToStr, luego cuando ya este listo, y te funciones, pruebes sin codificar, _ serán mínimos, y asi esta segura que la cosa funciona de una manera, yo en mis prueba hace un tiempo si no lo ponía en hexadecimal no me funcionaba bien, pero puede que halla cambiado la cosa.

es evidente que al realizar la conversión se pierde tiempo, pero era necesario, algunos programadores antes usaban funciones tales como memoread y memowrite para leer y escribir archivos, pero surgieron problemas cuando los datos a leer eran binarios, de ha la costumbre de convertirlo a hexadecimal.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by Daniel Garcia-Gil »

AIDA wrote:Daniel

Me quede con una duda ya tengo 20000 pdf en la tabla estan codificados , por que ponerlos sin codificar se me tronaba el programa
en tu ejemplo esta sin codificar, se podria meter 20000 pdf sin codificar :?:


Gracias por tu tiempo :oops:


Saluditos :wink:
Aida puedes dejalor como estan... solo decodificalos, guarda el temporal y abrelo como esta en el ejemplo que te puse a ver si te funciona... si bien es cierto la decodificacion actualmente no deveria ser de gran importancia para los equipos actuales, si los archivos no son muy grandes tampoco se nota la diferencia en la decodificacion.
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by AIDA »

Hola

Les comento que ya enpeso a funcionar bien mi programita logre poner 20,000 archivos PDF sin codificar gracias a la recomendación de Carlos :D
sobre meterlos con un tiempo controlado a si que lo deje en 1

mod( oQry:Recno(), 1 )==0 //aca modificar el 10 segun tamaño de archivos, la idea es que cada 2 segundos se realize el sysrefresh
SysRefresh()


y gracias a los consejos de Daniel sobre como debía abrir las tablas :D

a un tengo que mejorarlo ya que buscar un registro en esos 20,000 si esta lentito usando un oQry:seek(irNueva1,"poliza") = 0 no se si se pueda mejorar la búsqueda

Les agradezco por toda su ayuda :mrgreen:


Saluditos :wink:
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Grabar, recupera y mostrar imagen jpg en blob de mysql

Post by Daniel Garcia-Gil »

AIDA wrote:a un tengo que mejorarlo ya que buscar un registro en esos 20,000 si esta lentito usando un oQry:seek(irNueva1,"poliza") = 0 no se si se pueda mejorar la búsqueda
la idea de recomendarte la forma como debes hacer el SELECT es para evitar que uses el "seek"
Daniel Garcia-Gil wrote:Aida

estilo basico
oQry = oServer:Query("SELECT file FROM files WHERE filename='fwintro.pdf'")

estilo avanzado usando dolphin

Code: Select all

1. oQry = oServer:Query("SELECT file FROM files WHERE filename='&filename'", {"filename"=>"fwintro.pdf"})
2. oQry = oServer:Query("SELECT file FROM files WHERE filename='&1'", {"fwintro.pdf"})
estilo avanzado usando herramientas externas

Code: Select all

cQry2 := "select archivo_contenido from tabla_pdf where archivo_numero=%1 limit 1"
cQry2 := StrFormat( cQry2, alltrim( str( nFile ) ) )
tu consulta quedaria algo asi...

forma basica

Code: Select all

xoQry:= oServer:Query( "SELECT * FROM  pdf WHERE  archivos='" + cFichero + "'" )
forma avanzada1

Code: Select all

xoQry:= oServer:Query( "SELECT * FROM  pdf WHERE  archivos='&fichero'", {fichero => cFichero} )
forma avanzada2

Code: Select all

xoQry:= oServer:Query( "SELECT * FROM  pdf WHERE  archivos='&1'", {cFichero} )
forma avanzada3

Code: Select all

cQry2 := "SELECT * FROM  pdf WHERE  archivos='%1'"
cQry2 := StrFormat( cQry2, cFichero )
oQry2 := oServer:Query( cQry2 )
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Post Reply