Hallo zusammen,
kann mir jemand sagen, ob und wie ich mit Access 2003 die Anzahl der geplanten Löschungen ermitteln kann, damit ich evtl einen Löschvorgang vor der Löschbestätigung abfangen kann?
Vielen Dank.
Gruß
Uli
Hallo zusammen,
kann mir jemand sagen, ob und wie ich mit Access 2003 die Anzahl der geplanten Löschungen ermitteln kann, damit ich evtl einen Löschvorgang vor der Löschbestätigung abfangen kann?
Vielen Dank.
Gruß
Uli
Moin, Uli,
vorausgesetzt, ich habe die Frage verstanden:
Kontrolliertes Löschen erfolgt doch aus dem Programm heraus mittels einer Anweisung à la
Delete from
where
Da kannst Du doch die Bedingung nutzen und vorher zählen:
Select count(\*) from
where
Oder im Ereignis Before_Update abfragen:
Dim recordForm As Form
Dim records As Recordset
...
Set recordForm = Screen.ActiveForm.ActiveControl.Form
Set records = recordForm.Recordset
If records.RecordCount \> 0 Then
Gruß Ralf
Hallo Ralf,
zunächst vielen Dank für Deine Antwort.
Ich werde versuchen, das Problem mal genauer zu beschreiben.
Es handelt sich um eine Datenbank mit vielen Informationen zum vorhandenen Personal.
Das Frontend ist in Access2003 – das Backend eine sql-Datenbank.
Aus dieser db werden z.B.:
Daten für Geschäftsverteilungspläne nach Word exportiert und aufbereitet.
Alle personenbezogenen Aufstellungen für das Intranet bereitgestellt (php)
Informationen für das Servicezentrum (z.B. Telefonvermittlung) zur Verfügung gestellt (php)
etc
Nun sind in der Datenbank unter Anderem auch die Vertretungsregelungen hinterlegt.
Für diese Daten liegen 3 Tabellen zugrunde – „Vorgesetzter“, „vertritt“, „wird vertreten von“.
Zu jedem Datensatz in der Tabelle „vertritt“ sollte auch ein äquivalenter Eintrag in der Tabelle „wird vertreten von“ existieren und umgekehrt. Da Ausnahmen aber bekanntlich die Regel bestätigen… - sprich – da es halt nicht immer so ist, konnte ich mein Problem nicht über die Beziehungen der Tabellen lösen.
Nun versuche ich das ganze per Code folgendermaßen zu automatisieren.
Zunächst weise die Anfangswerte und die Werte nach Aktualisierung Variablen zu.
Danach vergleiche ich diese Variablen miteinander:
-Sind die Werte vorher und nachher identisch, wird die Funktion beendet.
-Ist der Anfangswert leer und der Wert nach Aktualisierung nicht, wird der äquivalente Eintrag erfasst.
-Sind Anfangs- und Endwert unterschiedlich (bei Änderungen), so wird zunächst der ursprüngliche, äquivalente Eintrag gelöscht und anschließend der neue Datensatz erfaßt.
Und nun kommt es…
Wird ein Datensatz gelöscht, so muss natürlich auch die Gegenseite gelöscht werden.
Das funktioniert natürlich nur, so lange maximal ein Datensatz gelöscht wird, da bei mehreren markierten Datensätzen die Variable ja nur den ersten Wert enthält. (Die Löschung und auch das Erfassen erfolgt übrigens über sql-Anweisungen im VBA-Code) Es würde also nur der erste äquivalente Eintrag gelöscht werden, der Rest bleibt erhalten.
Ich will also vor der Löschung ermitteln, ob wirklich nur 1 Datensatz gelöscht werden soll. Ist dies nicht der Fall, sollte die Funktion abgebrochen und eine entsprechende Meldung ausgeben werden…
Ich hoffe, dass ich mein Problem etwas besser durchleuchten konnte…
Gruß
Uli
Hi uli,
„vertritt“, „wird vertreten von“.
genau da liegt der Hase im Pfeffer, sowas bildet man anders ab, um eben diesem Ärger aus dem Weg zu gehen:
**Vertretung** (<u>Mitarbeiter</u>, Vertreter)
Bei der gegebenen Struktur muss ein Transaktionskonzept festgelegt werden, das die beiden Tabellen auf Inhalte abklopft und je nach Konstellation einfügt, ändert oder löscht, aber immer gemeinsam, sonst scheppert’s bald.
Gruß Ralf
Hallo,
neben dem Hinweis von Ralf würde ich dir auch dringend raten solche Sachen serverseitig in Form eine Stored Procedure zu machen.
Gruss
Joey