Error sql server

Post Reply
jpcavagnaro
Posts: 35
Joined: Tue Oct 11, 2016 1:02 pm

Error sql server

Post by jpcavagnaro »

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.
User avatar
Rick Lipkin
Posts: 2397
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: Error sql server

Post by Rick Lipkin »

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: Select all

// 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
jpcavagnaro
Posts: 35
Joined: Tue Oct 11, 2016 1:02 pm

Re: Error sql server

Post by jpcavagnaro »

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
Post Reply