| Autor |
Beitrag |
Morpheus1572
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: Mi 17.09.08 14:35
moin,
wenn ich diesen Query starte, bekomme ich als Antwort nicht den inhalt vom feld des 50sten ID's sondern vom ersten.
Kann mir jemand sagen why?
Delphi-Quelltext 1:
| ADOQuery1.SQL.Text:='SELECT Tour FROM Tour WHERE TID = 50'; |
und JA, es existieren mehr als 50 einträge. 
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Mi 17.09.08 14:44
Ich würd ja eher mit keiner Antwort rechnen. Ist TID eine Zahl auf Tabellenebene? Gibt es die ID vielleicht doppelt?
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
Morpheus1572 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: Mi 17.09.08 14:47
DB = ACCESS
TABName : Tour
Feld ID : AutoIncrement
Feld Tour: Text
brauchst du noch mehr infos?
Warum keine Antwort? ich bekomme aber eine (nur die Falsche)...
Gruß Morph.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 17.09.08 14:53
|
|
Morpheus1572 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: Mi 17.09.08 14:57
Sorry, Fehlerteufel. Natürlich heißt es TID!
|
|
MDX
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: Mi 17.09.08 15:20
Ist ganz einfach, du musst eine LIKE abfrage nehemen:
Ausserdem, kannst du nicht TID abfragen, wenn du es gar nicht auswählst, richtig ist also so:
Delphi-Quelltext 1:
| ADOQuery1.SQL.Text:='SELECT TID, Tour FROM Tour WHERE TID LIKE ''50'' '; |
|
|
Morpheus1572 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: Mi 17.09.08 15:35
Hmmm... okay habe ich gemacht.
und wie kann ich mir nun das ergebnis zum beispiel in einem edit ansehen?
ich dachte das ginge so:
Delphi-Quelltext 1: 2:
| ds := DataSource1.DataSet; Edit1.Text := ds['Tour']; |
wenn ich das aber mache, bekomme ich immer noch die Tourenangabe von TID 1!!!
mir scheint dass da was nicht funzt mit meinem Query...
|
|
baka0815
      
Beiträge: 489
Erhaltene Danke: 14
Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
|
Verfasst: Mi 17.09.08 16:29
MDX hat folgendes geschrieben: | | Ist ganz einfach, du musst eine LIKE abfrage nehemen |
Da bin ich jetzt aber mal auf 'ne Begründung gespannt.
|
|
Morpheus1572 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: Mi 17.09.08 16:41
ne muss ich nicht.
funzt jetzt hatte noch nen schreibfehler drin. stundenlang draufgesehen und nüscht jeseeen... sorry. danke für die Hilfe.
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 18.09.08 07:03
MDX hat folgendes geschrieben: | Ist ganz einfach, du musst eine LIKE abfrage nehemen:
Ausserdem, kannst du nicht TID abfragen, wenn du es gar nicht auswählst, richtig ist also so:
Delphi-Quelltext 1:
| ADOQuery1.SQL.Text:='SELECT TID, Tour FROM Tour WHERE TID LIKE ''50'' '; | |
Bitte was? Natürlich kannst du über Felder filtern, die du nicht auswählen musst. Und ein Like brauchst du nur bei Textvergleichen mit Wildcards, sonst braucht man das nicht.
@Morph Wenn man sich den SQL-String ausgeben läßt und ihn einfach in eine leere Abfrage kopiert, kommt man meistens in sehr kurzer Zeit auf den Fehler 
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 18.09.08 10:40
MDX hat folgendes geschrieben: | Ist ganz einfach, du musst eine LIKE abfrage nehemen:
Ausserdem, kannst du nicht TID abfragen, wenn du es gar nicht auswählst, richtig ist also so:
Delphi-Quelltext 1:
| ADOQuery1.SQL.Text:='SELECT TID, Tour FROM Tour WHERE TID LIKE ''50'' '; | |
So ein Quatsch.
@Morpheus:
Deine Abfrage ist theoretisch korrekt. Du musst den Fehler woanders suchen.
|
|
baka0815
      
Beiträge: 489
Erhaltene Danke: 14
Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
|
Verfasst: Do 18.09.08 12:37
jasocul hat folgendes geschrieben: | @Morpheus:
Deine Abfrage ist theoretisch korrekt. Du musst den Fehler woanders suchen. |
Er hat das Problem doch behoben.
Warum MDX jedoch an dieser Stelle das LIKE empfiehlt, wüsste ich auch gerne.
|
|
MDX
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: Fr 19.09.08 13:47
Weil es bei mir nur mit LIKE ging, deshalb hatte ich LIKE gesagt!
Muss natürlich nicht überall so sein, aber damit geht es garantiert!
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Fr 19.09.08 15:39
MDX hat folgendes geschrieben: | | [...] aber damit geht es garantiert! |
Vollkommener Unsinn.
|
|
baka0815
      
Beiträge: 489
Erhaltene Danke: 14
Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
|
Verfasst: Fr 19.09.08 16:06
MDX hat folgendes geschrieben: | | aber damit geht es garantiert! |
Solange man keine Platzhalter wie % oder _ (bei Oracle) verwendet, ist die Verwendung von LIKE im Ergebnis identisch mit dem Gleichheitszeichen.
SQL-Anweisung 1:
| select * from tabelle where x like 'abc' |
SQL-Anweisung 1:
| select * from tabelle where x = 'abc' |
Das Ergebnis der beiden Queries ist identisch (bzw. sollte identisch sein).
LIKE macht nur sinn, wenn du wirklich mit Platzhaltern, also "so ähnlich wie", suchen willst.
SQL-Anweisung 1:
| select * from tabelle where x like '%ab_c%' |
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Fr 19.09.08 18:10
baka0815 hat folgendes geschrieben: | | [quote="[user]Solange man keine Platzhalter wie % oder _ (bei Oracle) verwendet, ist die Verwendung von LIKE im Ergebnis identisch mit dem Gleichheitszeichen. |
Fast: Prüfung auf Gleichheit berücksichtigt, falls eingestellt, Groß/Kleinschreibung, LIKE nicht.
_________________ Na denn, dann. Bis dann, denn.
|
|