AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Sql insert into

Ein Thema von Never01 · begonnen am 15. Mär 2020 · letzter Beitrag vom 29. Mär 2020
Antwort Antwort
Seite 5 von 5   « Erste     345
Delphi.Narium

Registriert seit: 27. Nov 2017
1.855 Beiträge
 
Delphi 7 Professional
 
#41

AW: Sql insert into

  Alt 28. Mär 2020, 15:48
Dashier ist zwar schon was älter, sollte vom Prinzip her aber funktionieren: http://www.teechart.net/docs/teechar...l/manu2l4k.htm

Statt der dort genannten Tabelle nimmst Du halt die ADOQuery, mit der Du bisher Deine Abfragen machst.

Geht natürlich auch über Label und Progressbar.

Dann muss Du Dein Select ausführen und für jede Zeile des Ergebnisses ein Label und eine Progressbar erstellen.

Ohne die genaue Aufgabenstellung zu kennen, ohne die Dir vorgegebenen Rahmenbedingungen zu kennen, wird es aber schwierig hier 'nen sinnvoll zu verwertenden Beispielcode zu erstellen oder auch nur Hinweise zu Lösungsmöglichkeiten zu geben.
  Mit Zitat antworten Zitat
Never01

Registriert seit: 1. Mär 2020
15 Beiträge
 
#42

AW: Sql insert into

  Alt 28. Mär 2020, 19:44
Dashier ist zwar schon was älter, sollte vom Prinzip her aber funktionieren: http://www.teechart.net/docs/teechar...l/manu2l4k.htm

Statt der dort genannten Tabelle nimmst Du halt die ADOQuery, mit der Du bisher Deine Abfragen machst.

Geht natürlich auch über Label und Progressbar.

Dann muss Du Dein Select ausführen und für jede Zeile des Ergebnisses ein Label und eine Progressbar erstellen.

Ohne die genaue Aufgabenstellung zu kennen, ohne die Dir vorgegebenen Rahmenbedingungen zu kennen, wird es aber schwierig hier 'nen sinnvoll zu verwertenden Beispielcode zu erstellen oder auch nur Hinweise zu Lösungsmöglichkeiten zu geben.
Dankeschön

Ich habe meiner Version leider kein TDBchart...

Zur Aufgabenstellung:

'Die existiert nicht'. Ich soll lediglich verschiedene Auswertungsmöglichkeiten anbieten. Aber da ist nichts vorgegeben. Deshalb frage ich euch ja, da evtl. von euch mir jemand helfen kann.
Was ich möchte: Im Diagramm soll angezeigt werden, wie oft ein Spieler das erste, zweite und dritte Spiele gegen den selben Spieler gewonnen hat. Ich hoffe, ich habe mich diesmal besser ausgedrückt
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.855 Beiträge
 
Delphi 7 Professional
 
#43

AW: Sql insert into

  Alt 28. Mär 2020, 20:12
Bevor Du Dir Gedanken machst, wie Du das Ergebnis darstellen kannst, versuch bitte erst einmal ein Select zu bauen, das Dir das gewünschten Ergebnis liefert.

Wenn Du das hast, poste es bitte hier, dann kann man sich Gedanken machen, ob und wie das grafisch darstellen werden kann.

(Wenn es um mehrere Auswertungen geht, kannst Du natürlich auch mehrere Selects erstellen und diese hier posten.)

Welche Delphiversion hast Du eigentlich?
  Mit Zitat antworten Zitat
Never01

Registriert seit: 1. Mär 2020
15 Beiträge
 
#44

AW: Sql insert into

  Alt 29. Mär 2020, 14:22
Bevor Du Dir Gedanken machst, wie Du das Ergebnis darstellen kannst, versuch bitte erst einmal ein Select zu bauen, das Dir das gewünschten Ergebnis liefert.

Wenn Du das hast, poste es bitte hier, dann kann man sich Gedanken machen, ob und wie das grafisch darstellen werden kann.

