Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Blob filtern (https://www.delphipraxis.net/102883-blob-filtern.html)

Lill Jens 6. Nov 2007 14:41

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

Blob filtern
 
Ich muss euch leider schon wieder nerven...

Ich filtere mein Table

Delphi-Quellcode:
tMit.Filter:= 'Lichtbild= '+ QuotedStr ('');
tMit.Filtered:= true;
Allerdings muss ich jetzt auch die Table auf Bild (gespeichert in Blob) filtern.

Allerdings speichert es ja die Bilder nicht in die *.DB sonder in die *.MB

Wie filter ich da?


thx.4.cmts

Lill Jens :coder2:

shmia 6. Nov 2007 15:01

Re: Blob filtern
 
Blobs können (in aller Regel *) nicht gefiltert werden.
Blobdaten sind auch über SQL nicht direkt zugänglich.
Man kann also nicht schreiben:
SQL-Code:
SELECT * FROM Tabelle WHERE Blobfeld = 0x00FFA0A13244290D0A
Das Laden und Speichern von Blobdaten ist im Vergleich zu anderen Feldern relativ zeitintensiv.
Du könntest im Event OnFilterRecord den Blob laden und mit Solldaten vergleichen.
Wobei ich mich frage wozu man Blobdaten vergleichen möchte. Passbildvergleich ??

*) Manche Datenbanken haben eine Volltext Search Engine

Lill Jens 6. Nov 2007 15:07

Re: Blob filtern
 
Zitat:

Zitat von shmia
Blobs können (in aller Regel *) nicht gefiltert werden.
Blobdaten sind auch über SQL nicht direkt zugänglich.
Man kann also nicht schreiben:
SQL-Code:
SELECT * FROM Tabelle WHERE Blobfeld = 0x00FFA0A13244290D0A
Das Laden und Speichern von Blobdaten ist im Vergleich zu anderen Feldern relativ zeitintensiv.
Du könntest im Event OnFilterRecord den Blob laden und mit Solldaten vergleichen.
Wobei ich mich frage wozu man Blobdaten vergleichen möchte. Passbildvergleich ??

*) Manche Datenbanken haben eine Volltext Search Engine

Was ich damit erreichen will ist, dass ich nur die Mitarbeiter anzeigen lasse, bei denen ein Bild hinterlegt ist. (die datenbank mit den blob feldern wurde mir vorgegeben und kann ich leider nicht verändern)

Ich will also schauen ob in der Datenbank ein Bild hinterlegt ist.

DeddyH 6. Nov 2007 15:23

Re: Blob filtern
 
Je nach Definition kannst Du das Bildfeld auf NULL abfragen.

RavenIV 7. Nov 2007 08:06

Re: Blob filtern
 
Du könntest auch den Blob auslesen.
Wenn die Grösse des Blobs relativ klein (oder 0) ist, dann wird wohl kein Bild hinterlegt sein.

Lill Jens 8. Nov 2007 08:46

Re: Blob filtern
 
Wie les ich den die größe aus?

oder wie frag ich auf NULL ab?


Thx für eure antworten...

DeddyH 8. Nov 2007 09:06

Re: Blob filtern
 
SQL-Code:
SELECT * FROM Tabelle WHERE Blobfeld IS NOT NULL

Lill Jens 8. Nov 2007 09:37

Re: Blob filtern
 
Zitat:

Zitat von DeddyH
SQL-Code:
SELECT * FROM Tabelle WHERE Blobfeld IS NOT NULL

Das geht doch nur wenn ich eine SQL Datenbank verwende, ich bin allerdings an eine Paradox Datenbank gebunden (leider). Gibts dafür auch eine Möglichkeit?

RavenIV 8. Nov 2007 09:38

Re: Blob filtern
 
Zitat:

Zitat von Lill Jens
Zitat:

Zitat von DeddyH
SQL-Code:
SELECT * FROM Tabelle WHERE Blobfeld IS NOT NULL

Das geht doch nur wenn ich eine SQL Datenbank verwende, ich bin allerdings an eine Paradox Datenbank gebunden (leider). Gibts dafür auch eine Möglichkeit?

Du kannst doch bei Paradox / BDE auch SQL-Code ausführen.
Oder hast Du ein anderes Problem?

