| Autor |
Beitrag |
Lux
      
Beiträge: 104
Win XP Home
D2005 Pers.
|
Verfasst: Mi 17.03.04 14:26
Hello.
Ich hab da mal wieder eine Frage.
Und zwar arbeite ich mit mehreren Paradox 7 DBs.
Auf meiner Form ist eine DBLookupComboBox vorhanden.
Wenn ich nun auf diese Box einen Namen auswähle, ändert er die Daten der anderen Bereiche durch das OnClick-Ereignis.
Wenn ich alos Mitglied Sascha anwähle, dann zeigt er mit im Panel Adresse meine Adresse (die in einer anderen Tabelle ist), im Panel Schlüssel welche Schlüssel ich habe (auch in einer anderen Tabelle vorhanden), und nun soll er mir noch meine Arbeitszeiten anzeigen.
Diese will ich in einem DBGrid anzeigen lassen. Meine Arbeitszeiten sind auch wiederrum in einer anderen Tabelle gespeichert.
Wie kriege ich das nun hin, dass wenn ich in die LookupBox auf meinen Namen klicke, er aus einer anderen Tabelle die DBGrid füllt?
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Mi 17.03.04 14:32
Versuch doch mal den aktuellen Wert aus deiner Combobox zu nehmen und damit eine neue Abfrage zu starten.
Gruß
tmc 
_________________ it's not a bug it's a feature
|
|
Lux 
      
Beiträge: 104
Win XP Home
D2005 Pers.
|
Verfasst: Mi 17.03.04 14:43
Hast du da zufällig mal ein Beispiel  *liebfrag*
Einen Tabellenwert in ein Label reinzuschreiben ging recht leicht. (Tutorial  ) aber in eine DBGrid, hab ich keinen blassen Schimmer wie ich das machen soll.
|
|
Lux 
      
Beiträge: 104
Win XP Home
D2005 Pers.
|
Verfasst: Mi 17.03.04 15:15
Versuche es gerade über eine SQLQuery.
Also bis jetzt klappt es... Nur das er mir mit ner Fehlermeldung abschmiert
Delphi-Quelltext 1: 2: 3: 4:
| QueArbeitsstunden.Active := False; QueArbeitsstunden.SQL.Clear; QueArbeitsstunden.SQL.Add('select mitglied, taetigkeit, wann, stunden from Arbeitsstunden where mitglied = ' + querystring); QueArbeitsstunden.Active := True; |
Er startet damit das Programm. Wenn ich mir dann jemanden aussuche, dann bricht er mir ab mit folgender Fehlermeldung:
| Zitat: | Invalid use of keyword
Token: Sascha
Line nubmer:1 |
Normalerweise sollte er auch nach Sascha Martens und nicht nach Sascha suchen. Könnt ihr mir vielleicht helfen?
|
|
atarigold
      
Beiträge: 84
WIN XP, Linux 2.4
D7, Delphi 2006 Prof
|
Verfasst: Mi 17.03.04 16:25
Hast du mal geprüft, was genau im Querystring steht?
Fehlen dort evtl. die Anführungszeichen, die du für Textattribute benötigst ?
Gruß
atarigold
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Mi 17.03.04 17:00
Soll querystring der Wert aus deine Combo sein? Ist das die combo Selber die du so genannt hast oder ist das eine Variable?
Wenn das die Combo selber ist fehlt dir combo.text oder so was er wieß ja nicht was er nehmen soll. Wenn es eine Variable ist wo du den Wert zugewiesen hast Mach mit f8 einzelstart und schau dir deinen sql an.
Wenn du dann immer noch nicht weiter kommst dann poste wieder
Gruß
tmc
_________________ it's not a bug it's a feature
|
|
Lux 
      