(Wenn es um mehrere Auswertungen geht, kannst Du natürlich auch mehrere Selects erstellen und diese hier posten.)

Welche Delphiversion hast Du eigentlich?
Ich verwende Delphi7, allerdings sind da nicht alle Mittel installiert.

Ich weiß leider nicht, was du mit den Select meinst. Mein Problem ist ja, dass ich gar nicht weiß, wie das überhaupt geht. Es tut mir leid, aber wir wurden völlig ins kalte Wasser geschmissen.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.855 Beiträge
 
Delphi 7 Professional
 
#45

AW: Sql insert into

  Alt 29. Mär 2020, 15:19
Weiter oben hast Du geschrieben, dass Du schon Auswertungen hast.

Wie machst Du die denn?

In Post 37 und 39 dieses Threads stehen doch schon Selectanweisungen, kurz Selects.
  Mit Zitat antworten Zitat
Never01

Registriert seit: 1. Mär 2020
15 Beiträge
 
#46

AW: Sql insert into

  Alt 29. Mär 2020, 15:27
Weiter oben hast Du geschrieben, dass Du schon Auswertungen hast.

Wie machst Du die denn?

In Post 37 und 39 dieses Threads stehen doch schon Selectanweisungen, kurz Selects.
Delphi-Quellcode:
begin //Suchen des Siegers
datamodule3.ADOQuery3.Close;
  datamodule3.ADOQuery3.SQL.Text:='select Sieger_NN, Spieler1nn, Spieler1vn, Spieler2nn, Spieler2vn, Punktestand1, Punktestand2, Punktestand3 from Spiel where Sieger_NN = :sp1nn6 ';
  datamodule3.ADOQuery3.Parameters.ParamByName('sp1nn6').Value := edsp1nn6.Text;
  datamodule3.ADOQuery3.Open;
  TstringGrid(DBGrid1).DefaultColWidth:=100;

end;
und

Delphi-Quellcode:
begin

  if (edsp1nn5.Text='') or (edsp1vn5.Text='')
  then begin
       showmessage ('Daten eingeben') ;
       end
       else begin
                                   // Suchen eines Spielers
datamodule3.ADOQuery3.Close;
  datamodule3.ADOQuery3.SQL.Text:='select Spieler1nn,Spieler1vn,Spieler2nn,Spieler2vn, Punktestand1, Punktestand2, Punktestand3, Sieger_NN from Spiel where Spieler1vn = :sp1vn5 and Spieler1nn = :sp1nn5 or (Spieler2vn = :sp2vn5 and Spieler2nn = :sp2nn5)';
  datamodule3.ADOQuery3.Parameters.ParamByName('sp1vn5').Value := edsp1vn5.Text;
  datamodule3.ADOQuery3.Parameters.ParamByName('sp1nn5').Value := edsp1nn5.Text;
  datamodule3.ADOQuery3.Parameters.ParamByName('sp2vn5').Value := edsp1vn5.Text;
  datamodule3.ADOQuery3.Parameters.ParamByName('sp2nn5').Value := edsp1nn5.Text;
  datamodule3.ADOQuery3.Open;
  TstringGrid(DBGrid1).DefaultColWidth:=90;

            end;
end;

Sorry für die Dusseligkeit.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.855 Beiträge
 
Delphi 7 Professional
 
#47

AW: Sql insert into

  Alt 29. Mär 2020, 17:04
Zitat von Never01:
Was ich möchte: Im Diagramm soll angezeigt werden, wie oft ein Spieler das erste, zweite und dritte Spiele gegen den selben Spieler gewonnen hat.
Du möchtest also das oben beschriebene "irgendwie" grafisch darstellen.

Bei genauerer Überlegung scheint mir das bei dem vorliegenden Datenmodell, also der vorliegenden Art der Daten und deren Gestaltung, nicht wirklich (mit vertretbarem Aufwand) möglich.

