Entwickler-Ecke
Datenbanken - Fehlermeldung bei Ändern von Blob
Hendrik - Do 31.01.08 14:28
Titel: Fehlermeldung bei Ändern von Blob
Hey!
Wenn ich versuche einen Blob in der Datenbank über
Delphi-Quelltext
1: 2: 3:
| table.edit; table.fieldbyname('Feld').asstring:=strinlist.text; table.post; |
zu ändern, bekomme ich folgende Fehlermeldung:
| Zitat: |
Connection is not defined
invalid BLOB ID
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. |
Was mache ich falsch? Zur Info: Ich benutze Firebird 2.0 mit Zeos 5.5.
mkinzler - Do 31.01.08 18:45
Blobs besser per Stream in einen Parameter schreiben.
Hendrik - Do 31.01.08 18:50
Ich konnte das Auftreten jetzt etwas näher eingrenzen:
Er tritt auf beim Ändern eines zweiten Blob-Feldes.
Also beispielsweise funktioniert folgendes:
Delphi-Quelltext
1: 2: 3:
| table.edit; table.fieldbyname('blob1').asstring:=strinlist.text; table.post; |
Das kann ich so oft ich will hintereinander machen. Ändere ich nun ein zweites Blob-Feld:
Delphi-Quelltext
1: 2: 3:
| table.edit; table.fieldbyname('blob2').asstring:=strinlist.text; table.post; |
Kommt der o.g. Fehler. Schließe und öffne ich die Tabelle vor dem Bearbeiten, klappt es ohne Probleme...
Welche Banalität hab ich übersehen bzw. nicht bedacht?
Hendrik - Do 31.01.08 19:10
mkinzler hat folgendes geschrieben: |
| Blobs besser per Stream in einen Parameter schreiben. |
Da ich die Felder gerne direkt über ein DBMemo bearbeiten würde, ist das etwas blöd... Muss ich vielleicht bei AfterPost irgendeinen Befehl eingeben?
Xentar - Do 31.01.08 19:12
DBMemo?
Dann nimm dafür doch ein varchar also String-Feld.
Blob ist eigentlich dafür gedacht, echte Daten (Bilder, (verschlüsselte) Dateien, usw) zu speichern.
Und wegen dem AfterPost:
Nö, normal nicht. Einfach Edit -> Neuen Wert rein -> Post, fertig.
hansa - Do 31.01.08 19:47
Xentar hat folgendes geschrieben: |
| ..Blob ist eigentlich dafür gedacht, echte Daten (Bilder, (verschlüsselte) Dateien, usw) zu speichern... |
Wieso denn das ? :shock: Noch nie was davon gehört, das es da Subtypes (Binary/Text) gibt ? DBMemo ist u.a. gedacht für Text-Blobs.
Hendrik - Do 31.01.08 20:06
Xentar hat folgendes geschrieben: |
DBMemo?
Dann nimm dafür doch ein varchar also String-Feld.
Blob ist eigentlich dafür gedacht, echte Daten (Bilder, (verschlüsselte) Dateien, usw) zu speichern.
|
Das hab ich auch schon versucht... Aber dann bräuchte ich 8 32000 Zeichen Varchar Felder und da hat er gemeckert, weil es wohl zu viel ist...
Hendrik - Do 31.01.08 21:04
Ja das ist soweit schon klar... Ich habe 80-Byte Typ 1 Blobs in der Tabelle definiert. Aber ich kann pro Tabelle nur max. einen (auch über DBMemo) bearbeiten. Da sollte ich ja noch irgendwas verbockt haben?
hansa - Do 31.01.08 21:29
Hendrik hat folgendes geschrieben: |
| ...Da sollte ich ja noch irgendwas verbockt haben? |
Nicht unbedingt. Das "nur einen" stört mich im Zusammenhang mit Zeos. Da geht auch "nur eine" Transaction (EDIT :pro Datenbankverbindung). Nicht, dass da irgendwo eine zweite im Spiel ist. :shock: Das stammt allerdings jetzt nicht von mir, sondern von der Glaskugel. 8) Ich würde versuchen, das Problem zu reduzieren und somit die Grenzen ausloten, wenn es sie denn geben sollte.
Hendrik - Do 31.01.08 21:49
Ja ich kann natürlich mehrere Blobs innerhalb eines Edit --> Post ändern. Aber danach nur noch die, die da drin standen...
Jetzt hab ich es umgangen, indem ich vor jedem Bearbeiten die Table schließe und wieder öffne, aber wirklich "sauber" ist das nicht :(
hansa - Fr 01.02.08 00:31
Hendrik hat folgendes geschrieben: |
| ...Jetzt hab ich es umgangen, indem ich vor jedem Bearbeiten die Table schließe und wieder öffne, aber wirklich "sauber" ist das nicht :( |
Wenn das geht, dann sind es wohl tatsächlich die Transaction-Einschränkungen bei Zeos. :shock: Bei Freeware-Komponenten kann das passieren.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!