Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Extract OLE Objects Access

Îåêßíçóå áðü ôï ìÝëïò vtops. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 14-05-2009, 15:25. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-05-2009, 00:28 50659

    Extract OLE Objects Access

    Καλησπέρα σε όλους,

    έχω στα χέρια μου μια access που περιέχει πάρα πολύ μεγάλο όγκο πληροφοριών σε Ole/Objects (Εικόνες, video, word, excel απλό κείμενο κλπ)

    Υπάρχει κάποιος τρόπος να αντλήσω αυτή την πληροφορία σε αντίστοιχο αρχείο;

    Ευχαριστώ.


    Best Regards
  •  12-05-2009, 11:40 50669 σε απάντηση της 50659

    Απ: Extract OLE Objects Access

    φίλε μου σε τι αρχείο τα θες? τι τύπου? και η access ένα αρχείο είναι.

    μήπως εννοείς τα word να γίνουνε .doc , τα excel σε .xls, κ.ο.κ ?


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  12-05-2009, 11:55 50670 σε απάντηση της 50659

    Απ: Extract OLE Objects Access

    δες λίγο εδώ αυτό το Link

    http://www.lebans.com/oletodisk.htm


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  12-05-2009, 12:23 50671 σε απάντηση της 50659

    Απ: Extract OLE Objects Access

    παρακάτω έχω κάποιο κώδικα που έχω βρει και τον έχω κάπως αλλάξει.

    χρησιμοποιεί την northwind db. έχει ένα πίνακα categories που έχει μια στήλη oleobject data type (image)

    υποθέτω ότι είσαι εξοικειωμένος με c# και winforms. αυτός είναι ο όλος ο κώδικας μέσα στο form1.cs.

    υποθέτουμε ότι την βάση την έχουμε στο c:/ drive Και πετάμε τα αρχεία στο desktop

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Data.OleDb;

    using System.Drawing;

    using System.Drawing.Imaging;

    using System.Text;

    using System.IO;

    using System.Windows.Forms;

    namespace oleobjects

    {

    public partial class Form1 : Form

    {

    public Form1()

    {

    InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    String strConn = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = C:\Northwind.mdb;";

    OleDbConnection conn = new OleDbConnection(strConn);

    Byte[] byPicture;

    String strCmd = "Select Picture From Categories where CategoryID=1";

    OleDbCommand cmd = new OleDbCommand(strCmd, conn);

    try

    {

    conn.Open();

    byPicture = (Byte[])cmd.ExecuteScalar();

    conn.Close();

    MemoryStream ms = new MemoryStream();

    Bitmap bm;

    ms.Write(byPicture, 78, byPicture.Length - 78);

    bm = new Bitmap(ms);

    pictureBox1.Image = bm;

    String strPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\test.jpg";

    bm.Save(strPath, ImageFormat.Jpeg);

    }

    catch

    {

    }

    }

    }

    }


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  14-05-2009, 13:25 50705 σε απάντηση της 50671

    Απ: Extract OLE Objects Access

    Σε ευχαριστώ πολύ για την βοήθεια, το κακό είναι ότι δεν ξέρω τι υπάρχει αποθηκευμένο μέσα σε αυτά τα Ole/Objects, μου έδωσαν την βάση και μου είπαν αν μπορώ να εξάγω τα δεδομένα, γιατί ούτε και αυτοί που μου την έδωσαν γνωρίζουν τι και πόσες μορφές αρχείων μπορεί περιέχει.

    Θα δοκιμάσω αυτά που μου λες και αν υπάρχει κάποιο πρόβλημα θα τα ξαναπούμε.

    Ευχαριστώ πολύ και πάλι.


    Best Regards
  •  14-05-2009, 15:25 50708 σε απάντηση της 50705

    Απ: Extract OLE Objects Access

    Τα OLE Objects ή αργότερα ActiveX Objects ήταν μία παλιά, πολύ παλιά τεχνολογία χάρις στην οποία μπορούσες να ενσωματώσεις αντικείμενα μίας εφαρμογής (π.χ. word, εικόνες, video, οτιδήποτε) στα data μίας άλλης. Για παράδειγμα, θα ενσωμάτωνες ένα αντικείμενο video μέσα σε ένα αρχείο Excel ή Word. Όταν κάποιος άνοιγε το αρχείο, το OLE θα εντόπιζε την εφαρμογή με την οποία είχε φτιαχτεί το OLE object και θα την εκτελούσε μέσα στο πλαίσιο του document. Μπορεί κανείς ακόμα να δει πως δουλεύουν αυτά τα αντικείμενα κάνοντας Insert > Object στο Word.

    Ουσιαστικά τα OLE Objects που αποθηκεύονται σε μία βάση Access είναι αυτά τα ενσωματωμένα data. Για να εμφανίσει αυτά τα παιδία η Access χρησιμοποιεί ένα ειδικό control (το οποίο λεγόταν OLE Control? OLE Bound control?), υπό την προϋπόθεση πάντα ότι η εφαρμογή που μπορεί να εκτελέσει το OLE Object είναι εγκατεστημένη στον υπολογιστή. Διαφορετικά θα δείξει μόνο ένα thumbnail (αν υπάρχει κάτι τέτοιο αποθηκευμένο).

    Το περιεχόμενο ενός OLE Object δεν είναι εικόνες, Excel sheets, Word documents ή οποιοδήποτε άλλο file format.  Έχει μία πολύ συγκεκριμένη δομή η οποία περιλαμβάνει το είδος του αντικειμένου και τα δεδομένα του (αυτά μπορεί να είναι εικόνες κλπ), με τη μορφή που θέλει να τα αποθηκεύει η εφαρμογή που έφτιαξε το αντικείμενο. Συνήθως, υπάρχει ένας header και μετά ακολουθούν τα raw data π.χ. του jpg ή του doc. Η εφαρμογή όμως μπορεί άνετα να τα αποθηκεύσει σε οποιαδήποτε μορφή ή να αποθηκεύει πολλαπλά έγγραφα μαζί, να αποθηκεύσει properties όπως π.χ. τη διάσταση που θέλεις να έχει το αντικείμενο κλπ. Δυστυχώς, τω καιρώ εκείνο το μόνο API που υπήρχε (και υπάρχει ακόμα) είναι σε C. Πρέπει να ψάξεις στο Windows SDK για structured storage.

    Μία λύση είναι, εφόσον ξέρεις ποιοί είναι οι τύποι των αρχείων και πως ξεχωρίζουν μεταξύ τους, να διαβάσεις τα objects στη μνήμη και να αποθηκεύσεις μετά στο σκληρό μόνο το κομμάτι μετά τον header. Μπορείς π.χ. να έχεις κάπου μία λίστα με τους headers διαφόρων γνωστών τύπων αρχείων και να ψάχνεις κάθε object αν περιέχει κάποιον από αυτούς.

    Μία μπακάλικη λύση, η οποία δεν ξέρω αν μπορεί να δουλέψει, είναι να σώσεις όλο το object και μετά να το ανοίξεις στον Internet Explorer. Ο ΙΕ ίσως να καταλάβει τί τύπου είναι το αντικείμενο και να το ανοίξει.

    Πώπω, η ερώτηση αυτή με πήγε .............

    15 χρόνια πίσω, όταν προσπαθούσα κι εγώ να καταλάβω τί είναι το OLE και τί είναι το Structured Storage!


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems