AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi datensätze vergleichen
Thema durchsuchen
Ansicht
Themen-Optionen

datensätze vergleichen

Ein Thema von Butterflyz · begonnen am 4. Jul 2004 · letzter Beitrag vom 6. Jul 2004
Antwort Antwort
Butterflyz

Registriert seit: 19. Mai 2004
19 Beiträge
 
#1

Re: datensätze vergleichen

  Alt 4. Jul 2004, 15:15
oh mein gott jetzt habe ich komplett die übersicht verloren!
also ich versuche es mal zu beschreiben:

in einer tabelle sollen die ergebnisse eines fußballspeiels eingetragen werden, also tore, punkte usw.
bestimmte daten, nämlich das datum und die beiden mannschaften werden aus einer tabelle abgerufen, in der die spieletermine stehen. man soll also nur die ergebnisse dieser spiele bearbeiten können, die in der termin-tabelle stehen.
wenn man ein neues spielergebnis eintragen möchte, wird erst geguckt, ob es überhaupt einen neuen termin gibt.
wenn ja, sollen die neuen daten (mehrzahl von datum? ), sofern es mehrere sind, in eine combobox gefüllt werden und die mannschaften werden gleichzeitig in ein label und ein DBEdit feld geschrieben und zur tabelle übertragen.
dann soll das neue datum, was in die ergebnis-tabelle aufgenommen wurde, zu den items in einer anderen combobox hinzugefügt werden (sofern es nicht schon drinsteht), so dass man die datensätze direkt per auswahl durch die combobox ansteuern kann (darin stehen nur die daten (mehrzahl von datum)).
das wärs denke ich...

was ich gemacht habe:
ich habe 2 comboboxen (Datum & Datum_Neu), Datum dient zur navigation innerhalb der ergebnistabelle, in Datum_Neu werden die neuen daten (mehrzahl von datum), sofern vorhanden, aus der termin-tabelle geschrieben.
wenn man einen datensatz bei den ergebnissen hinzufügen will, wird direkt abgefragt, ob es neue termine gibt:

Delphi-Quellcode:
procedure TForm5.ADOTable1AfterInsert(DataSet: TDataSet);
var i,n,m : integer;
begin
  form5.qryMannschaften.Close;
  form5.qryMannschaften.SQL.Clear;
  form5.qryMannschaften.SQL.Text
  := 'SELECT datum, mannschaft_1, mannschaft_2 FROM TTermin WHERE datum NOT IN (SELECT datum from TSpielergebnisse)';
  form5.qryMannschaften.Open;
  if form5.qryMannschaften.RecordCount = 0
  then
  begin
    showmessage('Es gibt keine neuen Termine!');
    exit;
  end
  else //wenn es neue termine gibts
  begin
    n := form5.qryMannschaften.RecordCount;
    i := 0;
    form5.Datum_Neu.Clear;
    repeat
    begin
      form5.Datum_Neu.Items.Add(DateToStr(form5.qryMannschaften.FieldByName('datum').AsDateTime));
      inc(i);
      form5.qryMannschaften.Next;
    end;
    until i = n; //werden die neuen daten in die combobox geschrieben
    form5.Datum_Neu.Show; //und die combobox angezeigt
    form5.Datum.Hide;
    form5.Datum_Neu.ItemIndex := 0;
    form5.Label11.Caption := form5.qryMannschaften.FieldByName('mannschaft_1').AsString;
    form5.DBEdit9.Text := form5.qryMannschaften.FieldByName('mannschaft_1').AsString;
    form5.Label12.Caption := form5.qryMannschaften.FieldByName('mannschaft_2').AsString;
    form5.DBEdit10.Text := form5.qryMannschaften.FieldByName('mannschaft_2').AsString;
    form5.ADOTable1.Post;
nachdem es dann zur tabelle geschickt wurde, wird das neue datum in die navigations combobox (Datum) geschrieben und diese wird dann wieder angezeigt:

Delphi-Quellcode:
procedure TForm5.ADOTable1AfterPost(DataSet: TDataSet);
var m,n : integer;
begin
  m := form5.Datum.Items.Count;
  n := 0;
  repeat
  begin
    form5.Datum.ItemIndex := n;
    if form5.Datum_Neu.Text <> form5.Datum.Text
    then form5.Datum.Items.Add(form5.datum_neu.Text);
    inc(n);
  end;
  until n = m;
  form5.Datum_Neu.Hide;
  form5.Datum.Show;
end;
wenn es mehrere neue termine gab und man einen anderen auswählt als den ersten, dann werden die mannschaften aus der termintabelle aus dem datensatz, der das ausgewählte datum enthält, geholt:

Delphi-Quellcode:
procedure TForm5.Datum_NeuChange(Sender: TObject);
begin
  with form5.qryDatumNeu do
  begin
    Close;
    SQL.Clear;
    SQL.Text := 'SELECT mannschaft_1, mannschaft_2 FROM TTermin WHERE datum = '
    +form5.Datum_Neu.Text;
    Open;
  end;
  form5.ADOTable1.Edit;
  form5.DBEdit1.Text := form5.Datum_Neu.Text;
  form5.Label11.Caption := form5.qryDatumNeu.FieldByName('mannschaft_1').AsString;
  form5.DBEdit9.Text := form5.qryDatumNeu.FieldByName('mannschaft_1').AsString;
  form5.Label12.Caption := form5.qryDatumNeu.FieldByName('mannschaft_2').AsString;
  form5.DBEdit10.Text := form5.qryDatumNeu.FieldByName('mannschaft_2').AsString;
  form5.ADOTable1.Post;
end;
was nicht klappt:
- das abrufen der mannschaften, wenn zwischen mehreren neuen daten ausgewählt wird ('Synatxfehler in Zahl in Abfrageausdruck 'datum = 05.07.2004"), anscheinend kann man ein DateTime-Feld nicht mit einem String vergleichen - wie dann?

- wenn es keine neuen termine gibt, wird einfach der Text 'Datum_Neu' 3 mal hinzugefügt ()anzahl der datensätze in TTermin bzw. TSpielergebnisse)

was ich nicht kann:
- wenn ich in der combobox Datum, also der combobox zum direkten ansteuern der datensätze in der Ergebnisse-Tabelle, ein datum auswähle, wie kann ich dann in der tabelle zum entsprechenden datensatz springen? muss das wieder mittels einer query geschehen oder geht das auch eleganter?

so, ist jetzt etwas mehr geworden, aber ich hoffe ich konnte jetzt meine frage einigermaßen deutlich formulieren...

PS: das 31.12.1899 Problem hat sich irgendwie von selbst gelöst, hab nur keine ahnung wie...
~stay on top or remain from the underground~
  Mit Zitat antworten Zitat
Antwort Antwort


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 +1. Es ist jetzt 22:40 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 by Thomas Breitkreuz