Autor Beitrag
Lux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Win XP Home
D2005 Pers.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: 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 :oops:

_________________
it's not a bug it's a feature
Lux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Win XP Home
D2005 Pers.
BeitragVerfasst: 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 8) ) aber in eine DBGrid, hab ich keinen blassen Schimmer wie ich das machen soll.
Lux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Win XP Home
D2005 Pers.
BeitragVerfasst: 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 :D

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84

WIN XP, Linux 2.4
D7, Delphi 2006 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Win XP Home
D2005 Pers.
BeitragVerfasst: Do 18.03.04 12:11 
Querystring ist eine Variable

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


ausblenden Delphi-Quelltext
1:
select mitglied, taetigkeit, wann, stunden from Arbeitsstunden where mitglied = 'Sascha Martens'					


Wenn ich den Namen in meine SQL.Add rein schreibe:

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

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  //Arbeitsstundenpanel
  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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: Do 18.03.04 13:06 
ausblenden 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 = " '
 + querystring + ' " '); 
  QueArbeitsstunden.Active := True;


kann auch sein das du statt dem Doppelten Anführungsstrichen 2 einfache machen musst je nach Datenbank die du benutzt. Sollte so gehen du mußt ihm ja irgend wie sagen das das ein String ist Sonst nimmt er das erste wort und fliegt dann raus, weil er denkt da kommt noch eine Anweisung.

Gruß

tmc
:dance2: :dance2: :dance2: :dance2: :dance2: :dance2:

_________________
it's not a bug it's a feature
Lux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Win XP Home
D2005 Pers.
BeitragVerfasst: Do 18.03.04 13:25 
Hat geklappt!
Vielen Dank!!

Allerdings hab ich nun noch eine Frage :oops:

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: Do 18.03.04 13:35 
Das ist ein Bug in Delphi entweder zihst du dir ein Update von dbgrid oder machst einfach einen Doppelklick auf das grid Definierst deine Felder Mit Passenden Namen und gibst da die width immer einen Wert selber an nicht den nehmen der dran ist und wenn du den willst schreib es händisch noch mal rein dann passt die Spaltenbreite.

Gruß
tmc
:dance: :dance: :dance: :dance: :dance:

_________________
it's not a bug it's a feature
tmc2004
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: 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 :oops:

_________________
it's not a bug it's a feature
Lux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Win XP Home
D2005 Pers.
BeitragVerfasst: 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. :cry:

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... :oops:
atarigold
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84

WIN XP, Linux 2.4
D7, Delphi 2006 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 104

Win XP Home
D2005 Pers.
BeitragVerfasst: Do 18.03.04 14:32 
Ich habs jetzt so gelöst:

ausblenden 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 :D
tmc2004
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: Do 18.03.04 15:17 
Da hattest du wohl vor her ein paar Rechtsschreibfehler drin. :wink: aber jetzt geht es ja

Gruß
tmc

_________________
it's not a bug it's a feature