Entwickler-Ecke
Datenbanken - ComBox1.NextItem ???? Gibts da was?
rob87 - Mi 03.12.08 12:07
Titel: ComBox1.NextItem ???? Gibts da was?
Hallo,
ich bin schon wieder da. Ich hoffe nun, ein letztens Mal für dieses Projekt. Aber nun gehts bissal ans Eingemachte:
Ich hab in einer ComboBox mehrere Werte enthalten. Nun soll anhand dieser Werte schleifenartig Verarbeitungen vorgenommen werden. Dabei muss die ComboBox-Auswahl immer um eins erhöht werden. Wenn man beim letzten EIntrag is, soll von vorne begonnen werden. Ich poste mal einen Code-Ausschnitt, dannn wirds hoffentlich klarer:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| var Note, i : Integer; begin for i := 0 to irgendwas do begin
repeat if (Noten_je_Schueler.Locate('Name',CB_Auswahl_Schueler.Text,[loPartialKey])=true) then begin Note := Noten_je_Schueler.FieldByName('Note').Value; end; until (Noten_je_Schueler.Eof) or (Note <> 0) ;
if Noten_je_Schueler.Eof then Noten_je_Schueler.First else begin Noten_je_Schueler.Next; if Noten_je_Schueler.Eof then Noten_je_Schueler.First end; end;end; |
Also es wird aus der CB_Auswahl_Schueler ein Schueler ausgewaehlt, bei welchem die Verarbeitung gestertart werden soll. Dann wird geschaut, welche Note dieser Schueler hat. Anschließend wird die Note weiterverarbeitet.
Mein Problem ist nun. Er liest aus der ComboBox immer den selben Wert! Ich bräuchte einen Code in der Art:
Delphi-Quelltext
1: 2: 3: 4:
| if CB_Auswahl_Schueler = Eof CB_Auswahl_Schueler.First; else CB_Auswahl_Schueler.Next |
zuma - Mi 03.12.08 12:24
dann antworte ich dir mal wieder ;)
willst du wirklich IMMER wieder von vorne anfangen ?? das gibt dann doch eine endlosschleife ...
oder willst du immer alle einträge durchlaufen, egal an welcher stelle man anfängt ?
z.b. CoBo-inhalt
0 Name1
1 Name2
2 Name3
3 Name4
4 Name5
wenn man z.b. Name3 auswählt, sollen trotzdem alle 5 Einträge verarbeitet werden ?
dann solltest du dir mal ItemCount, itemindex von der Cobo in der hilfe angucken ;)
und dann mal in etwa so rangehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| merker := cobo.items.itemindex; for i := 0 to cobo.items.count-1 do begin note := 0; if (Noten_je_Schueler.Locate('Name', cobo.items.strings[i], [loPartialKey])=true) then begin Note := Noten_je_Schueler.FieldByName('Note').Value; end; if note > 0 then end; |
rob87 - Mi 03.12.08 12:43
zuma hat folgendes geschrieben : |
dann antworte ich dir mal wieder ;)
willst du wirklich IMMER wieder von vorne anfangen ?? das gibt dann doch eine endlosschleife ...
oder willst du immer alle einträge durchlaufen, egal an welcher stelle man anfängt ?
z.b. CoBo-inhalt
0 Name1
1 Name2
2 Name3
3 Name4
4 Name5
wenn man z.b. Name3 auswählt, sollen trotzdem alle 5 Einträge verarbeitet werden ?
dann solltest du dir mal ItemCount, itemindex von der Cobo in der hilfe angucken ;)
und dann mal in etwa so rangehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| merker := cobo.items.itemindex; for i := 0 to cobo.items.count-1 do begin note := 0; if (Noten_je_Schueler.Locate('Name', cobo.items.strings[i], [loPartialKey])=true) then begin Note := Noten_je_Schueler.FieldByName('Note').Value; end; if note > 0 then end; | |
Ich will solange die Wiederholungen machen, wie der Benutzer es ausgewählt hat
Delphi-Quelltext
1: 2: 3: 4:
| for i := 0 to irgendwas do begin End; |
Ich glaub du hast mich bissal anders verstanden. Des sind zwei Schleifen ineinander. Bei der äußeren Schleife soll er die ComboEinträge durchwechsel (praktisch ComboBox.Items.Next oder so *g*)
Und in der inneren Schleife soll er in der DB schauen, wie und ob er die Note zu dem Schueler findet.
Ich schau mir deine Lösung mal an... Aber ich glaub des haut bei mir ned hin. Aber nun erstmal Mahlzeit! :lol:
zuma - Mi 03.12.08 12:48
ok, dann also
Delphi-Quelltext
1:
| for i := 0 to cobo.items.count-1 do |
durch deine variante ersetzen.
Delphi-Quelltext
1: 2: 3: 4:
| if (Noten_je_Schueler.Locate('Name', cobo.items.strings[i], [loPartialKey])=true) then begin Note := Noten_je_Schueler.FieldByName('Note').Value; end; |
springt natürlich immer auf den selben dS, da locate immer auf den ersten treffer jumpt.
wenn in der tabelle der name mehrfach mit unterschiedliche noten ist:
Tabelle nach Namn sortieren,
per locate auf den ersten treffer setzen, dann in der tabelle immer next, solange der name noch der gleiche ist
rob87 - Mi 03.12.08 12:58
zuma hat folgendes geschrieben : |
ok, dann also
Delphi-Quelltext 1:
| for i := 0 to cobo.items.count-1 do |
durch deine variante ersetzen.
Delphi-Quelltext 1: 2: 3: 4:
| if (Noten_je_Schueler.Locate('Name', cobo.items.strings[i], [loPartialKey])=true) then begin Note := Noten_je_Schueler.FieldByName('Note').Value; end; |
springt natürlich immer auf den selben dS, da locate immer auf den ersten treffer jumpt.
wenn in der tabelle der name mehrfach mit unterschiedliche noten ist:
Tabelle nach Namn sortieren,
per locate auf den ersten treffer setzen, dann in der tabelle immer next, solange der name noch der gleiche ist |
Ich glaub ned, dass des bei mir so hinhaut. Denn ich brauch zwar eine Art Combobox.items.next oder combobox.eof-prüfung
Delete - Mi 03.12.08 13:01
Dann setz doch den ItemIndex der ComboBox. Am Ende bist Du, wenn der ItemIndex Items.Count - 1 entspricht.
zuma - Mi 03.12.08 13:10
Combobox.items.next gibts nich, dafür machste
Delphi-Quelltext
1: 2:
| if (combobox.items.Count - 1) <= (combobox.items.index + 1) then combobox.items.index := combobox.items.index + 1; |
endeprüfung wie DeddyH bereits gesagt hat
rob87 - Mi 03.12.08 13:59
zuma hat folgendes geschrieben : |
Combobox.items.next gibts nich, dafür machste
Delphi-Quelltext 1: 2:
| if (combobox.items.Count - 1) <= (combobox.items.index + 1) then combobox.items.index := combobox.items.index + 1; |
endeprüfung wie DeddyH bereits gesagt hat |
Ok. Klar. Stimmt. Merci
Noch ne kurze Frage. Wasn der UNterschied zwischen CB.Items.Index und CB.ItemIndex ?
Des muss doch eigentlich ItemIndex heißen, oder?
zuma - Mi 03.12.08 15:02
jo, stimmt, tippfehler von mir,
combobox.items.index
gibts gar net
(sry, bin alt und der Kopf funzt nicht mehr so wie früher :mrgreen:)
rob87 - Mi 03.12.08 15:08
zuma hat folgendes geschrieben : |
jo, stimmt, tippfehler von mir,
combobox.items.index
gibts gar net
(sry, bin alt und der Kopf funzt nicht mehr so wie früher :mrgreen:) |
Ned tragisch. Aber nun funktionierts alles so wies so. Nochmal danke an alle, dass ihr mich solang ausgehalten habt :-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!