Beiträge: 104
Win XP Home
D2005 Pers.
|
Verfasst: Do 18.03.04 12:11
Querystring ist eine Variable
Delphi-Quelltext 1:
| querystring := TblAdressdaten.FieldByName('Name').AsString; |
Der Debugger gibt mir dann folgendes wenn ich auf einen Namen geklcikt habe:
| Zitat: | | querystring: 'Sascha Martens' |
@ Atarigold. Wenn ich das mit den Anführungszeichen richtig verstanden habe, meisnt du das im SQL String es dann so aussehen sollte:
Delphi-Quelltext 1:
| select mitglied, taetigkeit, wann, stunden from Arbeitsstunden where mitglied = 'Sascha Martens' |
Wenn ich den Namen in meine SQL.Add rein schreibe:
Delphi-Quelltext 1:
| QueArbeitsstunden.SQL.Add('select mitglied, taetigkeit, wann, stunden from Arbeitsstunden where mitglied = Sascha Martens'); |
Dann schmeißt er mich genau so raus.
Hier mal meine kompletten SQL Daten:
Delphi-Quelltext 1: 2: 3: 4: 5:
| QueArbeitsstunden.Active := False; QueArbeitsstunden.SQL.Clear; QueArbeitsstunden.SQL.Add('select mitglied, taetigkeit, wann, stunden from Arbeitsstunden where mitglied = Sascha Martens'); QueArbeitsstunden.Active := True; |
Ich hoffe das sind genug Infos.
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Do 18.03.04 13:06
_________________ it's not a bug it's a feature
|
|
Lux 
      
Beiträge: 104
Win XP Home
D2005 Pers.
|
Verfasst: Do 18.03.04 13:25
Hat geklappt!
Vielen Dank!!
Allerdings hab ich nun noch eine Frage
Wenn ich nun auf den Namen klicke, dann zeigt er mir alles alles schön in der DBGrid an. Das blöde ist bloß, das es alles zu lang ist (Spalten) und das er als Überschrift die Überschriften aus der DB nimmt. Wie kann ich das ändern?
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Do 18.03.04 13:35
_________________ it's not a bug it's a feature
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Do 18.03.04 13:36
Oh und wenn du auf einen element bist das du angelegt hast bei der DBgrid dann kannst du unter titel die Caption ändern.
Gruß
tmc 
_________________ it's not a bug it's a feature
|
|
Lux 
      
Beiträge: 104
Win XP Home
D2005 Pers.
|
Verfasst: Do 18.03.04 13:50
Hm also ich habe doppelklick rauf gemacht, habe neue Spalten definiert, hab sie dann unter Title -> Caption den Namen geändert.
Wenn ich nun mein Prog starte, einen Namen auswähle, zeigt er mir keine Daten mehr an.
Wo muss ich denn noch was eingeben, damit er mir das nun richtig anzeigt? *rumnerv*
Unter Fieldname kann ich nichts angeben. Da gibt er mir eine Fehlermeldung aus.
| Zitat: | | QueArbeitsstunden:No SQL Statement Available |
Ich weiß ich nerv langsam... 
|
|
atarigold
      
Beiträge: 84
WIN XP, Linux 2.4
D7, Delphi 2006 Prof
|
Verfasst: Do 18.03.04 14:24
Die Überschriften im DBGrid kannst du normalerweise noch einfacher ändern, indem du in deiner SQL-Abfrage Aliase für die anzuzeigenden Spalten verwendest.
Bezogen auf deine Abfrage würde also:
'select mitglied AS Name , taetigkeit AS Taetigkeit, .....
die Überschrift der erste Spalte nicht mitglied sondern Name heißen usw.
Gruß
atarigold
|
|
Lux 
      
Beiträge: 104
Win XP Home
D2005 Pers.
|
Verfasst: Do 18.03.04 14:32
Ich habs jetzt so gelöst:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| QueArbeitsstunden.Active := False; QueArbeitsstunden.SQL.Clear; QueArbeitsstunden.SQL.Add('select mitglied, Taetigkeit, wann, stunden from Arbeitsstunden where mitglied = "' + querystring +'"'); QueArbeitsstunden.Active := True; DBGrid1.Columns[0].Title.Caption := 'Mitglied'; DBGrid1.Columns[0].Width := 130; DBGrid1.Columns[1].Title.Caption := 'Tätigkeit'; DBGrid1.Columns[1].Width := 140; DBGrid1.Columns[2].Title.Caption := 'Datum'; DBGrid1.Columns[2].Width := 80; DBGrid1.Columns[3].Title.Caption := 'Stunden'; DBGrid1.Columns[3].Width := 55; |
Aber die Idee mit den AS Mitglied ist auch gut
Danke für eure Antworten! Ihr habt mir gut weitergeholfen 
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Do 18.03.04 15:17
Da hattest du wohl vor her ein paar Rechtsschreibfehler drin.  aber jetzt geht es ja
Gruß
tmc
_________________ it's not a bug it's a feature
|
|