Error sql server

Error sql server

Postby jpcavagnaro » Fri Nov 20, 2020 8: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.
Jorge
Saludos.
jpcavagnaro
 
Posts: 155
Joined: Tue Oct 11, 2016 1:02 pm
Location: Luján, bs. as.

Re: Error sql server

Postby Rick Lipkin » Fri Nov 20, 2020 9: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: Select all  Expand view  RUN

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

Re: Error sql server

Postby jpcavagnaro » 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
Jorge
Saludos.
jpcavagnaro
 
Posts: 155
Joined: Tue Oct 11, 2016 1:02 pm
Location: Luján, bs. as.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 78 guests