![]() |
Re: Blob mit SQL nach Teilstring durchsuchen?
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
|
Re: Blob mit SQL nach Teilstring durchsuchen?
Meint Dein Chef auch, dass Du das mit Paradox machen mußt. // Martin
PS: Systems steht auch noch auf der ToDo-Liste... |
Re: Blob mit SQL nach Teilstring durchsuchen?
Zitat:
marabu |
Re: Blob mit SQL nach Teilstring durchsuchen?
Hi Angel4585,
Zitat:
du warst schon dicht dran, versuchs mal damit:
Delphi-Quellcode:
Wie bereits gesagt ist zu überlegen ob es wirklich ein BLOB sein muss oder auch ein String mit 255 Zeichen reicht.
procedure TdmMain.SearchQueryFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin Accept := Pos(SearchString,DataSet.Fields.Fields[1].AsString)<>0; end; ... SearchQuery.filtered := true; // nicht vergessen ... 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 |
Re: Blob mit SQL nach Teilstring durchsuchen?
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. |
Re: Blob mit SQL nach Teilstring durchsuchen?
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 |
Re: Blob mit SQL nach Teilstring durchsuchen?
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; |
Re: Blob mit SQL nach Teilstring durchsuchen?
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:
Grüße vom marabu
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; |
Re: Blob mit SQL nach Teilstring durchsuchen?
Ä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? |
Re: Blob mit SQL nach Teilstring durchsuchen?
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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 by Thomas Breitkreuz