Autor Beitrag
chrissy
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 21.01.05 18:30 
Hi Leute!

Ich will in einem bestehenden Datensatz (Paradox7) den Wert eines Feldes dynamisch ändern (Durchschnittsnote neu berechnen) und darin Speichern.
Ich habe es wie folgt versucht:
Datensatz mit Table.Locate('Id', idLehrer, []); auswählen und dann:

Table.FieldByName['Durchschnittsnote'].AsInteger:=note;
Table.FieldByName['#Vermittlung'].AsInteger:=anzverm;

Die Felermeldung, die ich bekomme ist, dass die Tabelle nicht im editir-Modus ist. Was habe ich da falsch gemacht, bzw. wie kann ich das Problem lösen???

Danke schon mal im Voraus.

Gruß
Chrissy
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 21.01.05 18:38 
Vor dem setzen der Feldwerte Table.Edit, nach dem Setzen der Feldwert Table.Post aufrufen ... Und das für jeden Datensatz neu ...
Tipp: Aktivier das Caching der Datensatzanfragen, wird um Einiges schneller ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
chrissy Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 21.01.05 18:55 
Sorry, gleiches Problem, hier mal der Quellcode....

ausblenden 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:
28:
29:
30:
begin
   idLehrer := StrToInt(Form6.DBText4.Caption);
   if (DBEdit4.Text<>'') then
      begin
         note:=StrToInt(DBEdit4.Text);
         if ((note>6) or (note<1)) then begin
           Showmessage('Ungültige Note');
           exit;
         end
      else begin
           Daten.tLehrer.Locate('Id', idLehrer, []);
           durchschnittsnote:=Daten.TLehrer.FieldValues['Bewertung'];
           anzVerm:=Daten.tLehrer.FieldValues['#Vermittlung'];
           hilf:=((anzVerm*durchschnittsnote)+note)mod(anzVerm+1);
           note:=((anzVerm*durchschnittsnote)+note)div(anzVerm+1);
           if (hilf>=((anzVerm+1)/2)) then note:=note+1
                                      else note:=note;
           inc(anzVerm);
           Daten.tLehrer.Edit;
           Daten.tLehrer.Locate('Id', idLehrer, []);
           Daten.tLehrer.FieldByName('Bewertung').AsInteger:=note;
           Daten.tLehrer.FieldByName('#Vermittlung').AsInteger:=anzVerm;
           Daten.tLehrer.post;
           Daten.tLehrer.prior;
         end;
      end;

   daten.tVermittlung.post;
   self.Close;
end;



Was habe ich hier noch falsch gemacht???
chrissy Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 21.01.05 19:10 
Ok, hat sich erledigt.... ;)
hab den Fehler gefunden!
danke für deine schnelle hilfe!

Gruß
Chrissy