Ich filtere ja die TTable vorher auf einen bestimmten Datensatz und wenn ich dann "open" machen müsste doch dieser Datensatz geöffnet werden, oder?
Im Grunde schon, wenn Filtered auf True steht und wenn der Filter überhaupt einen Datensatz zurückliefert. Ich würde hier besser Locate einsetzen. Ansonsten kann ich nicht viel mehr drüber sagen, denn mir ist der Status deiner Anwendung zum Zeitpunkt des Aufrufs der Einlese-Funktion nicht bekannt. Wäre mir jetzt auch zu viel Arbeit, deinen ganzen Programmcode durchzuforsten, um zu sehen, wo irgendwas nicht paßt.
Wieso beläßt du die Function zum Einlesen der PDF-Datei in ein Blobfeld nicht so, wie ich sie dir gezeigt habe, und erledigst alles andere in der aufrufenden Methode? Dann könntest du nämlich deine Daten_To_Blob-Funktion für alle denkbaren Fälle verwenden, auch zum Einlesen von Bildern oder sonstwas, auch zum Einlesen in andere Blob-Felder usw. Zudem würde dein Code dadurch übersichtlicher. Lokalisiere also in der aufrufenden Methode den gewünschten Datensatz, setze deine Table-Komponente auf Append, Insert oder Edit, rufe die Einlese-Function auf und übergebe ihr die beiden Parameter Dateiname und Blobfeld, und danach machst du in der aufrufenden Methode Post und gibst die erzeugte Table-Komponente wieder frei. Das wäre sauberer Programmierstil. Unsauber ist es, wenn man versucht, alles in eine Funktion oder Prozedur zu quetschen.