Lill Jens 8. Nov 2007 09:51

Re: Blob filtern
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von Lill Jens
Zitat:

Zitat von DeddyH
SQL-Code:
SELECT * FROM Tabelle WHERE Blobfeld IS NOT NULL

Das geht doch nur wenn ich eine SQL Datenbank verwende, ich bin allerdings an eine Paradox Datenbank gebunden (leider). Gibts dafür auch eine Möglichkeit?

Du kannst doch bei Paradox / BDE auch SQL-Code ausführen.
Oder hast Du ein anderes Problem?

Wenn des geht hab ich ein anders Problem, nämlich das ich mich noch nicht damit auskenne argh :wall:

Lill Jens 9. Nov 2007 12:24

Re: Blob filtern
 
Okay ich hab jetzt ein Query und hab das Query mit meiner DataSource verbunden.
Den SQL Befehl hab ich auch eingetragen

SQL-Code:
SELECT * FROM Mit WHERE Lichtbild IS NOT NULL
allerdings funktioniert der Filter nicht.

Hab ich was vergessen?

mkinzler 9. Nov 2007 12:34

Re: Blob filtern
 
Welcher Filter jetzt?

Lill Jens 12. Nov 2007 09:13

Re: Blob filtern
 
Zitat:

Zitat von mkinzler
Welcher Filter jetzt?

Ja wenn ich den SQL Befehl eingeb müsste er doch eigentlich schon filtern, oder?

marabu 12. Nov 2007 09:27

Re: Blob filtern
 
Hallo,

dein SQL-Statement ist völlig in Ordnung.

Übrigens: Du kannst deine SQL-Statements zuerst in der Borland "Datenbankoberfläche" testen, bevor du sie in dein Programm übernimmst.

Grüße vom marabu

Lill Jens 12. Nov 2007 09:36

Re: Blob filtern
 
Zitat:

Zitat von marabu
Hallo,

dein SQL-Statement ist völlig in Ordnung.

Übrigens: Du kannst deine SQL-Statements zuerst in der Borland "Datenbankoberfläche" testen, bevor du sie in dein Programm übernimmst.

Grüße vom marabu

Das Problem ist nur er filtert nicht...

mkinzler 12. Nov 2007 09:44

Re: Blob filtern
 
Dann ist der wert des Blobfeldes auch bei keinem Bild nicht NULL.

Lill Jens 12. Nov 2007 10:12

Re: Blob filtern
 
Zitat:

Zitat von mkinzler
Dann ist der wert des Blobfeldes auch bei keinem Bild nicht NULL.

sehr schlecht...anders überprüfen ist nicht möglich oder?

danke mkinzler für deine hilfe :thumb:

HeDoc 15. Nov 2007 00:02

Re: Blob filtern
 
Hallo Lill Jens,

Zitat:

Zitat von Lill Jens
sehr schlecht...anders überprüfen ist nicht möglich oder?

Doch, klar!
Du kannst das Ereignis "OnFilterRecord" verwenden:
Überleg dir, woran du erkennst, ob ein Datensatz ein Bild enthalten kann.
z.B. prüf die Länge mit einem Stream

Delphi-Quellcode:
procedure MeinTableFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
var
  MS: TMemoryStream;
begin
  MS := TMemoryStream.Create;
  try
    fieldbyname('Blobfeld').SaveToStream(MS);
    MS.position:=0;
    Accept:=MS.Size>100; // so klein wird kein Bild sein
  finally
    MS.Free;
  end;
end;
So kannst du mit deinem Code jeden Datensatz prüfen lassen, ob er zu der gefilterten Datenmenge gehören soll.

Gruß
HeDoc

marabu 15. Nov 2007 05:52

Re: Blob filtern
 
Moin,

Zitat:

Zitat von Lill Jens
Ich will also schauen ob in der Datenbank ein Bild hinterlegt ist.

das funktioniert mit einem Test auf NULL problemlos, so wie es Deddy ja schon in Beitrag #4 vorgeschlagen hat. Wenn das Ergebnis trotzdem nicht zufrieden stellt, dann sollte zuerst untersucht werden, wie es dazu kommt, dass ein Test auf NULL negativ verläuft, obwohl kein Bild gespeichert ist.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz