Autor |
Beitrag |
Rene1802
      
Beiträge: 24
|
Verfasst: Mo 18.10.04 11:32
Hallo
Ich habe ein Problem in Verbindung mit SQL.
Ich führe folgende Befehle aus, um die Daten aus meiner Tabelle in die Query zu schieben.
Delphi-Quelltext 1: 2:
| Query1.Clear; Query1.SQL.Add('Select Kuerzel, Club, Mannschaft, Index_Liga Where Index_Liga = 3'); |
Nun möchte ich diese Daten in einem Memo, Edit-Feld, irgendwo anzeigen.
Ich habe schon im Forum nachgeschaut und auch was gefunden.
Delphi-Quelltext 1:
| Query1.FieldByName('Club').AsString); |
Wenn ich es richtg verstanden habe, dann kann ich mit FieldByName die Daten in der Query z.B. einer Variablen zuordnen.
Doch an dieser Stelle kommt die Fehlermeldung
'Das Feld "Club" wurde nicht gefunden'
Was muß ich denn an dieser Stelle beachten?
Und welche möglichkeiten habe ich denn noch?
Möchte aber keine DB.. (DBDEdit oder so) benutzen.
Bin für jeden Beitrag dankbar
Gruß Rene
Moderiert von Udontknow: Delphi-Tags hinzugefügt.
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 18.10.04 11:33
Fehlt vielleicht ein Query1.Open ???
|
|
Rene1802 
      
Beiträge: 24
|
Verfasst: Mo 18.10.04 11:36
Query.Open habe ich nach dem FieldByName befehl und die Daten kann ich mir in einem DBGrid anzeigen lassen. Nun möchte ich die Werte in Variablen verteilen, um damit meine Auswertungen machen zu können.
Gruß Rene
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 18.10.04 11:39
Bevor du auf die Daten zugreifen kannst, musst du das Open ausführen. D.h.: BEVOR du mit FieldByName zugreifst, muss das Open stehen. Sonst ist die Tabelle noch nicht für dich da.
Normalerweise schreibt man das Open, nachdem man das SQL-Statement zusammengesetzt hat.
In deinem Fall:
Delphi-Quelltext 1: 2: 3:
| Query1.Clear; Query1.SQL.Add('Select Kuerzel, Club, Mannschaft, Index_Liga Where Index_Liga = 3'); Query.Open; |
Danach kannst du mit den Inhalten hantieren.
|
|
Rene1802 
      
Beiträge: 24
|
Verfasst: Mo 18.10.04 11:47
Vielen Dank es hat funkioniert.
Gruß Rene
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mo 18.10.04 19:02
hallo jungs!
Delphi-Quelltext 1:
| Query1.SQL.Add('Select Kuerzel, Club, Mannschaft, Index_Liga Where Index_Liga = 3'); |
also gefühlsmässig fehlt mir hier ein 'FROM tabellenname'. oder hab ich was entscheidendes übersehen?
mfg, stefan
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 18.10.04 19:31
Is schon Klasse, dass es trotzdem funktioniert
Ich habe das Statement gar nicht so genau gelesen. Die Fehlermeldung hat mir zur Lösung des Problems gereicht.
|
|
mettie84
      
Beiträge: 21
Win2k, XP SP2, Linux 9.0
D5 standart, D6 Ent, D7 Ent
|
Verfasst: Di 19.10.04 09:51
Wenn es nur eine Tabelle gibt, dann sind die Feldangaben ja eindeutig. Dann geht das auch ohne Angabe der Tabelle. Nur bei mehreren Tabellen, auch wenn alle Feldnamen eindeutig sind, funtioniert dies nicht.
Du kannst die FROM-Klausel aber auch umgehen indem du die Feldnamen mit tabellenname.feldname ansprichst
MfG Matthias
Zuletzt bearbeitet von mettie84 am Di 19.10.04 11:12, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 19.10.04 10:20
Auf welcher sch*** DB soll das denn funktionieren?
Und selbst wenn das funktioniert, würde ich das NIE machen. Spätestens wenn die DB um eine Tabelle erweitert wird, gehts dann in die Hose. Und ganz ehrlich, wer schreibt schon die Feldnamen vollqualifiziert, außer es ist zwingend erforderlich?
|
|
mettie84
      
