Set
किसी ऑब्जेक्ट संदर्भ में एक चर सेट करने के लिए कीवर्ड का उपयोग किया जाता है। आपका .Value
कोई वस्तु नहीं है, यह शून्य है। इसलिए आवश्यक वस्तु त्रुटि।
आपको जो कोड मिला है उसका उपयोग एक्सेस अटैचमेंट फ़ील्ड के लिए किया जाता है। Varbinary(Max)
, हालांकि, अनुलग्नक फ़ील्ड नहीं है, लेकिन एक्सेस/डीएओ में ओएलई ऑब्जेक्ट के लिए मानचित्र है। इसका मतलब है कि आपको अटैचमेंट को प्रबंधित करने के लिए नेस्टेड रिकॉर्डसेट का उपयोग करने के बजाय, फ़ाइल डेटा वाले बायटेरे में मान सेट करने की आवश्यकता है।
फ़ाइल को बाइटियर में लोड करने के कई तरीके हैं। मुझे निम्न कोड पसंद है, जो एक ADODB.Stream
. का उपयोग करता है वस्तु।
Dim dbsGMEC As DAO.Database
Dim rstWater_Files As DAO.Recordset
Set dbsGMEC = CurrentDb
Set rstWater_Files = dbsGMEC.OpenRecordset("dbo_WATER_FILES", dbOpenDynaset, dbSeeChanges)
rstWater_Files.Edit
Dim strm As Object
Set strm = CreateObject("ADODB.Stream")
strm.Type = 1 'adTypeBinary
strm.Open
strm.LoadFromFile "C:\test.jpg"
rstWater_Files.Fields("Binary_File").Value = strm.Read
strm.Close
rstWater_Files.Update
इसे वापस फ़ाइल में संग्रहीत करने के लिए:
With CreateObject("ADODB.Stream")
.Type = 1 'adTypeBinary
.Open
.Write rstWater_Files.Fields("Binary_File").Value
.SaveToFile "C:\testcopy.jpg", 2 'adSaveCreateOverWrite
.Close
End With
अगर आपको वास्तव में ADODB
पसंद नहीं है , और यहां तक कि एक ADODB.Stream
. का विचार भी आपको घृणा है, आप फ़ाइल को बायटेरे में पढ़ने के लिए स्वयं VBA का भी उपयोग कर सकते हैं:
Dim dbsGMEC As DAO.Database
Dim rstWater_Files As DAO.Recordset
Set dbsGMEC = CurrentDb
Set rstWater_Files = dbsGMEC.OpenRecordset("dbo_WATER_FILES", dbOpenDynaset, dbSeeChanges)
rstWater_Files.Edit
Dim byteArr() As Byte
Dim fileInt As Integer: fileInt = FreeFile
Open "C:\test.jpg" For Binary Access Read As #fileInt
ReDim arr(0 To LOF(fileInt) - 1)
Get #fileInt, , byteArr
Close #fileInt
rstWater_Files.Fields("Binary_File").Value = byteArr
rstWater_Files.Update
यह अंतिम कोड अधिकतम फ़ाइल आकार 2,147,483,647 बाइट्स (एक लंबे आकार का अधिकतम आकार) को कैप करेगा। हालांकि, यह एक्सेस डेटाबेस का अधिकतम आकार भी है, इसलिए इससे पहले आपको परेशानी हो सकती है। यह कोड भी चंकिंग का उपयोग नहीं करता है, इसलिए यह आवश्यकता से अधिक मेमोरी का उपयोग कर सकता है।