AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Blob mit SQL nach Teilstring durchsuchen?
Thema durchsuchen
Ansicht
Themen-Optionen

Blob mit SQL nach Teilstring durchsuchen?

Ein Thema von Angel4585 · begonnen am 25. Okt 2005 · letzter Beitrag vom 28. Okt 2005
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 25. Okt 2005, 15:11
Problem dabei ist nur das mein Chef meinte ich soll alles in dieser einen Tabelle machen, am besten mit BLOBs und mein Chef ist im Moment auf der Systems
Martin Weber
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#12

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 25. Okt 2005, 15:26
Meint Dein Chef auch, dass Du das mit Paradox machen mußt. // Martin

PS: Systems steht auch noch auf der ToDo-Liste...
Martin Schaefer
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 25. Okt 2005, 15:40
Zitat von Angel4585:
mein Chef meinte
Hat dein Chef dir nur gesagt "schaff was bis ich wieder komm" oder hat er dir auch gesagt, was dabei heraus kommen soll? Hat er dir seine Anforderungen schriftlich gegeben? Daraus könnte man ableiten, ob eine Zeilenlängenbeschränkung auf 255 Zeichen akzeptabel ist oder nicht.

marabu
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#14

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 25. Okt 2005, 19:04
Hi Angel4585,

Zitat:
ich suche doch schon mit SQL..kann ich dann überhaupt noch das ganze mit dem OnFilterRecord verbinden?
Ja. Und bei BLOBs bleibt dir da auch nichts anderes übrig.

du warst schon dicht dran, versuchs mal damit:
Delphi-Quellcode:
procedure TdmMain.SearchQueryFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept := Pos(SearchString,DataSet.Fields.Fields[1].AsString)<>0;
end;
...
  SearchQuery.filtered := true; // nicht vergessen
...
Wie bereits gesagt ist zu überlegen ob es wirklich ein BLOB sein muss oder auch ein String mit 255 Zeichen reicht.
Dann kann man auch wieder mit SQL filtern.

Außerdem kann ich nur empfehlen Paradox+BDE in den wohlverdienten Ruhestand zu schicken.
Man kann sich damit viel Ärger ersparen.

alex
Alexander
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 26. Okt 2005, 07:29
Hmm..

@ALL Es muss ein unbegrenztes Feld sein. Deswegen Memo sonst hätte ich ein einfachen String genommen.


@Alex : Bei deiner Lösung kommt die Meldung, das auf das Feld mit dem MemoBlob in einem Filter nicht zugeriffen werden kann.

@Marabu : Aufgabenstellung ist die, das ich eine Tabelle mit 60 Feldern habe und ungefähr 10000 Einträgen. Diese soll möglichst schnell durchsucht und gefiltert werden können. Ob mit Table oder Query ist egal.

@mschaefer : Ja muss mit Paradox sein, da die Tabelle ja schon existiert und wir hier generell mit Paradox arbeiten.
Martin Weber
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#16

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 26. Okt 2005, 07:37
Unter den Konditionen hast Du die Lösung wie es obern schon durchgesprochen ist. Durchlauf per Hand programieren und im AsString des Blobfeldes den Wert mit Pos suchen. Damit ist das wohl zum neuen Arbeitstag als theoretisch gelöst einzustufen, denn Stringsuche ist sicherlich kein Problem.

Grüße / Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 26. Okt 2005, 07:48
Ja aber wie ichs gerade an alex geschrieben habe funktioniert das nicht.. Es kommt die Meldung das auf dieses Feld in einem Filter nicht zugegriffen werden kann.

Muss ich da noch irgendwelche anderen Dinge beachten?

Das ganze sieht jetzt so aus.
Delphi-Quellcode:
procedure TdmMain.SearchQueryFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
var
 i : integer;
begin
Accept:=false;
for i:= 0 to SearchQuery.FieldCount - 1 do
 if (Pos(tfSearch.SearchString,DataSet.Fields.Fields[i].AsString)<>0)then
  begin
  Accept := true;
  break;
  end;
end;
Martin Weber
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#18

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 26. Okt 2005, 08:23
Hallo Martin,

du kannst nicht einfach in MemoField.AsString suchen, denn da steht '(MEMO)' drin. Du musst dir schon den Inhalt des Memos besorgen. Du hast ja schon gemerkt, dass du auf das Memo nicht aus dem Filter-Event zugreifen kannst, also mache es so wie ich:
Delphi-Quellcode:
procedure TDataForm.TableFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
var
  i: integer;
  f: TField;
  s, pkName: string;
  pkValue: variant;
begin
  Accept:=false;
  with DataSet do
  begin
    pkName := 'Nummer';
    pkValue := FieldValues[pkName];
    for i := 0 to Pred(FieldCount) do
    begin
      f := Fields[i];
      case f.DataType of
        ftMemo: s := GetMemo('int', f.FieldName, pkName, pkValue);
        ftGraphic: s := '';
        else s := f.AsString;
      end;
      if AnsiContainsText(s, SearchStr) then
      begin
        Accept := true;
        Break;
      end;
    end;
  end;
end;

function GetMemo(tblName, fldName, keyName: string; keyValue: variant): string;
const
  SELECT = 'SELECT %s FROM %s WHERE %s = :key';
var
  strm: TStream;
  q: TQuery;
begin
  q := TQuery.Create(nil);
  with q do
  begin
    DatabaseName := 'TEST';
    SQL.Text := Format(SELECT, [fldName, tblName, keyName]);
    Params.ParamValues['key'] := keyValue;
    Open;
    strm := q.CreateBlobStream(Fields[0], bmRead);
    SetLength(Result, strm.Size);
    strm.ReadBuffer(Result[1], strm.Size);
    strm.Free;
    Close;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#19

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 26. Okt 2005, 08:48
Ähm.. ja.. mom..

GetMemo(tblName, fldName, keyName: string; keyValue: variant): string;

tblName = Tabellenname;
fldName = Felder die angezeigt werden sollen;
KeyName = Feld das durchsucht werden soll;
und KeyValue = Wert der in dem zu durchsuchenden Feld enthalten sein soll, oder?
Martin Weber
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: Blob mit SQL nach Teilstring durchsuchen?

  Alt 26. Okt 2005, 09:19
Nicht ganz:

tblName = Tabellenname
fldName = Name des Memo-Feldes, dessen Inhalt geholt werden soll
KeyName = Name des Feldes, welches für den Zugriff verwendet werden soll
KeyValue = Eindeutiger Schlüsselwert

Alles klar?

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr.
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