Beiträge: 21
Win2k, XP SP2, Linux 9.0
D5 standart, D6 Ent, D7 Ent
|
Verfasst: Di 19.10.04 11:11
jasocul hat folgendes geschrieben: | Auf welcher sch*** DB soll das denn funktionieren? |
Wo soll was funktionieren?
jasocul hat folgendes geschrieben: | Und selbst wenn das funktioniert, würde ich das NIE machen. Spätestens wenn die DB um eine Tabelle erweitert wird, gehts dann in die Hose. |
Deshalb sagte ich ja auch, wenn man nur eine tabelle hat. Dies ist jedoch DB-beschränkt.
jasocul hat folgendes geschrieben: | Und ganz ehrlich, wer schreibt schon die Feldnamen vollqualifiziert, außer es ist zwingend erforderlich? |
Schon mal was davon gehört, dass der Quellcode auch nach Jahren für einen völlig fremden Programmierer noch lesbar sein soll?
Gerade bei Operationen zwischen zwei Datenbanken, ist sogar unumgäglich, wenn man den Datenverkehr nicht mit zusätzlichen Connections erhöhen will. (Nennt man geschwindigkeitsorientiert).
MfG Matthias
_________________ Wenn das 0:2 schon gefallen ist, dann ist ein 1:1 nicht mehr möglich
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 19.10.04 11:23
Hi mettie,
das war nicht persönlich gemeint, sondern auf die DB bezogen. Nur damit du das nicht falsch verstehst.
mettie84 hat folgendes geschrieben: | jasocul hat folgendes geschrieben: | Auf welcher sch*** DB soll das denn funktionieren? |
Wo soll was funktionieren
|
Na, ein SQL-Statement ohne "from".
mettie84 hat folgendes geschrieben: | jasocul hat folgendes geschrieben: | Und selbst wenn das funktioniert, würde ich das NIE machen. Spätestens wenn die DB um eine Tabelle erweitert wird, gehts dann in die Hose. |
Deshalb sagte ich ja auch, wenn man nur eine tabelle hat
|
Eben, drum. Erweitern darfst du das dann nicht. Und falls doch, darfst du deinen Source nach diesem Blödsinn durchsuchen.
mettie84 hat folgendes geschrieben: | jasocul hat folgendes geschrieben: | Und ganz ehrlich, wer schreibt schon die Feldnamen vollqualifiziert, außer es ist zwingend erforderlich? |
Schon mal was davon gehört, dass der quellcode auch nach Jahren für einen völlig fremden Programmierer noch lesbar sein soll? Grade bei Operationen zwischen zwei Datenbanken, ist es so extrem sinnvoll. |
Da würde ich es auch machen. Aber es ging hier um eine Tabelle! Und wenn ein "from" drinsteht, ist es lesbar.
Um auf meine Frage zurückzukommen: Was für eine merkwürdige DB mach denn so einen Quatsch? Ich habe nichts dagegen, wenn eine DB das ANSI-SQL erweitert, aber doch nicht so. Das ist imho keine Erweiterung eher eine Verkrüppelung. Stell dir mal vor, du musst so eine Sache auf eine richtige DB portieren....
|
|
mettie84
      
Beiträge: 21
Win2k, XP SP2, Linux 9.0
D5 standart, D6 Ent, D7 Ent
|
Verfasst: Mi 20.10.04 09:43
Soweit ich weiß, unterstützt MySQL in einem bestimmten Startmodus die "ungenaue" Feldangabe.
Die vollquallifizierte Feldangabe sollte jede SQL-Datenbank können. Bei MS-SQL und MySQL funktioniert es.
Sorry wenn wir uns da missverstanden haben. Ich wollte ihm auch eigentlich nur sagen, dass er nur "für das Aussehen" das "FROM" in seinem speziellen Fall nicht setzen muss.
_________________ Wenn das 0:2 schon gefallen ist, dann ist ein 1:1 nicht mehr möglich
|
|