Autor Beitrag
wwwdirk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D6 Prof / D2005 Prof
BeitragVerfasst: Fr 10.08.07 10:39 
Hallo,
eigentlich will ich mit Locate einen bestimmten Datensatz positionieren, um diesen anschliessend zu löschen:
ausblenden Delphi-Quelltext
1:
2:
if DM.DSUserRoles.Locate('ROLE_ID', aRoleId, []) then
  DM.DSUserRoles.Delete;

Theoretisch liefert Locate TRUE - falls der gewünschte Datensatz gefunden wird - und positioniert den Satzzeiger darauf.
Bei mir steht der Satzzeiger nach dem Locate, leider nicht auf dem Satz mit der ROLE_ID=aRoleId, obwohl Locate TRUE liefert. Dadurch wird immer ein falscher Datensatz gelöscht.

Mach ich prinzipiell was falsch?

Danke
Dirk
wwwdirk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D6 Prof / D2005 Prof
BeitragVerfasst: Fr 10.08.07 10:43 
Noch was:
Es handelt sich bei dem TADODataSet um eine Detail-Datenmenge, die ich mit der Eigenschaft 'DataSource' und 'MasterFields' einschränke!
wwwdirk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D6 Prof / D2005 Prof
BeitragVerfasst: Mo 13.08.07 14:19 
Aus Verzweiflung hab ich's jetzt folgendermassen gelöst, ist natürlich nicht gerade elegant, läuft aber zumindest:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 with DM.DSUserRoles do
 begin
   First;
   while not Eof and (FieldByName('ROLE_ID').AsString <> aRoleId) do
     Next;

   if FieldByName('ROLE_ID').AsString = aRoleId then
     Delete;
 end;

Hat keiner ne Ahnung, was da los sein könnte?