Da der Punktestand nicht für Gewinner und Verlierer separat gespeichert ist, sondern in der Form Gewinner:Verlierer (also z. B. 1:0) muss man bei einer Auswertung erstmal die Datenbankinhalte aufteilen.

Meine Kenntnisse bezüglich Access sind nicht ausreichend, um hier einen halbwegs sinnvollen Lösungsbeitrag zu liefern. Datenbankseitig sehe ich momentan keine Lösungsmöglichkeit, die lesbar und verständlich wäre. Hier wären schon sehr fundierte Kenntnisse in der SQL-Variante von Access nötig.

Es bliebe also noch die Möglichkeit, die Auswertung innerhalb von Delphi vorzunehmen.

Dazu sollte eine Abfrage in dieser Form ausreichen:

datamodule3.ADOQuery3.SQL.Text:='select Spieler1nn, Spieler1vn, Spieler2nn, Spieler2vn, Punktestand1, Punktestand2, Punktestand3, Sieger_NN from Spiel where (Spieler1vn = :sp1vn5 and Spieler1nn = :sp1nn5) and (Spieler2vn = :sp2vn5 and Spieler2nn = :sp2nn5)';

Danach müsstest Du das Ergebnis in einer Schleife abarbeiten und für jeden Datensatz prüfen, welcher Spieler welches Spiel gewonnen hat (also die Punktstände prüfen) und abhängig vom Ergebnis zählen.

