Kbase P41694: How to store binary files in a BLOB field
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  11/27/2009 |
|
Status: Verified
GOAL:
How to store binary files in a BLOB field
GOAL:
How to use the COPY-LOB statement to copy a lob field to a file and vice versa
GOAL:
How to store an image into a BLOB
GOAL:
How to display a BLOB image in an Image object.
FACT(s) (Environment):
Windows
OpenEdge 10.x
FIX:
The following is an example of how to store an image in a BLOB field.
CREATE WIDGET-POOL.
DEFINE TEMP-TABLE ttImage NO-UNDO
FIELD cImageName AS CHARACTER FORMAT "X(125)"
FIELD bImage AS BLOB
INDEX imageName AS PRIMARY UNIQUE cImageName.
DEFINE VARIABLE C-Win AS WIDGET-HANDLE NO-UNDO.
DEFINE BUTTON bAddImage
LABEL "Add Image"
SIZE 15 BY 1.14.
DEFINE IMAGE IMAGE-1
FILENAME "adeicon/blank":U
STRETCH-TO-FIT
SIZE 172 BY 30.
DEFINE QUERY brImages FOR ttImage SCROLLING.
DEFINE BROWSE brImages
QUERY brImages
DISPLAY ttImage.cImageName
WITH NO-ROW-MARKERS SEPARATORS SIZE 50 BY 13.81 FIT-LAST-COLUMN.
DEFINE FRAME DEFAULT-FRAME
bAddImage AT ROW 1.48 COL 1.8
brImages AT ROW 3.19 COL 1
IMAGE-1 AT ROW 3.24 COL 52
WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
SIDE-LABELS NO-UNDERLINE THREE-D
AT COL 1 ROW 1
SIZE 223.2 BY 32.67.
CREATE WINDOW C-Win ASSIGN
HIDDEN = YES
TITLE = "Image"
HEIGHT = 32.67
WIDTH = 223.2
MAX-HEIGHT = 32.67
MAX-WIDTH = 223.2
VIRTUAL-HEIGHT = 32.67
VIRTUAL-WIDTH = 223.2
RESIZE = yes
SCROLL-BARS = no
STATUS-AREA = no
BGCOLOR = ?
FGCOLOR = ?
KEEP-FRAME-Z-ORDER = yes
THREE-D = yes
MESSAGE-AREA = no
SENSITIVE = yes.
ENABLE bAddImage brImages IMAGE-1 WITH FRAME DEFAULT-FRAME IN WINDOW C-Win.
VIEW C-Win.
ON VALUE-CHANGED OF brImages IN FRAME DEFAULT-FRAME
DO:
DEFINE VARIABLE cFile AS CHARACTER NO-UNDO.
ASSIGN cFile = SESSION:TEMP-DIRECTORY + ENTRY(NUM-ENTRIES(ttImage.cImageName, "\"),ttImage.cImageName, "\").
FILE-INFO:FILE-NAME = ttImage.cImageName.
COPY-LOB ttImage.bImage TO FILE cFile.
IMAGE-1:LOAD-IMAGE(cFile).
OS-DELETE cFile.
END.
ON CHOOSE OF bAddImage IN FRAME DEFAULT-FRAME /* Add Image */
DO:
DEFINE VARIABLE cFile AS CHARACTER NO-UNDO.
DEFINE VARIABLE rRowid AS ROWID NO-UNDO.
SYSTEM-DIALOG GET-FILE cFile
FILTERS "BMP" "*.bmp", "JPG" "*.jpg", "ALL" "*".
CREATE ttImage.
ASSIGN ttImage.cImageName = cFile
rRowid = ROWID(ttImage).
COPY-LOB FROM FILE cFile TO ttImage.bImage.
OPEN QUERY brImages FOR EACH ttImage NO-LOCK.
brImages:QUERY:REPOSITION-TO-ROWID(rRowid).
APPLY "VALUE-CHANGED":U TO brImages.
END.
WAIT-FOR CLOSE OF THIS-PROCEDURE.