Hola Arnaldo
Yo no uso MySQL pero te puedo decir como lo hago en Firebird, quizás te pueda dar algunas ideas.
Por ejemplo en la tabla PRODUCTOS.
1. Creo una columna llamad PRD_FOTOGR de tipo BLOB Sub_Type 1 (text). Eso significa que en esa columna puedo guardar cualquier contenido (textos, fotografías, canciones, vídeos, etc.)
2. Guardo en una propiedad de mi formulario (ThisForm.cFotografia) la ruta a la fotografía que deseo almacenar en una tabla, por ejemplo: ThisForm.cFotografia = "C:\Mis Imágenes\Mercedes Benz 350 SE.JPG"
3. Utilizo la función FILETOSTR() para guardar toda la fotografía dentro de una variable. Por ejemplo: M.PRD_FOTOGR = FILETOSTR(ThisForm.cFotografia)
4. Ejecuto el procedimiento almacenado que guarda los datos del producto (incluyendo su fotografía)
UPDATE OR INSERT INTO PRODUCTOS
(PRD_CODIGO, ..., PRD_FOTOGR)
VALUES(:Codigo , ..., :Fotogr);
Para mostrar la fotografía en el formulario:
1. Inserto un control Imagen en el formulario
2. Obtengo la columna (que es un campo Memo) que contiene la fotografía, por ejemplo: SELECT PRD_FOTOGR FROM PRODUCTOS
3. Con el contenido de ese campo Memo creo una fotografía temporal en el disco duro. Por ejemplo: STRTOFILE(PRD_FOTOGR, "C:\TEMP.JPG")
a. También podría escribirse: COPY MEMO PRD_FOTOGR TO "C:\TEMP.JPG"
4. Muestro la fotografía, por ejemplo: ThisForm.Image1.Picture = "C:\TEMP.JPG"
NOTAS:
1. En lugar de una columna BLOB Sub_Type 1 (text) cuyo equivalente en Visual FoxPro es un campo Memo también podría usarse una columna BLOB Sub_Type 0 cuyo equivalente en Visual FoxPro es un campo General. Sin embargo, nunca me gustaron los campos de tipo General, por ser aún más problemáticos que los campos Memo, por eso jamás los usé.
2. Si la fotografía puede tener otra extensión (no solamente .JPG sino también .BMP, .TIF, .GIF, etc.) entonces además de la fotografía se debería guardar también o el nombre de esa fotografía o al menos su extensión para que en los pasos 3. y 4. se use la extensión correcta.
3. En lugar de usar la carpeta C:\ es más conveniente usar la carpeta donde el Windows guarda los archivos temporales: GETENV("TEMP")
4. En lugar de usar un nombre fijo (TEMP.JPG) es más conveniente usar un nombre variable, por ejemplo: "K" + SYS(3) + ".JPG"
Saludos.
Walter.