AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Per SQL ein Memo-Feld durchsuchen
Thema durchsuchen
Ansicht
Themen-Optionen

Per SQL ein Memo-Feld durchsuchen

Ein Thema von Werwurm · begonnen am 2. Mai 2003 · letzter Beitrag vom 4. Mai 2003
Antwort Antwort
Seite 2 von 2     12   
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11
  Alt 3. Mai 2003, 01:00
na gut, mit folgendem steht alles in deinem Dataset:

Code:
with LiefModul.LiefDS do begin
  Close;
  SelectSQL.Text := 'SELECT NR, NAME ORDER BY NR';
  Open;
end;
LiefModul ist ein Datamdule, DataSet ein dataset. Probier einfach weiter.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#12
  Alt 3. Mai 2003, 14:08
Hallo Werwurm,

vielleicht ist es ja nur ein Übertragungsfehler, aber deine Zeile:

Form1.Query1.SQL.Add('ORDER BY (Interpret, Jahr, Album); enthält einen nicht abgeschlossenen String. Hinter das Album) muss noch ein '.

Und wie oben schon erwähnt, eine Abfrage, die eine Datenmenge zurückliefert muss immer mit Open ausgeführt werden. Nur Abfragen, die keine Datenmenge zurückliefern (z.B. DELETE) werden mit ExecSQL ausgeführt.

Ich empfehle außerdem, keine relativen Pfadnamen bei der Tabelle zu benutzen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#13

Re: Per SQL ein Memo-Feld durchsuchen

  Alt 3. Mai 2003, 14:32
Zitat von Werwurm:
Nabend Allerseits,

da hat man schon allerhand Bücher über Delphi und kommt trotzdem nicht weiter.
Folgendes Problem:
Ich habe eine Paradox7 Tabelle die formatierte Memofelder enthält. Genau in diesen Feldern möchte ich nach einem String S suchen, wobei auch die Groß/Kleinschreibung keine Rolle spielt.
Hallo,

das geht mit Paradox IMHO gar nicht.

Du kannst aber den Text des Memos irgendwo zwischenspeichern und dann den Text mit POS prüfen.

Sollte es sich um eine große Datenbank mit umfangreichen Memo-Inhalten handeln, wird das ganze sehr langsam von statten gehen - dann würde ich Dir sowieso ein anderes DBMS empfehlen...
Catbytes
  Mit Zitat antworten Zitat
Werwurm

Registriert seit: 21. Apr 2003
Ort: Bremen
71 Beiträge
 
Delphi 2009 Professional
 
#14

Re: Per SQL ein Memo-Feld durchsuchen

  Alt 3. Mai 2003, 15:24
Zitat von Catbytes:
Zitat von Werwurm:
Nabend Allerseits,

da hat man schon allerhand Bücher über Delphi und kommt trotzdem nicht weiter.
Folgendes Problem:
Ich habe eine Paradox7 Tabelle die formatierte Memofelder enthält. Genau in diesen Feldern möchte ich nach einem String S suchen, wobei auch die Groß/Kleinschreibung keine Rolle spielt.
Hallo,

das geht mit Paradox IMHO gar nicht.

Du kannst aber den Text des Memos irgendwo zwischenspeichern und dann den Text mit POS prüfen.

Sollte es sich um eine große Datenbank mit umfangreichen Memo-Inhalten handeln, wird das ganze sehr langsam von statten gehen - dann würde ich Dir sowieso ein anderes DBMS empfehlen...

Hallo Catbytes,

welchen Datenbanktyp sollte ich den wählen?
Ich versuche meine LP's inkl. der Titel zu verwalten, von daher brauche ich ein String-Feld mit mehr als 255 Zeichen. Und in diesem Feld möchte ich eben auch nach den einzelnen Titeln suchen.
Vielleicht habe ich ja auch schon den falschen Ansatz???

Übrigens hatte Mr. Spock recht was meinen nicht abgeschlossenen String betrifft, im meinem Programm stehts richtig...
Gruß
Marcus
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#15

Re: Per SQL ein Memo-Feld durchsuchen

  Alt 3. Mai 2003, 19:33
Zitat von Werwurm:
Hallo Catbytes,

welchen Datenbanktyp sollte ich den wählen?
Ich versuche meine LP's inkl. der Titel zu verwalten, von daher brauche ich ein String-Feld mit mehr als 255 Zeichen. Und in diesem Feld möchte ich eben auch nach den einzelnen Titeln suchen.
Vielleicht habe ich ja auch schon den falschen Ansatz???

Übrigens hatte Mr. Spock recht was meinen nicht abgeschlossenen String betrifft, im meinem Programm stehts richtig...
Hallo Werwurm,

Du hast vermutlich kein Datenbankmodell erstellt.

Du könntest z.B. eine Tabelle erstellen, in denen Du die Grunddaten der Alben speicherst, die (normalerweise - Ausnahmen bestätigen die Regel) einzigartig sind, wie Albumname, Erscheinungsjahr, Anzahl der Titel, Gesamtzahl der Titel, Genre etc.

Du mußt dann nur eine einzigartige ID pro LP vergeben (leicht z.b. über einen Autozähler).

Dann legst Du eine neue Tabelle an - z.B. Titel. Dort hast Du dann ein ID-Feld als LongInt, daß auf die ID der Albumtabelle verweisst. So kannst Du dann theoretisch unbegrennzt Titel pro Album verwalten. Ich würde dann auch noch andere Tabellen erzeugen (z.B. Genre.db, Land.db, Plattenlabel.db, Künstler.db etc.) - eben alles, was i.d.R. nicht einzigartig ist.

Du kannst dann alles über die ID verbinden. Wenn Du keine Zahlen möchtest, kannst Du das auch über einen einzigartigen Matchcode machen. Dort könntest Du aber auf Probleme stoßen, falls mal zwei verschiedene LPs den gleichen Namen haben.

Such Dir im Internet per Google mal die Grundfunktionen und Aufbauten einer Datenbank an (1:n und 1:1-Beziehungen, Analyse, Sicherung etc). Danach kannst Du Dich mit Spezialthemen wie "Entity-Relationship-Modellierung" auseinandersetzen - und danach die verschiedenen DBMS-Systeme in Angriff nehmen (XML, fixed-length/variable-length-Datenfelder).
Catbytes
  Mit Zitat antworten Zitat
Werwurm

Registriert seit: 21. Apr 2003
Ort: Bremen
71 Beiträge
 
Delphi 2009 Professional
 
#16

Re: Per SQL ein Memo-Feld durchsuchen

  Alt 3. Mai 2003, 20:02
Zitat von Catbytes:
Zitat von Werwurm:
Hallo Catbytes,

welchen Datenbanktyp sollte ich den wählen?
Ich versuche meine LP's inkl. der Titel zu verwalten, von daher brauche ich ein String-Feld mit mehr als 255 Zeichen. Und in diesem Feld möchte ich eben auch nach den einzelnen Titeln suchen.
Vielleicht habe ich ja auch schon den falschen Ansatz???

Übrigens hatte Mr. Spock recht was meinen nicht abgeschlossenen String betrifft, im meinem Programm stehts richtig...
Hallo Werwurm,

Du hast vermutlich kein Datenbankmodell erstellt.

Du könntest z.B. eine Tabelle erstellen, in denen Du die Grunddaten der Alben speicherst, die (normalerweise - Ausnahmen bestätigen die Regel) einzigartig sind, wie Albumname, Erscheinungsjahr, Anzahl der Titel, Gesamtzahl der Titel, Genre etc.

Du mußt dann nur eine einzigartige ID pro LP vergeben (leicht z.b. über einen Autozähler).

Dann legst Du eine neue Tabelle an - z.B. Titel. Dort hast Du dann ein ID-Feld als LongInt, daß auf die ID der Albumtabelle verweisst. So kannst Du dann theoretisch unbegrennzt Titel pro Album verwalten. Ich würde dann auch noch andere Tabellen erzeugen (z.B. Genre.db, Land.db, Plattenlabel.db, Künstler.db etc.) - eben alles, was i.d.R. nicht einzigartig ist.

Du kannst dann alles über die ID verbinden. Wenn Du keine Zahlen möchtest, kannst Du das auch über einen einzigartigen Matchcode machen. Dort könntest Du aber auf Probleme stoßen, falls mal zwei verschiedene LPs den gleichen Namen haben.

Such Dir im Internet per Google mal die Grundfunktionen und Aufbauten einer Datenbank an (1:n und 1:1-Beziehungen, Analyse, Sicherung etc). Danach kannst Du Dich mit Spezialthemen wie "Entity-Relationship-Modellierung" auseinandersetzen - und danach die verschiedenen DBMS-Systeme in Angriff nehmen (XML, fixed-length/variable-length-Datenfelder).
Danke,

genau damit habe ich gerade angefangen. Nun habe ich drei Tabellen in denen ich meine Daten verwalte (alben, Titel Seite A und Titel Seite B).
Der Nachteil ist, das ich mein Programm, welches bis auf die Suchfunktion fertig war, jetzt nochmal neu schreibe. Eine Überarbeitung wäre mir zu kompliziert und zu Fehleranfällig.
Ich hab mir das wohl zu einfach vorgestellt.
Aber großen Dank für Deine Hilfe!!!
Gruß
Marcus
  Mit Zitat antworten Zitat
Yngvi

Registriert seit: 4. Mai 2003
1 Beiträge
 
#17
  Alt 4. Mai 2003, 12:11
Wie schon ein andere User festestellt hat, kann man ein Memofeld nicht nach Strings durch suchen.

Hilfreich währe, wenn Du Deine Tabellenstrucktur Postest.

Vorweg ein Tipp:

Lege doch ein Suchfeld in Deiner Tabelle an z.B.Titel o. ä.
meinetwegen setze einen Sekundäindex auf das Feld erhöht die Suchgeschwindigkeit
dann kannst Du mit Query1.FindNearest([Edit2.Text]);//mit einem TEdit
oder mit einer Combox
Query1.Locate('BUCHTEXT',cbSuch.Text,[loPartialKey]);
natürich muss Du bei einer Combobox die Daten im FormCrate Event erts in die Comox einlesen.
Mit FindNearst, muss das Feld indiziert sein!!!

Hier ein kleiner Auszug von mir

procedure TfrmBelege.FormCreate(Sender: TObject);
begin
DateTimePicker1.Enabled := False;
DateTimePicker1.Date := Date;
cbSuch.Clear;
BudgetData.tblBelege.First;
while not BudgetData.tblBelege.Eof do
begin
cbSuch.Items.Add(BudgetData.tblBelegeBUCHTEXT.Valu e);
BudgetData.tblBelege.Next;
end;
BudgetData.tblBelege.First;
cbSuch.Text := BudgetData.tblBelegeBUCHTEXT.Value;


inipfad := ExtractFilePath(ParamStr(0))+ '\budget.ini';
appini := TIniFile.Create(inipfad);

BudgetData.tblBelegeEINNAHMEN.DisplayFormat :=
AppIni.ReadString('Geld','Einheit','###,###,###.00 DEM');
BudgetData.tblBelegeAUSGABEN.DisplayFormat :=
AppIni.ReadString('Geld','Einheit','###,###,###.00 DEM');
AppIni.Free;

DBinfo;

end;
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#18
  Alt 4. Mai 2003, 17:06
Zitat von Yngvi:
Wie schon ein andere User festestellt hat, kann man ein Memofeld nicht nach Strings durch suchen.
Hi,

meine Beschränkung lag auf Paradox.

IMHO kann man bei anderen DBMS sehr wohl Memos nach Strings durchsuchen.

Ich glaube, korrigiert mich, wenn es nicht stimmt, das geht sogar bei DBase...
Catbytes
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:07 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