Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zugriff auf Inhalt einer DBGrid Zelle (https://www.delphipraxis.net/7445-zugriff-auf-inhalt-einer-dbgrid-zelle.html)

Smith 12. Aug 2003 13:44


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

Biohazard 12. Aug 2003 15:45

Re: Zugriff auf Inhalt einer DBGrid Zelle
 
Hallo,

Wie ist das gemein:

Zitat:

nu8n ist mein problem das ich aus dem quellcode noch andere daten manuell in das dbgrid eintragen müsste
Werden die Daten nun im/vom Quelltext eingetragen nachdem du den Namen eigegeben hast oder werden sie von dir im nachhinein manuell eingetragen.

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.

Smith 12. Aug 2003 16:42

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

MrSpock 12. Aug 2003 19:39

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:
Table1.FindKey([5]);
{ jetzt in den Edit Mode }
Table1.Edit;
{ Daten eintragen }
Table1.FieldByName('Spieler').AsString := AktSpieler;
...
{ Daten übernehmen }
Table1.Post;
Ist No kein Schlüsselfeld, benutzt du anstatt FindKey die Methode Locate.

Smith 12. Aug 2003 23:17

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?

MrSpock 13. Aug 2003 14:08

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:
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;
Wie sollen die Anzahl_der_Buchstaben in die Sortierung eingehen?

Smith 13. Aug 2003 14:24

Re: Zugriff auf Inhalt einer DBGrid Zelle
 
hi MrSpockich werd mir das nochma anschaun und meld mich dann nochmal ok?
hab nen kleinen einfall

MrSpock 13. Aug 2003 14:55

Re: Zugriff auf Inhalt einer DBGrid Zelle
 
Zitat:

Zitat von Smith
hi MrSpock ich werd mir das nochma anschaun und meld mich dann nochmal ok?
hab nen kleinen einfall

Gerne :mrgreen: .

Smith 13. Aug 2003 17:39

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

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?

Smith 14. Aug 2003 17:41

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 07:41 Uhr.
Seite 1 von 2  1 2      

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