UPDATE Attachment Field με SQL σε Access 2013

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

UPDATE Attachment Field με SQL σε Access 2013

Δημοσίευση από panos78 » 01 Νοέμ 2014 11:40

Καλησπέρα,
Εδώ και μέρες ψάχνω να βρω πως να εισάγω συνημμένες εικόνες μαζικά σε μια βάση δεδομένων accdb.
Ο πίνακας που έχω έχει μεταξύ άλλνω δύο πεδία:
1. Όνομα φωτογραφίας
2. Φωτογραφία (Τύπος πεδίου: Συνημμένο).
Δοκίμασα να τρέξω σε SQL για δοκιμή σε μια εγγραφή την παρακάτω δήλωση:

Κώδικας: Επιλογή όλων

UPDATE [Πίνακας 1] SET [Φωτογραφία] = 'Photo1.jpg' WHERE [Όνομα φωτογραφίας] = 'Photo1';
Αλλά δυστυχώς βγάζει σφάλμα.
Στη συνέχεια, διαπίστωσα ότι το πεδίο Συνημμένο είναι σύνθετο πεδίο και περιέχει στην ουσία τρεις τιμές: FileData, FileName, FileType.
Έγγραψα ένα ξεχωριστό UPDATE statement για κάθε μια από τις τρεις τιμές δυστυχώς χωρίς αποτέλεσμα.
Δεν υπάρχει τρόπος να εισάγω σε κάθε εγγραφή μου την αντίστοιχη εικόνα (βάσει του πεδίου Όνομα φωτογραφίας) με καθαρά SQL statements;
Ευχαριστώ εκ των προτέρων για τις απαντήσεις σας.
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

UPDATE Attachment Field με SQL σε Access 2013

Δημοσίευση από dva_dev » 01 Νοέμ 2014 19:30

Με sql μόνο δεν πιστεύω πως μπορείς.
Δες πάντως το http://msdn.microsoft.com/en-us/library ... e.12).aspx

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

UPDATE Attachment Field με SQL σε Access 2013

Δημοσίευση από panos78 » 01 Νοέμ 2014 21:48

dva_dev έγραψε:Με sql μόνο δεν πιστεύω πως μπορείς.
Δες πάντως το http://msdn.microsoft.com/en-us/library ... e.12).aspx
Κρίμα.
Δυστυχώς DAO που υποστηρίζει η Access δεν γνωρίζω.
Το άρθρο που μου έδωσες το σύνδεσμο, καταλαβαίνω τη λογική αλλά δεν ξέρω πως να το προσαρμόσω στις ανάγκες μου όπως επίσης που θα πρέπει να επικολλήσω τον όποιο κώδικα τελικά δημιουργήσω(ουμε) για να γίνει εφαρμογή.
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

UPDATE Attachment Field με SQL σε Access 2013

Δημοσίευση από panos78 » 03 Νοέμ 2014 10:26

Λοιπόν, επείδή συνειδητοποίησα ότι δεν υπάρχει άλλος τρόπος και λόγω του γεγονότος ότι θα γλιτώσω αρκετή ώρα δουλειάς, ασχολήθηκα λιγάκι με VBA και κατέληξα στον παρακάτω κώδικα:

Κώδικας: Επιλογή όλων

Sub InsImages()
On Error GoTo Err_AddImage
Dim tbl As String
Dim db as Database
Dim rs as Recordset
tbl = "Πίνακας"
Set rs = CurrentDb.OpenRecordset(tbl)
rs.Edit
With rs
	If Not .BOF And Not .EOF Then
		.MoveLast
		.MoveFirst
        While (Not .EOF)
			Set rsPictures = rs.Fields("Φωτό").Value
			rsPictures.AddNew
			rsPictures.Fields("Φωτό").LoadFromFile ("C:\Φάκελος Φωτογραφίες\" & rs.Fields("Όνομα φωτογραφίας").Value & ".jpg")
			rsPictures.Update
			rs.Update   
			End If
			.MoveNext
		Wend
	End If
	.close
End With
Err_AddImage:
	If Err = 3820 Then
		MsgBox ("Το αρχείο υπάρχει ήδη ως συνημμένο!")
	Resume Next
	Else
		MsgBox "Παρουσιάστηκε κάποιο σφάλμα!", Err.Number, Err.Description
	Resume Exit_AddImage
	End If
End Sub
Μπορεί κάποιος να μου πει αν υπάρχει κάπου λάθος και αν ναι που για να το διορθώσω.
Ευχαριστώ εκ των προτέρων.
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1948
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

UPDATE Attachment Field με SQL σε Access 2013

Δημοσίευση από Alice_Cooper » 03 Νοέμ 2014 12:46

vasika an to trekseis kanei afto pou thes????
kane ena temp table kai try ....

pantos se sql apo oso eida to query einai etsi:

Κώδικας: Επιλογή όλων

INSERT INTO ImageTable (Id, Name, Photo) 
SELECT 1, 'test', BulkColumn 
FROM Openrowset( Bulk 'C:\test.jpg', Single_Blob) as image
kai h logikh ...
[db connect] ==> [loop (x = file_list_No)] ==> [make query] ==> [exec query] ==> [loop]

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες