FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error sql server
Posts: 0
Joined: unknown

Error sql server

Posted: Fri Nov 20, 2020 08:43 PM

Hola, buenas tardes, alguien me puede explicar porque la forma de cargar una foto A lo hace perfecto y la B me error

A: oRS1Cli:ADDNEW()
oRs1Cli:Fields( "foto" ):Value := STRTOHEX( MEMOREAD( "foto.jpg"))

B: jj := STRTOHEX( MEMOREAD( "foto.jpg" ))
sqldetl = "INSERT INTO vehiculos_fotos ([Codigo],[foto]) VALUES ('" + xCodigo+ "', '" + jj + "')"
TRY
oCon:Execute( sqldetl )
oCon:Close() ; CATCH oErr
? sqldetl
Alert( "No puedo generar el presupuesto que supera lo 15 art. ", { " Seguir " }, "Atención" )
END TRY

El error que da: No se permite la conversión implícita del tipo de datos varchar(max) a varbinary(max). Utilice la función CONVERT para ejecutar esta consulta.

Saludos
Jorge.

Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM

Re: Error sql server

Posted: Fri Nov 20, 2020 09:41 PM
Jorge

Make sure your Sql Field value in your table is VarBinary(max) There is an easier way of coding inserting pictures, files .. into a Sql VarBinary(max) field .. however this code works for me ..

Code (fw): Select all Collapse
// open file //
nHANDLE := FOpen( cFILE )
IF FERROR() <> 0
   SAYING := "Error reading file "+cFILE+CHR(10)
   SAYING += " "+STR(FERROR())+CHR(10)
   MsgInfo( SAYING )
   oDLG:END()
   RETURN(.F.)
ENDIF

// get number of bytes in file
nBYTES := FSEEK( nHANDLE, 0,2 )

// pad the buffer nBytes+1
cBUFFER := SPACE(nBYTES+1)

FSeek( nHANDLE, 0, 0 )
nBytesRead   := FRead( nHANDLE, @cBuffer, nBytes )

FClose( nHANDLE )

if nBytesRead != nBytes
   SAYING := "nBytesRead = "+str(nBYTESREAD)+CHR(10)
   SAYING += "nBytes     = "+str(nBYTES)+CHR(10)
   SAYING += "Error Reading Data"+chr(10)
   MsgInfo( saying )
   oDLG:END()
   RETURN ( .F. )
endif

cEID := _GenEid()
IF cEID = "BOGUS"
   oDlg:End()
   RETURN(.F.)
ENDIF

nDateTime := dtoc(date())//+" "+time()

oRsCh:AddNew()

oRsCh:Fields("doceid"):Value        := cEID
oRsCH:Fields("TFormEid"):Value      := cPROJECTEID
oRsCh:Fields("DImport"):Value       := nDateTime
oRsCh:Fields("importby"):Value      := xLOGIN
oRsCh:Fields("datalen"):Value       := nBYTES
oRsCh:Fields("filename"):Value      := cFILENAME
oRsCh:Fields("notes"):AppendChunk( VTArrayWrapper():New( 17, cBUFFER ) )    // ----------- inserts into "Notes" field which is a VarBinary(Max) 

oRsCh:Update()


Rao has a much simpler code to insert a document into a Sql Database .. the above always works for me .

Rick Lipkin
Posts: 0
Joined: unknown

Re: Error sql server

Posted: Fri Nov 20, 2020 10:21 PM

Hola, gracias por responder, si a mí insertar un registro en un recordset me funciona bien, pero si quiero hacerlo por sentencia sql es donde me da el error.

Lo que quiero hacer es cargar las fotos en una tabla sin tener el recordset.

Saludos
Jorge

Continue the discussion