Προς το περιεχόμενο

Visual Basic & ADODB.Stream


Paytor

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα!

Προσπαθώ να αποθηκεύσω εικόνες στον SQL Server 2000 απο την Visual Basic μέσω του ADODB.Stream object 2.6 αλλα οταν φτάνει να κάνει update στο Recordset μου βγάζει το εξής σφάλμα:[Microsoft][ODBC SQL Server Driver]

Incorrect syntax near the keyword 'File' οπου File είναι το όνομα του πεδίου στην βάση τύπου image στο οποίο αποθηκέυω την εικόνα.Εχω κάνει πολλες αλλαγές στον κώδικα αλλα δεν δούλεψε σωστά.Μέχρι στιγμής το έχω καταφέρει μόνο με την ιδιότητα AppendChunk αλλα με το ADODB.Stream όχι.Καμία βοήθεια???

Ευχαριστώ!

Δημοσ.

Dim cn As ADODB.Connection

Dim rs As ADODB.Recordset

Dim mstream As ADODB.Stream

Dim i As Integer

 

Set cn = New ADODB.Connection

cn.Open "Provider=MSDataShape.1;Persist Security Info=True;Data Source=mysqlserver;User ID=sa;Password=12345;Initial Catalog=pubs;Data Provider=sqloledb.1"

 

Set rs = New ADODB.Recordset

rs.Open "Select * from authors where au_id = '172-32-1176'", cn, adOpenKeyset, adLockOptimistic

 

Set mstream = New ADODB.Stream

mstream.Type = adTypeBinary

mstream.Open

mstream.LoadFromFile "c:\buttons.gif"

 

rs.Fields("AuthorPhoto").Value = mstream.Read

rs.Update

 

rs.Close

cn.Close

 

 

To field AuthorPhoto εχει type image

Δημοσ.

Ετσι ακριβώς το έχω κάνει και εγώ.Απλά εχει βάλει και ενα CommonDialog για να διαλέγω την εικόνα που θα αποθηκεύσω ως εξής

CommonDialog1.ShowOpen

strFileName = CommonDialog1.FileName

οπου strFileName το έχω δηλώσει As String και to φορτώνω ετσι mstream.LoadFromFile (strFileName).Επίσης στο σημείο οπου κάνεις ενα μικρο query για το recordset έβαλα το παρακάτω:rs.Open "Select * from Image", cn, adOpenKeyset, adLockOptimistic όπου Image έιναι το όνομα του πίνακα.Ο πίνακας εριέχει 3 στοιχεία 1)το πεδίο File τύπου image 2)Το πεδίο Name τύπου varchar και 3)Το πεδίο Size τύπου int.To σφάλμα όμως δεν άλλαξε.Μου το βγάζει ακόμα.

Δημοσ.

Για να εμφανίζει το όνομα(Name) και το μέγεθος(Size) της εικόνας στην βάση κάνω το εξής

rs.Fields("Name").Value = CommonDialog1.FileTitle

rs.Fields("Size").Value = FileLen(strFileName)

αλλα το προβλημα δεν είναι σε αυτα τα δύο,πρέπει να είναι στο File οπως αναφέρω και στο σφάλμα που μου βγάζει.

rs.Fields("File").Value = st.Read

Δημοσ.

Τελικα βρήκα το λάθος.Αντι να χρησιμοποιήσω ADODB New Recordset έκανα το εξής : φόρτωσα την εικόνα κανονικά στο stream object και μετα για να την αποθηκεύσω στην βάση έβαλα Adodc1.Recordset.Fields("File").Value = st.Read και δούλεψε κανονικά!Ευχαριστώ πάντως για την παρατηρηση σου πάνω στο θέμα!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...