BLOB u. Paradox - wie?



  • Was soll das helfen?

    Ich kann mit Wörtern die ich in der Hilfe nachschlagen soll nichts anfangen. In der Hife suchen kann ich auch ohne Forum.

    Was ich brauche, ist ein Beispiel-Quellcode, wie man Blob-Objekte einpflegt/ändert/abfrägt.

    Martin



  • Also ich finde mich in der Hilfe gut zurecht.
    Da gibt es doch zu TBlobStream einige Beispiele, wie du Daten lesen bzw. schreiben kannst.
    Mit diesen Beispielen sollte es auch dir möglich sein, deine Anforderung zu bewältigen 😉



  • Original erstellt von thunder1902:
    In der Hife suchen kann ich auch ohne Forum.

    Dann mach das doch auch mal, und zwar zuerst! 😉
    Wenn du dann noch Fragen hast kannst du dich an das Forum wenden.

    Ansonsten siehe auch hier.



  • Komisch daß man ein Standard-Brief parat hat. Vielleicht haben ja noch mehr Leute mit der Hilfe Schwierigkeiten und vielleicht ist ja die Ach-so-tolle Hilfe etwas unübersichtlich. Wenn ich ein Problem habe, dann will ich es so schnell wie möglich gelöst haben. Und ich will mich auch nicht intensiv mit der Hilfe beschäftigen!
    Microsoft kann's ja auch!

    Trotz lesen der Hilfe besteht mein Problem weiter.. was sagste nun??

    Martin



  • Original erstellt von thunder1902:
    Trotz lesen der Hilfe besteht mein Problem weiter.. was sagste nun?

    Wie wär's damit: "ich bezweifle, dass du dich ernsthaft mit der Hilfe auseinandergesetzt hast"?

    Denn sonst hättest du uns doch sicher konkret mitgeteilt, was du probiert hast, und wo genau du Probleme mit den Beispielen aus der Hilfe hast.



  • Hi!

    Ich hab jetzt mal folgendes probiert, um ein Bild in die Datenbank zu bringen:

    Ich habe einen TTable, eine TDataSource, einen DBNavigator die ich untereinander "bekannt" gemacht habe.

    ich habe eine Datenbank, wo ein Feld (Grafik) ein Blob-Grafik-Feld ist. Darin möchte ich eine Grafik reinladen. Ich habs wie folgt probiert:

    -------schnapp-----
    TStream *blobStream;
    Table1->Edit();
    try{
    blobStream=Table1->CreateBlobStream(Table1->FieldByName("Grafik"),bmWrite);
    DBImage1->Picture->Bitmap->SaveToStream(blobStream);
    }
    catch(...){
    if (blobStream) delete blobStream;
    }
    Table1->Post();
    ------schnipp--------

    Nur leider funktioniert's nicht .Es gibt auch keine Fehlermeldungen - das BIld wird nur nicht gespeichert....:-(

    Kann mir denn niemand einen Beispiel-Quellcode schicken???

    Martin



  • Hat denn niemand einen Beispiel Code?????

    Martin



  • habe noch irgendwo ein beispiel.

    schick mir Deine mail adresse, falls immer noch interesse besteht

    epidemic



  • Hallo Epidemic!

    Da ich nirgend wo Deine E-Mailadresse herausbekommen kann - hier ist mal meine:

    cablesky@web.de

    Danke schonmal für Deine Hilfe!!!!



  • ... so hat's bei mir geklappt.
    Gruss an die Gemeinde, Hermann

    // -- insert Mesaurement into DB --------------------------------------------
    
       TDateTime ZS; // Zeitstempel
    
       Query4->Close();
       Query4->SQL->Clear();
       Query4->SQL->Add("INSERT INTO MEASVAL (TIME_STAMP,        \
                                              ENGINE_ID,         \
                                              CYL_NO,            \
                                              SENSOR_SERIAL_NO,  \
                                              MEASVAL,           \
                                              ANGLE)  ");
    
       Query4->SQL->Add("VALUES  (:Zeitstempel,          \
                                  :Engine_ID,            \
                                  :Cyl_No,               \
                                  :Sensor_Serial_No,     \
                                  :MeasVal,              \
                                  :Angle) ");
    
        ZS = (TDateTime)Now();
    
       Query4->ParamByName("Zeitstempel")->AsDateTime = ZS;
       Query4->ParamByName("Engine_ID")->AsString = "Engine No. 0815";
       Query4->ParamByName("Cyl_No")->AsSmallInt = 1;
       Query4->ParamByName("Sensor_Serial_No")->AsString = "Sensor No. 4711";
       Query4->ParamByName("MeasVal")->SetBlobData(MeasData, max * sizeof(float));
       Query4->ParamByName("Angle")->SetBlobData(MeasData, max * sizeof(float));
    
    /*
       Beispiel: Ein Vektor eingelesen
       Query3->ParamByName("MeasVal")->SetBlobData(MeasData.begin(),
                                               Messwerte.size()* sizeof(float) );
    */
    
       Query4->ExecSQL();
    
    ...
    ...
    
    // ------ und so geht das Auslesen ------------------------------------------
    
          qry_Q->Close();
          qry_Q->SQL->Clear();
    
          // Ergebnisse in temp. SQL-Felder legen. Dies ist m?ch, da nur ein Ergebnis
          // erwartet wird
          qry_Q->SQL->Add("SELECT TIME_STAMP AS Zeitstempel, \
                                  CYL_NO AS Cyl_No,          \
                                  MEASVAL AS MeasVal,        \
                                  ANGLE AS Angle             \
                            FROM MEASVAL                     \
                            WHERE TIME_STAMP = :Time_Stamp AND  CYL_NO = :Cyl_No") ;
    
          qry_Q->ParamByName("Cyl_No")->AsInteger = c;
          qry_Q->ParamByName("Time_Stamp")->AsDateTime = dd;
    
          qry_Q->Open();
    
          // auslesen
          dt =  qry_Q->FieldByName("Zeitstempel")->AsDateTime;
          int Zylinder_Nr = qry_Q->FieldByName("Cyl_No")->AsInteger;
    
          // ein BLOB-Stream einrichten
          TBlobStream *bs_BLOB =
                new TBlobStream((TBlobField*)Table1->FieldByName("MeasVal"), bmRead);
    
          int BLOBSize = bs_BLOB->Size;         // Gesamtl?e in Bytes
          bs_BLOB->Read(ff, BLOBSize);          // BLOB in das Feld schreiben
    
          delete bs_BLOB;                       // wichtig, ist nicht wiederverwendbar
    
          // anzeigen
          Label1->Caption = dt;
          Label5->Caption = Zylinder_Nr;
          Memo3->Clear();
    
          for (unsigned  i = 0; i < BLOBSize/sizeof(float); i++)
             Memo3->Lines->Add(ff[i]);
    

    Edit:
    Bitte die Code-Tags benutzen. Danke!

    [ Dieser Beitrag wurde am 20.02.2003 um 19:00 Uhr von Jansen editiert. ]



  • ...ehm, sorry, sollte noch dazusagen, ich lese und schreibe die BLOB-Daten aus einem float-Feld z.B.
    float MeasData[1000], ff[1000]
    wie's aus einem Vector geht, steht im Kommentar.
    Hermann


Anmelden zum Antworten