Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: So 25.05.08 11:48 
Hi, Delpher,

ich bekomme bei folgendem Code den obigen Error:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
for n := 1 to stringgrid1.rowcount-1 do
  begin
    try
      table2.locate('SEX;ALT', VarArrayOf([stringgrid1.cells[2,n], stringgrid1.cells[1,n]]), []);
      stringgrid1.cells[5,n] := table2.fieldbyname('UG').asstring;
      stringgrid1.cells[6,n] := table2.fieldbyname('OG').asstring;
    except showmessage('Geburtstag fehlt oder das Alter kann nicht stimmen!');
    end;
  end;


Das Alter in einem Datensatz wurde als 108 Jahre berechnet, statt 8 Jahre, weil es in der DBTabelle falsch drin steht. Erlaubte Alter sind 1 bis 18 Jahre.
Die Fehlermeldung wird danach angezeigt, aber: Operation nicht anwendbar.

Wie kann ich das (programmtechnisch) vermeiden?

Danke für Idee, Hilfe,
Detlef

_________________
ut vires desint, tamen est laudanda voluntas
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 25.05.08 11:58 
Wie berechnst du?
Mod()

_________________
Markus Kinzler.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: So 25.05.08 20:11 
Hi, Markus,

ja, die Mod-Funktion kenne ich natürlich, sie spielt hier aber keine Rolle. Entscheidend ist warum das locate, was ja nicht erfolgreich sein kann, diesen Error erzeugen kann, zumindest in der Entwicklungsumgebung. Wenn ich die Exe ohne EUmgebung laufen lasse, merke ich davon nichts, sondern die showmessage kommt gleich.

Soll ich das denn nicht so ernst nehmen?

Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 26.05.08 07:41 
Das mit MOD war ein Vorschlag, denn

108 mod 100 = 8

_________________
Markus Kinzler.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 26.05.08 07:52 
Hi, Markus,

ja, das habe ich auch so gesehen. Ich habe mich nur gewundert, dass die EUmgeb bei diesem Code so meckert. Dann lase ich es wohl so, oder hat noch jemand anderes eine Idee?

Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 26.05.08 10:01 
locate liefert 'true', wenn der Datensatz gefunden wurde und 'false', wenn nicht. Du musst bei der Verwendung von 'Locate' *immer* das Ergebnis prüfen, also so etwa:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
If Locate('SEX;ALT', KeyFieldArray,[]) Then Begin
  ..
End
Else ShowError('Datensatz nicht gefunden');

_________________
Na denn, dann. Bis dann, denn.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 26.05.08 15:52 
Das war's, danke Alzaimer,
Detlef

_________________
ut vires desint, tamen est laudanda voluntas