AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Blob Fehler: Blob nicht geöffnet
Thema durchsuchen
Ansicht
Themen-Optionen

Blob Fehler: Blob nicht geöffnet

Ein Thema von Benutzername · begonnen am 18. Apr 2004 · letzter Beitrag vom 19. Jul 2006
Antwort Antwort
Benutzername

Registriert seit: 18. Apr 2004
7 Beiträge
 
#1

Blob Fehler: Blob nicht geöffnet

  Alt 18. Apr 2004, 11:04
hallo ihrs

ich habe in meiner paradox DB unter anderem bilder (jpegs) in blob feldern abgespeichert.

speichern funktioniert wunderbar. wenn ich mir die bilder aber nach dem speicher anzeigen lassen möchte bekomme ich immer den Fehler "Blob nicht geöffnet"

wenn ich die DB schließe (alle Tables auf Active = false) und dann wieder öffne (alle Tables Active = true) werden die bilder normal und ohne Fehler angezeigt. füge ich wieder ein bild hinzu bekomme ich wieder den fehler.

hier mal die komplette funktion die die bilder schreibt

Delphi-Quellcode:
function TDB.AddVolume(const Serial: string; const VolumeType: Integer;
  const Title, Description, Tags: string; Picture: string;
  const IsPrivate: Boolean): Boolean;
var
  blob: TStream;
  Jpeg: TJpegImage;
begin
  Result:= true;
  try
    Jpeg:= TJpegImage.Create;
    try
      with FTableVolume do begin
        Append;
        FieldByName('Serial').AsString:= Serial;
        FieldByName('Type').AsInteger:= VolumeType;
        FieldByName('Title').AsString:= Title;
        FieldByName('Description').AsString:= Description;
        FieldByName('Tags').AsString:= Tags;
        FieldByName('Private').AsBoolean:= IsPrivate;
        blob:= CreateBlobStream(TBlobField(FieldByName('Picture')), bmWrite);
        if Length(Picture) > 0 then begin
          Jpeg.LoadFromFile(Picture);
          ResizeJpeg(Jpeg);
        end;
        Jpeg.SaveToStream(blob);
        Post;
      end;
    except
      Result:= false;
    end;
  finally
    FreeAndNil(blob);
    FreeAndNil(Jpeg);
  end;
end;
die anzeige procedure ist aus platz und übersichts günden nicht komplett. das wesendliche ist aber zu sehn

Delphi-Quellcode:
procedure THtml.GeneratePage(Params: TStringList; const Save: Boolean);
var
  Page: string;
  Mode: string;
  ID: string;
  cnt: Integer;
  Jpeg: TJpegImage;
  blob: TStream;
begin
  FHtmlPage.New;
  Page:= Params.Values['Page'];
  Mode:= Params.Values['Mode'];
  ID:= Params.Values['ID'];

  Jpeg:= TJpegImage.Create;
  try
    if Page = 'Volumethen begin
      GenerateListPage;
      with FHtmlPage do begin
        if (Mode = 'Show') and (Params.Values['Type'] <> '') and (ID = '') then
        begin
          ClearTmp;
          AddLine(1, '<div id="Text" align="center">Pfad:');
          AddLine(2, '[url="Browse.html?Page=Volume&Mode=Show&Cancel=false"]Datenträger[/url]/' + FDB.VolumeTypeToStr(TVolumeType(StrToInt(Params.Values['Type']))));
          AddLine(1, '</div>');
          AddLine(1, '<table border="0" width="100%">');
          FDB.TableVolume.IndexName:= 'Type';
          FDB.TableVolume.SetKey;
          FDB.TableVolume.FieldByName('Type').AsInteger:= StrToInt(Params.Values['Type']);
          if FDB.TableVolume.GotoKey then begin
            FDB.TableVolume.IndexName:= 'Title';
            FDB.TableVolume.First;
            while not FDB.TableVolume.EOF do begin
              blob:= FDB.TableVolume.CreateBlobStream(TBlobField(FDB.TableVolume.FieldByName('Picture')), bmRead);
              ID:= FDB.TableVolume.FieldByName('ID').AsString;
              AddLine(2, '<tr>');
              AddLine(3, '<td colspan="4"><div align="center">[img]Images/LineHSmall.jpg[/img]</div></td>');
              AddLine(2, '</tr>');
              AddLine(2, '<tr>');
 
              // ----------------------------------
              Jpeg.LoadFromStream(blob); // <-------------------------- hier wird der Fehler angezeigt
             // -----------------------------------

              FreeAndNil(blob);
              if (Jpeg.Height = 0) and (Jpeg.Width = 0) then begin
                AddLine(3, '<td>[img]Images/NoPicture.jpg[/img]</td>');
              end else begin
                Jpeg.SaveToFile(FApp.AppInfo.Dir + '\Images\Tmp\Volume' + ID + '.jpg');
                FTmpFiles.Add('Volume' + ID + '.jpg');
                AddLine(3, '<td>[img]Images/Tmp/Volume' + ID + '.jpg[/img]</td>');
              end;
              AddLine(3, '<td width="40%">');
              AddLine(4, '<div id="MainText">[url="Browse.html?Page=Volume&Mode=Show&Type=' + Params.Values['Type'] + '&ID=' + ID + '&Cancel=false"]' + FDB.TableVolume.FieldByName('Title').AsString + '[/url]</div>');
              if FDB.TableVolume.FieldByName('Private').AsBoolean then begin
                AddLine(4, '<div id="Text">Privat</div>');
              end else begin
                AddLine(4, '<div id="Text">Öffentlich</div>')
              end;
              AddLine(3, '</td>');
              AddLine(3, '<td width="50%"><div id="Text">' + FDB.TableVolume.FieldByName('Description').AsString + '</div></td>');
              AddLine(3, '<td width="10%">');
              AddLine(4, '<div align="right">[url="Browse.html?Page=Volume&Mode=Edit&ID=' + ID + '&Cancel=false"][img]Images/GotoEdit.jpg[/img][/url]');
              AddLine(4, '<div align="right">[url="Browse.html?Page=Volume&Mode=Show&Type=' + Params.Values['Type'] + '&ID=' + ID + '&Action=DeleteVolume&Cancel=false"][img]Images/GotoDelete.jpg[/img][/url]');
              AddLine(3, '</td>');
              AddLine(2, '</tr>');
              FDB.TableVolume.Next;
            end;
          end else begin
            AddLine(2, '<tr>');
            AddLine(3, '<td><div align="center">[img]Images/LineHSmall.jpg[/img]</div></td>');
            AddLine(2, '</tr>');
            AddLine(2, '<tr>');
            AddLine(3, '<td><div id="Text" align="center">Keine Elemente in dieser Ansicht</div></td>');
            AddLine(2, '</tr>');
          end;
          FDB.TableVolume.CancelRange;
          AddLine(1, '</table>');
          ReplaceParam('Bottom', TmpHtml);
        end;
      end;
    end;

    FHtmlPage.CloseParams;
    if Save then FHtmlPage.SaveToFile(FApp.AppInfo.Dir + '\Browse.html');
  finally
    FreeAndNil(Jpeg);
    FreeAndNil(blob);
  end;
end;
der fehler wird auch produziert wenn ich den blob mit assigned prüfe. auch wenn ich die größe (mit size) des blobs prüfe oder mit isNull. sobald ich auf das blob zugreife erscheint die fehlermeldung.

ich hoffe jemand hat eine idee oder schon mal einen änlichen fehler gehabt. ich komme einfach nicht dahinter

danke schon mal im vorraus

mfg Benutzername
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#2

Re: Blob Fehler: Blob nicht geöffnet

  Alt 18. Apr 2004, 15:28
hallo benutzername,

willkommen in der delphipraxis.

versuche mal deine daten direkt mirt der bde api zu speichern:if dbisavechange(table1.handle)= dbierr_none then showmessage('daten gesichert');
paradox hat nämlich die angewohnheit nur zu speichern, wenn sie will

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzername

Registriert seit: 18. Apr 2004
7 Beiträge
 
#3

Re: Blob Fehler: Blob nicht geöffnet

  Alt 18. Apr 2004, 16:48
Danke für die Antwort

gespeichert werden die Bilder problemlos. nur wenn ich sie nach dem speichern anzeigen will bekomme ich die meldung. wenn ich die DB öffne ohne ein bild zu speichern bekomme ich keine meldung und die bilder werden korrekt angezeigt. speichere ich wieder ein bild kommt der fehler. schließe ich die DB und öffne sie weider werden die bilder wieder korrekt angezeigt.



ich schnall nur nicht warum?!?
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#4

Re: Blob Fehler: Blob nicht geöffnet

  Alt 18. Apr 2004, 16:51
mit der api von oben, wird die Table garantiert gespeichert, paradox speichert z.b. beim beenden des programmes.ansonsten wird es physikalisch nicht gespeichert. speichere mit der api ab und das blob ist garantiert in der db, so wird es immer im speicher gehalten .

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzername

Registriert seit: 18. Apr 2004
7 Beiträge
 
#5

Re: Blob Fehler: Blob nicht geöffnet

  Alt 23. Apr 2004, 15:22
oki danke dir!
  Mit Zitat antworten Zitat
Fritz01

Registriert seit: 22. Mär 2006
Ort: Großenkneten
181 Beiträge
 
Delphi 7 Professional
 
#6

Re: Blob Fehler: Blob nicht geöffnet

  Alt 18. Jul 2006, 21:39
Hallo Benutzername,
habe die gleiche Fehlermeldung und komme da nicht weiter.
Benutze D5 und Dbase Tabelle.
mit nachfolgendem Code sollte es doch funktionieren.
Wo liegt da mein Fehler? Für Lösung wäre ich dankbar.
Fritz01


Delphi-Quellcode:
procedure TDemoForm.WriteButtonClick(Sender: TObject);
var
 s: TStream;
 jpeg:TJpegImage;
begin
 try
  Jpeg:=TJpegImage.Create;
  try
   with Table do begin
    Append;
    s:= CreateBlobStream(TBlobField(FieldByName('jpg')), bmWrite);
    Jpeg.SaveToStream(s);
    Post;
   end;
  except
   ShowMessage('Bild nicht gespeichert');
  end;
 finally
  FreeAndNil(s);
  FreeAndNil(jpeg);
  ShowMessage('Bild gespeichert');
 end;
end;
Fritz
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Blob Fehler: Blob nicht geöffnet

  Alt 19. Jul 2006, 08:11
Hallo,

neben dem erwähnten DbiSaveChanges(Table.Handle)
würde ich noch ein Table.Refresh machen.


Heiko

PS:
Oder besser gleich weg von Paradox
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz