Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   PDF in Blob speichern mit seltsamen Effekten (https://www.delphipraxis.net/177939-pdf-blob-speichern-mit-seltsamen-effekten.html)

DeddyH 9. Dez 2013 16:51

AW: PDF in Blob speichern mit seltsamen Effekten
 
Zitat:

Sicherheitshalber versuch ich es auch einfach mal mit Append.
:stupid:

Perlsau 9. Dez 2013 16:57

AW: PDF in Blob speichern mit seltsamen Effekten
 
Zitat:

Zitat von chuckholdt (Beitrag 1239148)
Bin nicht ganz sicher, wie die Felder arbeiten, aber du gibts den Stream vor dem POST frei, das könnte zu komischen Effekten führen.

Was sind denn "komische Effekte"? Davon hab ich noch nie was bemerkt! Wieso sollte es den Eintrag in der Datenbank jucken, wenn der Stream, der ihn geliefert hatte, abkratzt? Genau so gut könntest du in einer lokalen Procedure Zuweisungen an DB-Felder machen und in einer anderen Procedure dann erst mit Post abschließen:
Delphi-Quellcode:
Procedure Zuweisen;
Var
  Feld1 : Integer;
  Feld2 : String;
  Feld3 : Boolean;
Begin
  Feld1 := Self.Tag;
  Feld2 := Application.ExeName;
  Feld3 := Self.WindowState = wsMaximized;
  MyDataSet.FieldByName('Field1').AsInteger := Feld1;
  MyDataSet.FieldByName('Field2').AsString := Feld2;
  MyDataSet.FieldByName('Field3').AsBoolean := Feld3;
End;

Procedure NeuerEintrag;
Begin
  MyDataSet.Append;
  Zuweisen;
  MyDataSet.Post;
End;
Was meinst du: würde das funktionieren oder ergäbe das eine Fehlermeldung?

jobo 10. Dez 2013 06:35

AW: PDF in Blob speichern mit seltsamen Effekten
 
Ich hab mal diese Variante von swissdelphicenter probiert:
http://www.swissdelphicenter.ch/torr...de.php?id=1271

Funktioniert mit Oracle OLEDB und MS OLEDB über Oracle ODBC unter Delphi 5. Hab allerdings ein paar Bilder zum Test genommen und der Code musste bei der Blob Variable auf Typ TStream umgestellt werden.

Das läuft sowohl bei einer AdoQuery innerhalb eines Inserts oder als Update eines bestehenden Records.

Jumpy 10. Dez 2013 08:57

AW: PDF in Blob speichern mit seltsamen Effekten
 
Zitat:

Zitat von DeddyH (Beitrag 1239160)
Zitat:

Sicherheitshalber versuch ich es auch einfach mal mit Append.
:stupid:

Ich weiß ja, Yoda sagt es gibt kein "Versuchen". Man muss es einfach nur tun.
Das zeigt halt, dass ich schon bereit bin mich an Strohhalme zu klammern, weil ich nicht verstehe, wie das Problem zustande kommt.

Wie gesagt ich kriegt ja die Files in die DB geschrieben und ich krieg sie ja wieder ausgelesen, das Vorgehen funktioniert ja prinzipiel. Nur kommt halt manchmal die falsche Datei beim wieder auslesen raus. Und bevor jetzt einer Meckert: Ich hab das im Debugger durchgespielt, ich hab das direkt and er SQL-Console durchgespielt, es kommt nicht zu ID Verwirrungen, ich fordere genau die Datei an, die ich haben will nur kommt (in den unerklärlichen problemtischen Fällen) nicht die raus, die ich will.

Bzgl. Streams freigeben:
Ich hab per Trial and Error festgestellt, dass man bei meiner Methode die Streams for dem .Post freigeben muss. Es macht aber auch irgendwo Sinn, dass der Stream, nachdem er in den Datensatz geschrieben wurde geschlossen werden muss bevor ich den Datensatz an die DB poste. Soweit ich mich erinnere kam dann keine Fehlermeldung oder so, es war einfach nichts in der DB, bzw. das Feld ID und das Feld Typ waren wohl in der DB angekommen, aber das Blobfeld blieb leer.

Ich baue mir gerade eine Testumgebung, wo ich mal ein paar eurer vorgeschlagenen Varianten durchspielen will. Bei dem Link von Jobo scheint es ja so zu sein, das die Datenmenge gar nicht mit Edit/Insert und Post "behandelt" wird. Muss das nicht, oder ist das wie bei Perlsau so, dass das in der vorgeschalteten Prozedur gemacht wird?
Das blob.Seek sollte doch eigentlich nicht nötig sein, da der Zeiger nach dem Öffnen des Streams doch eh noch am Anfang stehen sollte, oder?

jobo 10. Dez 2013 09:24

AW: PDF in Blob speichern mit seltsamen Effekten
 
Das Dataset.Edit mache ich in meinem Test manuell per Navigator, entweder gar nicht, weil Insert gedrückt oder halt Navigator.Edit gedrückt.
Das blob.seek ist vielleicht ein "Erfahrungswert", der Dir fehlt. :)

Ansonsten bin ich mir nach Deinen Beiträgen nicht sicher, dass Du tatsächlich die richtigen Treiber verwendest.
In meinem Fall jedenfalls Oracle Instant Client mit OLEDB und ODBC.
Für die Connection entweder direkt Oracle OLEDB oder den Umweg über
MS OLEDB ODBC, dort dann Oracle ODBC Treiber des Instant Client.

In meinem Fall ein 11er Treiber, 11.2 auf einer 10.2er DB.

Jumpy 10. Dez 2013 16:34

AW: PDF in Blob speichern mit seltsamen Effekten
 
Ich hab auch einen 11er Client installiert und gehe auf eine 10er DB.
Welchen Treiber meinst du denn, dass ich den falsch habe?

Der OBDC-Treiber ist der von Oracle: Oracle in OraClient11g_home1.

Oder meinst du den Provider aus dem Connection-String der ADO-Komponente?
So wird der ConnectionString zusammengebaut:

Code:
cs:= 'Provider=MSDASQL.1;'+
     'Persist Security Info=True;'+
     'User ID= ' + UID(v) +';'+
     'Data Source= '+DBName(v) +';'+
     'Password=' + PW(v);


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.
Seite 2 von 2     12   

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