Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: So 25.05.08 11:48
Hi, Delpher,
ich bekomme bei folgendem Code den obigen Error:
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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: So 25.05.08 11:58
Wie berechnst du?
Mod()
_________________ Markus Kinzler.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: 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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mo 26.05.08 07:41
Das mit MOD war ein Vorschlag, denn
108 mod 100 = 8
_________________ Markus Kinzler.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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:
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 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 26.05.08 15:52
Das war's, danke Alzaimer,
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
|