Moin,
ich habe zwei Datenbanken. Eine läuft auf einem Webserver (nennen wir diese WEB) und eine im Büro (nennen wir die Office). Auf dem Server im Büro läuft ein von mir entwickelter Dienst, der alle fünf Minuten in WEB nachschaut, ob dort ein neuer Datensatz ist und ggfs. nach Office schaufelt. Die beiden Server sind über eine 512 MBit VPN verbunden. Das besondere Augenmerk liegt dabei auf dem pdf (_myRow[6]). Der Inhalt des Feldes PDF ist BASE64 kodiert. - In der
DB ist das ein BLOB - Feld.
Beschreibung des Service:
Mit folgender Routine wird jeweils 1 Datensatz in den Arbeitsspeicher geladen:
Delphi-Quellcode:
id := _myRow[0];
// ID
code := _myRow[1];
// Lizenzcode
user_code := _myRow[2];
// UserCode
nachricht := _myRow[3];
// eMail Nachricht
dossier := _myRow[4];
// Dateiname
f_xml := _myRow[5];
// XML-Datei
pdf := _myRow[6];
// PDF
Mit diesem Code werden diese Variablen in die Datenbank Office geschrieben:
(an dieser Stelle nicht geschriebene Variablen landen in anderen Tabellen)
Delphi-Quellcode:
stmp := '
INSERT INTO DOKUMENTE (zu_Akte,Typ,Dokument,Sachbearbeiter) VALUES ("'+aktenid+'
","Antrag","'+pdf+'
","eMail")';
mysql_select_db(_fddcon, '
Dokumente');
query := PCHAR(stmp);
speichercode := inttostr(mysql_real_query(_fddcon,
query, Length(
query)));
DatensatzID := inttostr(mysql_insert_id(_fddcon));
fehlercode := mysql_error(_fddcon);
Die Daten sind alle soweit da. Ob der Inhalt von PDF geschrieben wird, kann ich bis jetzt nicht nachvollziehen. Und das genau ist der Punkt. Mit meinem Auswertungsprogramm greife ich auf die
DB Office zu un versuche jetzt das pdf zu dekodieren und zu speichern um dann den Reader automatisch aufzurufen.
auch hier hab ich das Feld PDF wieder in einer Variablen (sTmp : string);
es wird mir eine Länge von 65535 Zeichen angezeigt (entspricht genau der Länge des BLOB-Feldes der Datenbank). Nach Dekodierung mit BASE64Decode bleiben 0 Byte über .... und das ist der Punkt...
Wo könnte da der Fehler stecken?
Gruss
EL