PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 21 → Guardar ficheros fisicos en base de datos HFSQL
Guardar ficheros fisicos en base de datos HFSQL
Started by Juan, Apr., 16 2017 9:08 AM - 11 replies
//hostimage.webdev.info/avatars/default.gif
Posted on April, 16 2017 - 9:08 AM
Hola y gracias,
Quiero guardar ficheros fisicos Word o excel o rtf directamente en la base de datos HFSQL, como puedo hacerlo si incluyo un selector de ficheros en disco duro y luego lo intento guardar en un campo de la tabla de mi base de datos.
Gracias
//hostimage.webdev.info/avatars/default.gif
Posted on April, 18 2017 - 1:55 PM
Hola Juan

Aqui tienes un link explica entre otras cosas como guardar una imagen .



PD:Esta en portugués pero se entiende.

espero que te sirva.

Saludos
victor
//hostimage.webdev.info/avatars/default.gif
Posted on April, 20 2017 - 11:30 PM
Que tal Juan.

Hay dos formas de guardar ficheros físicos en la BD la primera de ellas haciendo uso de FloadBuffer

Se utiliza de la siguiente forma

bufFile is Buffer = fLoadBuffer("c:\escritorio\archivoejemplo.docx")
TablaBD.CampoTabla = bufFile

Y luego solo haría falta guarda con hadd,el ejemplo completo sería algo como:

Hreset(TablaBD)
bufFile is Buffer = fLoadBuffer("C:\escritorio\archivo.docx")
TablaBD.CampoTabla = bufFile
Hadd(TABLABD)

La otra forma es haciendo uso de Hlinkmemo

Hreset(TablaBD)
HLinkMemo(TABLABD, CampoTabla , ""C:\escritorio\archivo.docx")
HAdd(TABLABD)

Si luego quieres extraer la información sería algo como

HReadSeekFirst(TablaBD, ID, 1)
IF HFound THEN
fSaveBuffer("C:\escritorio\archivo.docx", TablaBD.CampoTabla)
ELSE
Error("HFSQL error: " + HErrorInfo())
END


Espero el comentario sea claro y le sirva de ayuda.

Saludos!
//hostimage.webdev.info/avatars/u6yn77gdR1gObV0nRP3q4w
Registered member
6 messages
Posted on April, 20 2017 - 11:44 PM
Que tal Juan.

Hay dos formas de guardar ficheros físicos en la BD la primera de ellas haciendo uso de FloadBuffer

Se utiliza de la siguiente forma

bufFile is Buffer = fLoadBuffer("c:\escritorio\archivoejemplo.docx")
TablaBD.CampoTabla = bufFile

Y luego solo haría falta guarda con hadd,el ejemplo completo sería algo como:

Hreset(TablaBD)
bufFile is Buffer = fLoadBuffer("C:\escritorio\archivo.docx")
TablaBD.CampoTabla = bufFile
Hadd(TABLABD)

La otra forma es haciendo uso de Hlinkmemo

Hreset(TablaBD)
HLinkMemo(TABLABD, CampoTabla , ""C:\escritorio\archivo.docx")
HAdd(TABLABD)

Si luego quieres extraer la información sería algo como

HReadSeekFirst(TablaBD, ID, 1)
IF HFound THEN
fSaveBuffer("C:\escritorio\archivo.docx", TablaBD.CampoTabla)
ELSE
Error("HFSQL error: " + HErrorInfo())
END


Espero el comentario sea claro y le sirva de ayuda.

Saludos!

--
Christian D.
//hostimage.webdev.info/avatars/default.gif
Posted on April, 21 2017 - 9:08 AM
Muchas gracias a los dos por vuestras respuestas y disculpad el retardo.
Lo probaré ya que quiero usar el poder guardar formato word o rtf con el nuevo control de tratamiento de texto de pcsoft.
Muchas gracias a los dos, Victor y Christian y saludos,
Juan
//hostimage.webdev.info/avatars/default.gif
Posted on April, 21 2017 - 9:18 AM
Hola Christian, disculpa pero tengo otra pregunta referente a mi primera.
Para poder guardar el fichero fisico directamente en HFSQL, que tipo de dato tengo que crear para guardar el fichero fisico, es : sonido, imagen, binario o que tipo de dato(campo) a declarar en la tabla ???
Christian disculpa si no traduzco bien ya que uso la version francesa de WD.

Gracias Christian por tu ayuda y saludos
//hostimage.webdev.info/avatars/u6yn77gdR1gObV0nRP3q4w
Registered member
6 messages
Posted on April, 21 2017 - 6:39 PM
Hola juan.

El tipo de campo que debes crear en la BD es tipo memo.

--
Christian D.
//hostimage.webdev.info/avatars/default.gif
Posted on April, 21 2017 - 7:22 PM
Gracias Christian, disculpa es, un Imagen(memo binario) o otro memo binario ?
Muchas gracias por tu ayuda y buen fin de semana.
Juan
//hostimage.webdev.info/avatars/u6yn77gdR1gObV0nRP3q4w
Registered member
6 messages
Posted on April, 25 2017 - 12:33 AM
Hola Juan.

El campo tipo memo en HF sirve para almacenar objetos binarios (imagenes, documentos, videos etc). es similar al campo tipo blob de mysql

Saludos!

--
Christian D.
//hostimage.webdev.info/avatars/default.gif
Posted on April, 25 2017 - 10:42 AM
Primero de todo gracias Christian por tu ayuda.
He intentado guardar con un selector de ficheros en disco el fichero .docx, pero no veo si miro en la base de datos el fichero...
Disculpa pero no tengo experiencia en este asunto ya que nunca lo he hecho.
Podrías explicarme lo que hago mal?, he usado tu segunda opción que me indicastes.
Saludos y gracias
//hostimage.webdev.info/avatars/u6yn77gdR1gObV0nRP3q4w
Registered member
6 messages
Posted on April, 26 2017 - 6:28 PM
Que tal Juan, aquí un pequeño ejemplo

SelectedFile is string
SelectedFile = fSelect("\Directories", "","Seleccione un archivo","Tmagen (*.JPG)" + TAB + "*.jpg" + CR + "Todo" + TAB + "*.*", "txt")
// Se indica la tabla y el campo donde se almacenara el archivo, en este caso se guardara un archivo tipo imagen, consulte
//https://help.windev.com/en-US/… para que vea los valores que puede tomar el cuarto parámetro dependiendo del //archivo a subir
HLinkMemo(TABLA,CAMPOTABLA,SelectedFile ,hMemoImg)
IF Hadd(NOMBRETABLA) THEN
Toastdisplay("Archivo almacenado")
ELSE
Error("HFSQL error: " + HErrorInfo())
END




Tenga en cuenta que la funcion fselect aplica para Windev o Windev Mobile, si intenta hacer la misma funcionalidad en WebDev utilice un control tipo upload en el evento (receiving the file upload) del botón quedaría algo como:




fMakeDir(fWebDir()+"\Fotos") // crea el directorio fotos en la carpeta del proyecto
RutaFoto is string = fWebDir()+"\Fotos\" + UploadCopyFile(MySelf, fWebDir()+"\Fotos\","NOMBREFOTO"+"_"+ SysDateTime)

// Se indica la tabla y el campo donde se almacenara el archivo, en este caso se guardara un archivo tipo imagen, consulte
//https://help.windev.com/en-US/… para que vea los valores que puede tomar el cuarto parámetro dependiendo del //archivo a subir

HLinkMemo(TABLA,CAMPOTABLA,RutaFoto ,hMemoImg)
IF Hadd(NOMBRETABLA) THEN
Toastdisplay("Archivo almacenado")
ELSE
Error("HFSQL error: " + HErrorInfo())
END


Espero sea útil la respuesta.


Saludos!

--
Christian D.
//hostimage.webdev.info/avatars/default.gif
Posted on April, 26 2017 - 10:52 PM
Muchas gracias por su ayuda Christian.
Voy aplicar sus consejos y quiero agradecerle el tiempo dedicado y sus ejemplos.
Saludos y hasta la próxima,:merci:
Juan:merci: