Question

VB6 code To Save Bitmap File as OLE Object in Access OLE Object Field

Asked by: smanthanims

Dear Experts
I am having problems to save barcode bmp files as OLE object in MS Access OLE Object Field

I have a folder containing barcode images numbered sequentially e.g.
110001.bmp, 110002.bmp, 110003.bmp etc
and I have the same numbers in a table in MS Access of Office 2000 in field named 'bcn'
I have another field (OLE object) type named 'bcimages'
I want a solution to save the barcodes in OLE embeded format in MS access through a VB code
for each of the corresponding numbers
I referred to the microsoft URL http://support.microsoft.com/kb/205635

It suggested using datacontrol. But it not accepting MS Access 2000 file
giving a message " unrecognized database format"


I tried to use  ADODB recordset through VB6 code, but I am not finding a way to
bind the OLE field in MS access to OLE active X object in Visual basic 6 through the code

I am writing the code which obviously not working.

Private Sub Command1_Click()
Call fnconn
rsbc.Open "select * from tblbcn", cnacc, 1, 3
rsbc.MoveFirst

While Not rsbc.EOF
Me.Text1.Text = rsbc("bcn")

OLE1.CreateEmbed "c:\barcodetest\" & rsbc("bcn") & ".bmp"
'??? code to bind bcimage in the recordset i.e. rsbc("bcimage")
rsbc.Update
rsbc.MoveNext
Wend

rsbc.Close
Set rsbc = Nothing
cnacc.Close
Set cnacc = Nothing
MsgBox ("over")

End Sub
I am seeking help from experts to complete the code or
any other method that helps to solve my problem

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-08-24 at 06:15:26ID24676398
Topics

Visual Basic Programming

,

Microsoft Access Database

,

Databases Miscellaneous

Participating Experts
2
Points
500
Comments
7

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Open Recordset in VB6
    In VB6 how can one determine if a recordset is already open, other than trying to reference it and trapping the error if it is not open?
  2. Saving Bitmaps in VB6
    I am programming in VB6 (Professional) although I am not a pro programmer. I want to save graphics that are generated by the program on a picture box that takes the whole screen, how do I save this as a 16 colour bitmap rather than the default 16 million or so as this makes t...
  3. Convert bmp to jpg or gif in VB6?
    Let's say I have a bmp in a PictureBox control (VB6) - how can I save it to disk as a jpg (preferable) or gif? OR (less preferable) - how can I "programmatically" ( from VB) convert a bmp file on disk to a jpg or gif? Thanks.
  4. converting bmp to jpg in VB6
    Hello all, I am having an interesting problem. We are writing a program, and in it, we are cropping a picture and saving it to put into a .pdf file. The problem is, when VB saves it, it is always a .bmp file. Adobe, however, doesn't want a .bmp, it wants a .jpg file. I...
  5. Simple FREE vb6 BMP to JPG converter
    Hi What seemed a simple mission is now proving a menace. VB controls of course only handle bitmaps, I have found numberous DLL and OCX solutions such as IPP Intel and Unisys etc which ALL have vast image handling features and a very fat price tag. My application is very sim...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: LSMConsultingPosted on 2009-08-24 at 07:05:33ID: 25168399

Can I ask why you're storing images of your barcodes? What do you need to do with them?

YOu can use barcode Fonts to display them on Forms and Reports, if that's what you're after.

 

by: smanthanimsPosted on 2009-08-24 at 08:21:51ID: 25169239

I have given an example for barcodes.  It can some other images related to the numbers.  I want to store images as in MS access through VB code instead of inserting them manually.

 

by: LSMConsultingPosted on 2009-08-24 at 08:44:15ID: 25169468

I see ...

First: It is most definitely NOT a good idea to store images in an Access database, which was one of the main reasons for asking this question. Access doesn't handle images well, and storing them can cause (a) significant bloat and (b) corruption. You're generally much better off storing images in a folder, and storing the Path to that folder in Access.

Why it's not a good idea:
http://support.microsoft.com/?id=123151

That said, if you must store them, you need to use GetChunk and AppendChunk:

http://msdn.microsoft.com/en-us/library/aa193167(office.10).aspx

 

by: smanthanimsPosted on 2009-08-24 at 10:17:16ID: 25170340

Can anyone modify my code to use getchunk and appendchunk method

 

by: pathakhemantPosted on 2009-08-25 at 21:23:09ID: 25184421

Dear

Create 2 field in your Access database
1.SizeField    Number
2.Photo        Ole Object
.........................................
when will you going to save your data then
save your all data exept [SizeField,Photo]
when your data saved in database
strFileName     'STORE FILE LOCATION
If strFileName <> vbNullString Then
rs.Open "SELECT SIZEFEILD,PHOTO FROM TABLE WHERE ID='" & PrimKey & "'", CNN, adOpenKeyset, adLockOptimistic
GetPhoto strFileName, rs, "SizeFeild", "Photo"
rs.Update
rs.Close
End If
...............................................................................................
when you want to get image from record set
       rs.open "SELECT * FROM TABLENAME",CONNECTION
       FillPhoto Rec, "Photo", "SizeFeild", Image1
................................................................................................


' Module Section
Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Public Const MAX_PATH = 260
Public Const BLOCK_SIZE = 10000
'------------------------------------------------------------
' Image Retriving and filling functions
' Function Name : FillPhoto
'   Use : Retrive Stored Photos From Access Database
'   Stores Photos : In Temporary File
'   Parameters:
'   rstMain as Recordset : The Recordset that contains Photos
'   PFName as String : Name of the Field that has the Photo
'   SizeField : Name of the Field That contains size of Photo
'============================================================
' Sub Function Name: GetPhoto
'   Use : Store Photo from a file to Access database
'   Parameters:
'   fileName as String : Name of the File that contains Photo
'   rstMain as Recordset : recordset that has to be updated
'   FieldName as string : Name of the Image Field
'   SizeField :Name of the Size field that contains photo size
'-------------------------------------------------------------
Public Sub FillPhoto(rstMain As Recordset, PFName As String, SizeField As String, picEmp As Image)
On Error GoTo Handler
Dim bytes() As Byte
Dim file_name As String
Dim file_num As Integer
Dim file_length As Long
Dim num_blocks As Long
Dim left_over As Long
Dim block_num As Long
Dim hgt As Single
 
    'me.imgPhoto.Visible = False
    Screen.MousePointer = vbHourglass
    DoEvents
 
    ' Get a temporary file name.
    file_name = TemporaryFileName()
 
    ' Open the file.
    file_num = FreeFile
    Open file_name For Binary As #file_num
 
    ' Copy the data into the file.
    file_length = Val(rstMain(SizeField) & "")
    num_blocks = file_length / BLOCK_SIZE
    left_over = file_length Mod BLOCK_SIZE
 
    For block_num = 1 To num_blocks
        bytes() = rstMain(PFName).GetChunk(BLOCK_SIZE)
        Put #file_num, , bytes()
    Next block_num
 
    If left_over > 0 Then
        bytes() = rstMain(PFName).GetChunk(left_over)
        Put #file_num, , bytes()
    End If
 
    Close #file_num
    If file_length <> 0 Then picEmp.Picture = LoadPicture(file_name)
 
    Screen.MousePointer = vbDefault
Exit Sub
 
Handler:
    Debug.Print Err.Description
    Resume Next
End Sub
 
Public Sub GetPhoto(filename As String, rstMain As Recordset, SizeField As String, FieldName As String)
On Error GoTo Handler
Dim file_num As String
Dim file_length As Long
Dim bytes() As Byte
Dim num_blocks As Long
Dim left_over As Long
Dim block_num As Long
 
    file_num = FreeFile
    Open filename For Binary Access Read As #file_num
 
    file_length = LOF(file_num)
    If file_length > 0 Then
        num_blocks = file_length / BLOCK_SIZE
        left_over = file_length Mod BLOCK_SIZE
 
        rstMain(SizeField) = file_length
 
        ReDim bytes(BLOCK_SIZE)
        For block_num = 1 To num_blocks
            Get #file_num, , bytes()
            rstMain(FieldName).AppendChunk bytes()
        Next block_num
 
        If left_over > 0 Then
            ReDim bytes(left_over)
            Get #file_num, , bytes()
            rstMain(FieldName).AppendChunk bytes()
        End If
 
        'rstEmployee.Update
        Close #file_num
    End If
Exit Sub
 
Handler:
    MsgBox Err.Description
    Resume
   Debug.Print Err.Description
End Sub
 
Public Function TemporaryFileName() As String
Dim temp_path As String
Dim temp_file As String
Dim length As Long
 
    ' Get the temporary file path.
    temp_path = VBA.Space$(MAX_PATH)
    length = GetTempPath(MAX_PATH, temp_path)
    temp_path = Left$(temp_path, length)
 
    ' Get the file name.
    temp_file = VBA.Space$(MAX_PATH)
    GetTempFileName temp_path, "per", 0, temp_file
    TemporaryFileName = Left$(temp_file, InStr(temp_file, VBA.Chr$(0)) - 1)
End Function
 
Public Sub UnRGB(ByVal color As OLE_COLOR, ByRef R As Integer, ByRef G As Integer, ByRef b As Integer)
   b = color \ 65536
   G = (color \ 256) Mod 256
   R = color Mod 256
End Sub
 
Public Sub SetBrightness(ByVal pic1 As PictureBox, ByVal pic2 As PictureBox, ByVal brightness As Single)
Dim fraction As Single
Dim X As Integer
Dim Y As Integer
Dim R As Integer
Dim G As Integer
Dim b As Integer
 
    If brightness < 0 Then
        ' Darken.
        fraction = (100 + brightness) / 100
        For Y = 0 To pic1.ScaleHeight - 1
            For X = 0 To pic1.ScaleWidth - 1
                'DoEvents
                UnRGB pic1.Point(X, Y), R, G, b
                R = R * fraction
                G = G * fraction
                b = b * fraction
                pic2.PSet (X, Y), RGB(R, G, b)
            Next X
        Next Y
    Else
        ' Brighten.
        fraction = brightness / 100
        For Y = 0 To pic1.ScaleHeight - 1
            For X = 0 To pic1.ScaleWidth - 1
                'DoEvents
                UnRGB pic1.Point(X, Y), R, G, b
                R = R + (255 - R) * fraction
                G = G + (255 - G) * fraction
                b = b + (255 - b) * fraction
                pic2.PSet (X, Y), RGB(R, G, b)
            Next X
        Next Y
    End If
    pic2.Picture = pic2.Image
End Sub
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:

Select allOpen in new window

 

by: LSMConsultingPosted on 2009-08-26 at 06:26:06ID: 25187311

Looks like the post above will do what you want ... good luck ...

 

by: smanthanimsPosted on 2009-08-31 at 09:57:57ID: 31619626

Excellent help

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...