Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

डीएओ कोड के साथ एक्सेस से SQL सर्वर तक फ़ाइल अपलोड करना - ऑब्जेक्ट आवश्यक त्रुटि

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 बाइट्स (एक लंबे आकार का अधिकतम आकार) को कैप करेगा। हालांकि, यह एक्सेस डेटाबेस का अधिकतम आकार भी है, इसलिए इससे पहले आपको परेशानी हो सकती है। यह कोड भी चंकिंग का उपयोग नहीं करता है, इसलिए यह आवश्यकता से अधिक मेमोरी का उपयोग कर सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे नियंत्रित करें कि उपयोगकर्ता SQL सर्वर सममित कुंजी एन्क्रिप्शन को क्या डिक्रिप्ट कर सकते हैं

  2. कई से कई संबंधों के लिए SQL सर्वर क्वेरी - क्वेरी कैसे करें?

  3. क्या स्ट्रिंग को डीबग करने का कोई अच्छा तरीका है या बाइनरी डेटा को छोटा कर दिया जाएगा?

  4. टी-एसक्यूएल:मैक्स (अन्य कॉलम) के आधार पर कॉलम का चयन करना

  5. मैं SQL सर्वर से HTTP अनुरोध कैसे कर सकता हूं?