Autor Beitrag
Rene1802
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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.

ausblenden 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.

ausblenden 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 user profile iconUdontknow: Delphi-Tags hinzugefügt.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 18.10.04 11:33 
Fehlt vielleicht ein Query1.Open ???
Rene1802 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 18.10.04 11:47 
Vielen Dank es hat funkioniert.
Gruß Rene
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 18.10.04 19:02 
hallo jungs! :)

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 18.10.04 19:31 
Is schon Klasse, dass es trotzdem funktioniert :lol:
Ich habe das Statement gar nicht so genau gelesen. Die Fehlermeldung hat mir zur Lösung des Problems gereicht.
mettie84
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21

Win2k, XP SP2, Linux 9.0
D5 standart, D6 Ent, D7 Ent
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21

Win2k, XP SP2, Linux 9.0
D5 standart, D6 Ent, D7 Ent
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21

Win2k, XP SP2, Linux 9.0
D5 standart, D6 Ent, D7 Ent
BeitragVerfasst: 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