Autor Beitrag
thomson1308
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 11.09.13 08:11 
Hi,

ich habe folgendes Script....

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public override void Process()
        {
            var t = Api.Session.Transaction;

         //Personen löschen die als Austrittsdatum älter 14 Tage haben
            var AustrittsDate = BOP.Person.stausdat <= DateTime.Today.AddDays(-14);

            foreach (var item in t.ForPerson.Select(AustrittsDate))
            {
                t.Delete(item);
            }

            t.Publish();
        }

Dieses löscht, klaro, alle Personen älter 14 Tage.
Jetzt haben manche Personen aber noch Referenzen zu anderen Tabellen und lassen sich deshalb nicht löschen.
Gibt es da eine Möglichkeit iwie zu sagen…lösch, egal was du für andere Tabellenbezüge hast?

Danke im Voraus
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 11.09.13 09:30 
Hallo und :welcome:

welche Datenbank verwendest du denn? Direkt von C# aus kannst du das Löschen nicht erzwingen, sondern dies geht nur direkt von der DB aus (wegen Integrität der Daten). Bei MS SQL Server gibt es bspw. das Markieren der Referenz-Tabelle(n) als "delete cascade", s Kaskadierende Einschränkungen der referenziellen Integrität. Im Detail wird darauf z.B. in Cascade delete option in SQL Server - Deleting multiple table records eingegangen (beachte auch die beiden anderen Alternativen dort).


Zuletzt bearbeitet von Th69 am Mi 11.09.13 11:37, insgesamt 1-mal bearbeitet
thomson1308 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 11.09.13 09:49 
Hi,
ja die DB ist MS SQL.

Ich Danke Dir, werde mir das mal durchlesen.


Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 11.09.13 11:02 
Bedenke auch das das ein gefährliches Feature ist wenn man das unbedacht einsetzt. Du währest nicht der erste der cascading deletes standardmäßig einsetzt und sich dann wundert warum er plötzlich seine Datenbank geleert hat obwohl er doch nur ganz unverfänglich einen harmlos aussehenden Datensatz löschen wollte. Durch cascading deletes verliert man Kontrolle.
thomson1308 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 16.09.13 10:49 
Ja, okay werde es bedenken.

Danke schön.