Announcement

Collapse
No announcement yet.

Synchronisation von Blob- Feldern

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

  • Synchronisation von Blob- Feldern

    Hallo,

    ich möchte blob- Felder von Tabellen synchronisieren.
    Habe bis jetzt folgenden Code:


    Sourcecode:


    procedure tdm_data.sync_blobfields(table: string);
    var i: integer;
    blob_source,blob_target: tadsblobstream;
    begin
    dm_data.q_target.SQL.Clear;
    dm_data.q_target.SQL.Add(select blobfields from.........);
    dm_data.q_target.Open;
    for i:= 0 to fmain.bloblist.Count-1 do begin //bloblist
    beinhaltet alle blob felder der tabelle
    try
    blob_source := tadsblobstream(q_source.CreateBlobStream
    (q_source.FieldByName(fmain.bloblist.strings[i]),bmRead));
    dm_data.q_target.edit;
    blob_target := tadsblobstream(q_target.CreateBlobStream(q_target. FieldByName(fmain.bloblist.strings[i]),bmReadWrite));
    blob_target.CopyFrom(blob_source,blob_source.size) ;
    dm_data.q_target.Post;
    finally
    blob_source.free;
    blob_target.free;
    end;
    end;
    dm_data.q_target.Close;
    end;



    Meine Fragen:

    1) Stimmt der Code grundsätzlich so ?

    2) Bekomme bei der Zeile dm_data.q_target.edit; immer
    die Fehlermeldung:

    "Eine Datenmenge, die nur zum Lesen ist, kann nicht
    geaendert werden"

    Wiso kommt diese Fehlermeldung ?

    3) Da in dieser Zeile was schief geht wird der
    finally-Block ausgefuehrt. Da aber blob_target noch
    nichts zugewiesen wurde, bekomme ich bei blob.free
    eine zugriffsverletzung. Deswegen habe ich den code
    so geaendert:

    Sourcecode:



    try
    ........
    finally
    if blob_source<> nil then
    blob_source.Destroy;
    if blob_target<>nil then
    blob_target.Destroy;
    end;



    Trotzdem bekomme ich aber noch eine
    Zugriffsverletzung. Wiso ?

    herzlichen dank fuer eure Hilfe

    Gruesse
    lkz633

  • #2
    oops, da wurde wohl was falsch formatiert,

    bitte entschuldigt dies unuebersichtliche Codezeilen,
    keiner sie leider nicht bearbeiten, weis nicht wiso

    Comment

    Working...
    X