Symptom
Customer extracted some PDFs (stored in a blob on a table pdfs) to a folder.
The file names of the PDFs are the image sequence numbers of his pdfs entries.
After modifying these PDFs he wishes to update his blob fields in the pdfs table.
Environment
- Operating System: Any supported Windows version
- PowerBuilder: Any supported version
Resolution
The following steps will provide you with the desired functionality:
- Place an invisible ListBox (lb_pdfs)on your window (w_pfds).
-
Add the following Powerscript to a command button or function that will provide the desired functionality:
integer li_fnum, li_rtn
blob pdfblob
String ls_pdfdir = "<your PDF root directory>"
String ls_pdfNames[], ls_pdfkeys[]
//Get a list of PDF files and associated keys
w_pdfs.lb_pdfs.DirList("*.PDF", 16400, ls_pdfdir)
li_pdffiles = w_pdfs.lb_pdfs.TotalItems()
FOR li_pdffile = 1 TO li_pdffiles
ls_pdfname[li_pdffile] = w_pdfs.lb_pdfs.Item[li_pdffile]
ls_pdfkey[li_pdffile] = Left(ls_pdfname[li_pdffile], Len(ls_pdfkey[li_pdffile]) - 4)
NEXT
// Update PDF database entries
FOR li_pdffile = 1 TO li_pdffiles
// Open PDF file
li_fnum = FileOpen(ls_pdfdir + "/" + ls_pdfname[li_pdffile], StreamMode!)
// Read PDF file
FileReadEx(li_fnum, pdfblob)
// Update PDF entry in database
UPDATEBLOB pdfs SET pdfdata = :pdfblob WHERE pdfkey = ls_pdfkey[li_pdffile] USING SQLCA;
IF SQLCA.SQLNRows> 0 THEN
COMMIT USING SQLCA ;
END IF
NEXT - The pdf entries in the pdfs table are now updated with the current PDF contents.