Sowas in der Art (wobei das weder geprüft noch korrektes Delphi ist, sondern nur 'ne hingedaddelte Idee)
Delphi-Quellcode:
const
  csCaption = 'Spieler %d hat Spiel %d %d mal gewonnen.';
var
  Punktestand : String;
  PunkteSpieler1 : Integer;
  PunkteSpieler2 : Integer;
  GewinnSpiel1_Spieler1 : Integer;
  GewinnSpiel1_Spieler2 : Integer;
  GewinnSpiel2_Spieler1 : Integer;
  GewinnSpiel2_Spieler2 : Integer;
  GewinnSpiel3_Spieler1 : Integer;
  GewinnSpiel3_Spieler2 : Integer;
begin
  GewinnSpiel1_Spieler1 := 0;
  GewinnSpiel1_Spieler2 := 0;
  GewinnSpiel2_Spieler1 := 0;
  GewinnSpiel2_Spieler2 := 0;
  GewinnSpiel3_Spieler1 := 0;
  GewinnSpiel3_Spieler2 := 0;

  datamodule3.ADOQuery3.SQL.Text:='select Spieler1nn, Spieler1vn, Spieler2nn, Spieler2vn, Punktestand1, Punktestand2, Punktestand3, Sieger_NN from Spiel where (Spieler1vn = :sp1vn5 and Spieler1nn = :sp1nn5) and (Spieler2vn = :sp2vn5 and Spieler2nn = :sp2nn5)';
  // ---------------------------------------------
  // Hier noch die Parameter der Abfrage befüllen.
  // ---------------------------------------------
  datamodule3.ADOQuery3.Open;
  while not datamodule3.ADOQuery3.EoF do begin
    // Hier jetzt die Punktstände auswerten:
    // Punktestand 1
    Punktestand := datamodule3.ADOQuery3.FieldByName['Punktestand1').AsString;
    PunkteSpieler1 := StrToInt(Copy(Punktestand,1,Pos(':',Punktestand) - 1));
    PunkteSpieler2 := StrToInt(Copy(Punktestand,Pos(':',Punktestand) + 1,Lenght(Punktestand)));
    if PunkteSpieler1 > PunkteSpieler2 then GewinnSpiel1_Spieler1 := GewinnSpiel1_Spieler1 + 1;
    if PunkteSpieler1 < PunkteSpieler2 then GewinnSpiel1_Spieler2 := GewinnSpiel1_Spieler2 + 1;
    // Punktestand 2
    Punktestand := datamodule3.ADOQuery3.FieldByName['Punktestand2').AsString;
    PunkteSpieler1 := StrToInt(Copy(Punktestand,1,Pos(':',Punktestand) - 1));
    PunkteSpieler2 := StrToInt(Copy(Punktestand,Pos(':',Punktestand) + 1,Lenght(Punktestand)));
    if PunkteSpieler1 > PunkteSpieler2 then GewinnSpiel2_Spieler1 := GewinnSpiel2_Spieler1 + 1;
    if PunkteSpieler1 < PunkteSpieler2 then GewinnSpiel2_Spieler2 := GewinnSpiel2_Spieler2 + 1;
    // Punktestand 3
    Punktestand := datamodule3.ADOQuery3.FieldByName['Punktestand3').AsString;
    PunkteSpieler1 := StrToInt(Copy(Punktestand,1,Pos(':',Punktestand) - 1));
    PunkteSpieler2 := StrToInt(Copy(Punktestand,Pos(':',Punktestand) + 1,Lenght(Punktestand)));
    if PunkteSpieler1 > PunkteSpieler2 then GewinnSpiel3_Spieler1 := GewinnSpiel3_Spieler1 + 1;
    if PunkteSpieler1 < PunkteSpieler2 then GewinnSpiel3_Spieler2 := GewinnSpiel3_Spieler2 + 1;
    datamodule3.ADOQuery3.Next;
  end;
  // Hier haben wir jetzt sechs Zahlen als Ergebnis, die ggfls. mit TLabel oder TProgressbar
  // ausgegeben werden können. (lbSpiel... = TLabel, pgSpiel... = TProgressbar)
  lbSpiel1_Spieler1.Caption := Format(csCaption, [1,1,GewinnSpiel1_Spieler1]);
  lbSpiel1_Spieler2.Caption := Format(csCaption, [2,1,GewinnSpiel1_Spieler2]);
  lbSpiel2_Spieler1.Caption := Format(csCaption, [1,2,GewinnSpiel2_Spieler1]);
  lbSpiel2_Spieler2.Caption := Format(csCaption, [2,2,GewinnSpiel2_Spieler2]);
  lbSpiel3_Spieler1.Caption := Format(csCaption, [1,3,GewinnSpiel3_Spieler1]);
  lbSpiel3_Spieler2.Caption := Format(csCaption, [2,3,GewinnSpiel3_Spieler2]);
  pgSpiel1_Spieler1.Position := GewinnSpiel1_Spieler1;
  pgSpiel1_Spieler2.Position := GewinnSpiel1_Spieler2;
  pgSpiel2_Spieler1.Position := GewinnSpiel2_Spieler1;
  pgSpiel2_Spieler2.Position := GewinnSpiel2_Spieler2;
  pgSpiel3_Spieler1.Position := GewinnSpiel3_Spieler1;
  pgSpiel3_Spieler2.Position := GewinnSpiel3_Spieler2;
  pgSpiel1_Spieler1.Max := datamodule3.ADOQuery3.RecordCount;
  pgSpiel1_Spieler2.Max := pgSpiel1_Spieler1.Max;
  pgSpiel2_Spieler1.Max := pgSpiel1_Spieler1.Max;
  pgSpiel2_Spieler2.Max := pgSpiel1_Spieler1.Max;
  pgSpiel3_Spieler1.Max := pgSpiel1_Spieler1.Max;
  pgSpiel3_Spieler2.Max := pgSpiel1_Spieler1.Max;
end;
In den Variabeln GewinnSpiel1_Spieler1 bis GewinnSpiel3_Spieler2 sollte nun stehen, welcher der beiden ausgewerteten Spieler welches Spiel wie oft gewonnen hat.

Habe keine Ahnung, ob das jetzt ein wirklich sinnvoller Ansatz ist. Mir erscheint er unnützt kompliziert.

Da die Aufgabenstellung wohl leider eher diffus zu sein scheint und ich keine Ahnung habe, welche Delphi- und welche Datenbankkenntnis als gegeben vorausgesetzt werden können, ist eine sinnvolle Hilfestellung leider kaum möglich.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf