Announcement

Collapse
No announcement yet.

Problem(e) mit Access und Bitmaps

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem(e) mit Access und Bitmaps

    Hallo,

    ich bin hier schier am verzeifeln. Also ich möchte ein im Speicher erzeugtes Bitmap in eine Access Tabelle spreichern. Allerdings gelingt es mit beim besten Willen nicht. Das Listning sieht ungefähr wie folgt aus:

    Vor Programmstart wird eine MDB Tabelle angelegt. Das Feld in dem die Bitmap gespeichert werden soll wird u.a. wie folgt angelegt. Beim Anlegen der Tabelle gibt es auch keine Probleme.

    vColName := 'GRAPH1'; //
    bTable.Columns.Append(vColName, adVarBinary, 0);

    Nach dem die Tabelle angelegt wurde, wird sie wie folgt gefüllt.

    Var
    babs :TMemoryStream;
    BMP_BILD1,BMP_BILD2:TBitmap

    Begin

    BMP_BILD1 :=TBitmap.Create;
    BMP_BILD1.Height :=31;
    BMP_BILD1.Width :=747;

    // Ab hier wird das Bild erstellt bzw auf ihm gezeichnet
    //

    BMP_BILD1.Canvas.Rectangle( TMP_IZ_VON,20,TMP_IZ_BIS,30);

    //
    // Ende des Zeichnen

    BABS := TMemoryStream.Create();

    BMP_BILD1.SaveToStream(BABS);

    // Die berühmten 78 Zeichen
    //
    BABS.Seek(78,sofrombeginning);

    BMP_BILD2 :=TBitmap.Create;

    // Hier lüft das programm schon auf // einen Fehler
    BMP_BILD2.LoadFromStream(babs);

    // Die Datenmenge befindet sich
    // im State dsInsert
    //
    DM14.CLFSSTAT.Append;
    DM14.CLFSSTAT.Fieldbyname('GRAPH1').Assign(BMP_BIL D2);

    DM14.CLFSSTAT.Post;

    // Hinterher werden die Bilder wieder gelöscht

    //
    BMP_BILD1.FreeImage;
    BMP_BILD2.FreeImage;

    end;



    Meine Frage ist nun konkret, was mache ich da falsche und ist der Feldtyp (ACCESS) richtig oder falsch.

    Vielen dank vorab für Eure Bemühungen.

    Gruss Heiko

  • #2
    Hallo,

    eine ACCESS-Datenbank hat keinen passenden nativen Datentyp für diese Aufgabe. Aus der Hilfe von ACCESS2002 stammt der folgende Satz: <i>"Als Datentypen sind Boolean, Integer, Long, Currency, Single, Double, Date, String und Variant (Standardwert) verfügbar."</i>

    Als "Notlösung" wird daher häufig zum Datentyp <b>OLE-Objekt</b> gegriffen (dies ist auch der Grund, warum die "magischen" 78 Byte übersprungen werden). Allerdings kann sich der OLE-Header in seiner Größe je nach MDB-Version ändern.

    P.S: Die MSDE ist für diese Aufgabe viel besser geeignet als eine ACCESS-MDB

    Comment


    • #3
      Hallo Herr Kosch,

      vielen Dank für Ihre schnelle Hilfe. Ich könnte vorerst mit dem Datentyp Ole-Object und den besagten 78 Bytes schon leben. Meine

      Frage wäre nun konkret, wenn ich die MDB Tabelle zur Laufzeit anlege (ADOX) welchen Feldtyp muß ich verwenden um das Bitmap darin speichern zu können?


      Gruß Heiko Schub

      Comment

      Working...
      X