![]() |
Zugriff auf Inhalt einer DBGrid Zelle
Hi!
ich hab ein problem mit meinem programm und zwar soll ich für die schule ein galgenraten programm schreiben...das funktioniert auch sehr gut aber unser lehrer hat uns vorgeschrieben die hiscore oder bestenliste als datenbank zu machen. ich habe ein dbgrid und eine dbedit und will das, wenn ich einen namen in das dbedit-feld eintrage, das sich der name an der richtigen stelle einträgt, nu8n ist mein problem das ich aus dem quellcode noch andere daten manuell in das dbgrid eintragen müsste, aber ich hab keinen blassen wie ich den inhalt einen einzelnen zelle ändern kann... bitte helft mir! :) Smith :) |
Re: Zugriff auf Inhalt einer DBGrid Zelle
Hallo,
Wie ist das gemein: Zitat:
Auf jeden Fall weißt du ja wie die Tabellenspalten betitelt sind. Mit table1.FieldByName('Spaltenname') oder mit dbgrid1.DataSource.DataSet.FieldByName() kannst du auf die Felder des aktuellen Datensatzes zugreifen. |
Re: Zugriff auf Inhalt einer DBGrid Zelle
nun nachdem der spieler gespielt hat, hat er entweder verloren oder gewonnen. demnach stehen die ergebnisse des spiels fest...ich muss diese ergebnisse aber in die tabelle eintragen...die tabelle sieht folgendermassen aus:
der kopf besteht aus: No. Fehlversuche Spieler(Name) Anzahl der Buchstaben Und die tabelle hat 10 zeilen...nun muss ein neues spielergebnis eingetragen werden. dazu muss ich die spieldaten fehlversuche und anzahl der buchstaben ind die richtige zeile eingeben und der name wird dann später über ein editfeld vom spieler ind die passende zeile eingeben. aber ich weiss nicht wie ich auf eine ganz bestimmte zeile eines feldes zugreifen soll....zum beispiel: die spieler hat in der bestenliste den 5.platz, dann müssen die passenden werte in die 5. zeile geschrieben werden, aber ich weiss nicht wie ich nun genau die 5. zeile ansprechen soll... Ich flehe echt um hilfe...vllt ist es ja so einfach das ich es einfach nur übersehe...aber ich zerbrech mir schon echt ne weile den kopp darüber :) |
Re: Zugriff auf Inhalt einer DBGrid Zelle
Hallo Smith,
zunächst einaml herzlich willkommen im Delphi-PRAXIS Forum. Wenn No ein Schlüsselfeld ist und die Platzierung kennzeichnet, findest du den 5. Datensatz mit:
Delphi-Quellcode:
Ist No kein Schlüsselfeld, benutzt du anstatt FindKey die Methode Locate.
Table1.FindKey([5]);
{ jetzt in den Edit Mode } Table1.Edit; { Daten eintragen } Table1.FieldByName('Spieler').AsString := AktSpieler; ... { Daten übernehmen } Table1.Post; |
Re: Zugriff auf Inhalt einer DBGrid Zelle
Danke MrSpock
mit deiner Hilfe kann ich eine zeile direkt ansteuern...ein weiteres problem ist das ich es nun seit 2 studen nich hinbekomm mit der paradox-datenbank alles zu ordnen. obwohl ich den secondaryindex auf fehleranzahl und buchstaben gestellt habe wird der rest nich geordnet...ausserdem muss der enue eintrag in die passende zeile eingetragen werde, was ja von dem secondaryindex abhängt... kann mir jemand helfen? |
Re: Zugriff auf Inhalt einer DBGrid Zelle
Hallo Smith,
wenn ich dich richtig verstanden habe, hast du einen Sekundärindex angelegt, der aus den beiden Feldern Fehlversuche;Anzahl_der_buchstaben besteht. Wenn du diesen jetzt auswählst, sollten die Einträge nach Anzahl der Fehlversuche und wenn diese gleich sind nach Anzahl_der_Buchdstaben sortiert werden. Dazu muss der Sekundärindex natürlich ausgewählt sein (z.B. über die Eigenschaft IndexName). Welche Sortierung funktioniert denn nicht? Ich bin mir auch nicht sicher, ob dein Ansatz richtig ist: Du solltest die Datenbank vielleicht nach No (wenn das die Plazierung ist) sortieren. Dann suchst du den ersten Eintrag, der mehr Fehlversuche hat:
Delphi-Quellcode:
Wie sollen die Anzahl_der_Buchstaben in die Sortierung eingehen?
Table1.First;
gefunden := False; while Not gefunden and Not Table1.EOF do begin if Table1.FieldByName('Fehlversuche').AsInteger > AktFehler then gefunden := True else Table1.EOF; end; if gefunden then begin Table1.Edit; Table1.FieldByName('Fehlversuche').AsInteger := AktFehlversuche; Table1.FieldByName('Name').AsString := AktName; Table1.Post; end; |
Re: Zugriff auf Inhalt einer DBGrid Zelle
hi MrSpockich werd mir das nochma anschaun und meld mich dann nochmal ok?
hab nen kleinen einfall |
Re: Zugriff auf Inhalt einer DBGrid Zelle
Zitat:
|
Re: Zugriff auf Inhalt einer DBGrid Zelle
also mein problem gestaltet sich wie folgt...
ich mach alles nun anders und lass das ordnen die tabelle über den index übernehmen...
Delphi-Quellcode:
:angle:
procedure TForm5.Button1Click(Sender: TObject);
var name:string; a,c:integer; begin name:=edit1.Text; a:=length(Form1.Edit1.text); for c:=1 to 10 do Form4.Table1.FindKey([c]); if Form4.Table1.FieldByName('Wortlänge').AsInteger >= length(Form1.Edit1.text) then begin Form4.table1.First; Form4.table1.Edit; Form4.Table1.FieldByName('Spieler').AsString:=name; Form4.Table1.FieldByName('Wortlänge').AsInteger:=a; Form4.Table1.FieldByName('Wort').AsString:=Form1.Edit1.text; Form4.Table1.Post; Form4.Table1.Refresh; Form4.show(); Form5.Close; end else begin Form4.table1.Next; Form4.table1.Edit; Form4.Table1.FieldByName('Spieler').AsString:=name; Form4.Table1.FieldByName('Wortlänge').AsInteger:=a; Form4.Table1.FieldByName('Wort').AsString:=Form1.Edit1.text; Form4.Table1.Post; Form4.Table1.Refresh; Form4.show(); Form5.Close; end; end; end. Also mein problem liegt darin das ich nur 10 zeilen in der tabelle haben will und jeweils ein neuer eintrag mit allen verglichen werden soll und dann den den der neue eintrag übertifft halt ersetzt oder das der neue eintrag nicht eingetragen wird...dann kann ne msg kommen oder so... kannst du mir jetzt noch helfen? |
Re: Zugriff auf Inhalt einer DBGrid Zelle
ok ich hab gemerkt das ich einen blödsinnigen code fabriziert habe und hab das geändert, nun weiss nur noch nich wie ich die zeilenanzahl der tabelle auf 10 begrenzen kann....wenn ich das raushabe hab ichs schon fast geschafft...geht das überhaupt?
mfg Smith |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz