Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Datensatz löschen und die anderen neu durchnummerieren
Gehe zu Seite 1, 2  Weiter
zurück: über eingabefeld bestimmte daten darstellen weiter: Geht das überhaupt Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
brauchehilfe@office
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Okt 2004, 15:24
Rufname: Stefan
Wohnort: Schweiz

Datensatz löschen und die anderen neu durchnummerieren - Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Hallo @ all

Ich habe eine Tabelle mit einem Primärschlüssel. Das Feld nennt sich ID.
Wenn ich über ein Formular neue Datensätze eingebe erstellt Access logischerweise einen neuen Eintrag in der Tabelle mit einem neuen Wert im Feld ID (natürlich fortlaufend).

Nun mal angenommen ich habe einige 100 Datensätze in der Tabelle und nun möchte ich einen Datensatz löschen (natürlich nicht in der Entwurfsansicht sondern von einem Formular aus, es könnte ja sein, dass ich einen Kunden weniger habe, und den jetzt nicht mehr in der Tabelle brauche)
Angenommen dieser Kunde hat die ID 50. Ich lösche den jetzt. Nun möchte ich, dass Access die anderen Kunden neu durchnummeriert. Wie kann ich das machen? Das heisst, der Kunde der vorher die Nummer 51 hatte, bekommt jetz die Nr. 50, 52 wird 51..... Wie mach ich das?

P.S. Ich hoffe ihr seid drausgekommen was ich meine Very Happy
Skogafoss
Moderator / Access-Halbprofi ;-)


Verfasst am:
10. Okt 2004, 18:33
Rufname:
Wohnort: Wiesbaden


AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Hallo,
ja ich glaube, ich habe verstanden, was du möchtest. Aber ich rate dringend davon ab, so etwas zu machen! An dem Kunden hängen vielleicht noch andere Tabellen (z.B. Bestellungen, Warenausgänge, Rechnungen etc.) oder es sind Dokumente gedruckt worden, auf denen die Kunden-ID steht oder oder oder. Was stört dich denn daran, dass Lücken in der Numerierung bestehen??? Das kann nur (falsch verstandene (sorry, aber ist m.E. wirklich so)) Ästhetik als Grund haben. Einen praktischen Grund gibt es dafür m.E. nicht. Es steht mir nicht an, dir vorzuschreiben, was du tust Very Happy , aber abraten darf ich, oder? Wink
Wenn du das aus irgendwelchen anderen Gründen doch haben musst, dann geht das aber in der bestehenden Tabelle mit dem Feld ID als Autowert nicht. Du könntest beispielsweise die Tabelle kopieren und wieder einfügen (aber dann nur mit Einfügeoptionen "nur Struktur"). Dann markierst du alle Datensätze in der Ursprungstabelle, kopierst sie in die Zwischenablage, öffnest die neue Tabelle, Bearbeiten - am Ende anfügen => das ID-Feld in der neuen Tabelle wird neu durchnumeriert, ohne Lücken.
Es gibt natürlich noch tausend andere Möglichkeiten, das zu tun, mit Abfragen, mit VBA-Code und und und.
Aber wie gesagt: Ich rate dringend von solchen unnützen Dingen ab.
Gruß
Skogafoss
brauchehilfe@office
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Okt 2004, 19:51
Rufname: Stefan
Wohnort: Schweiz

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Erstmals danke.
Die Tabelle hängt von nichts anderem ab (keine Bestellungen, Rechnungen....). Es ist nur so, dass ich wissen möchte, wieviele Kunden in meiner Kartei sind. Und wenn zwischendurch irgendwelche Kunden wieder gelöscht werden aus der Kartei (infolge Austritt) dann stimmt ja der Autowert nicht mehr mit der Anzahl Kunden überein. Deshalb möchte ich das automatische neu durchnummerieren. Aber ohne dass man irgendetwas im Entwurfsmodus machen muss (da die Datenbank später Dritten nur eingeschränkt zugänglich gemacht wird.

Ich habe ein Suchformular, welches die Suchergebnisse in einem Listenfeld anzeigt. Nun möchte ich z.B. ein Suchergebniss 1x anklicken können und danach auf einen darunterliegenden Button klicken können und der Datensatz wird gelöscht und die Tabelle automatisch neu durchnummeriert. Weisst du wie man soetwas macht?
Skogafoss
Moderator / Access-Halbprofi ;-)


Verfasst am:
11. Okt 2004, 00:02
Rufname:
Wohnort: Wiesbaden

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Hallo,
um zu erfahren, wie viele Kunden (Datensätze) du hast, brauchst du nicht neu zu numerieren. Die Anzahl kannst du auf tausend verschiedene Arten bestimmen. Wenn du nur das möchtest, kann ich dir sicher eine leichte Möglichkeit liefern, wie du das immer aktuell angezeigt bekommst oder ermitteln kannst. Das kann also nicht die Begründung dafür sein. Noch einmal: du kannst ein Autowertfeld nicht "neu durchnumerieren", ohne zuvor etwas an der Strukturdefinition (mithin in der Entwurfsansicht) der Tabelle zu ändern oder in eine neue Tabelle zu kopieren. Das geht definitiv nicht.
Das mit dem Löschen per Button kann man natürlich machen. Aber jetzt ist es ein wenig spät. Ich melde mich morgen dann nochmal.
Gruß
Skogafoss
brauchehilfe@office
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Okt 2004, 00:08
Rufname: Stefan
Wohnort: Schweiz


AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Ok. Danke.
Dann lassen wir das mit dem neu durchnummerieren.
Könntest du mir in dem Fall sagen (schreiben Smile ) wie ich die Anzahl Kunden ermittlen kann?
Und könntest du mir sagen, wie ich, wenn ich einen Suchergebniss in meinem Listenfeld habe, auf einen Button klicken kann und somit dieser Datensatz gelöscht wird?
Skogafoss
Moderator / Access-Halbprofi ;-)


Verfasst am:
11. Okt 2004, 12:07
Rufname:
Wohnort: Wiesbaden

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Hallo,
du bekommst die Anzahl der Datensätze zum einen in der Datenblattansicht der Tabelle unten angezeigt (Datensatz x von (Anzahl der Datensätze). Du kannst in einer Abfrage ermitteln, wie viele Datensätze die Tabelle enthält, z.B. mit
Code:
SELECT Count(KdNr) AS [AnzKdNr]
FROM   tblKunde;

(Namen für Tabelle und Feld musst du natürlich deinen Bezeichnungen anpassen.)
Oder du kannst in VBA die Anzahl ermitteln:
Code:
Function AnzKdNr()
    Dim db As Database
    Dim rs As Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblKunde")
    AnzKdNr = rs.RecordCount
End Function

Diese Funktion gibt dir die Anzahl der Kunden der Tabelle tblKunde zurück. Vorsicht: So funktioniert das nur mit Tabellen. Um die Anzahl der Datensätze eines Dynasets zu ermitteln, musst du vor der Bestimmung von rs.recordcount noch rs.movelast aufrufen.
Bzgl. des Löschens: Habe ich das richtig verstanden, dass du irgendetwas (was auch immer) in einem Feld der Tabelle suchen lässt und die Suchergebnisse in einem Listenfeld darstellst? Dann soll der Anwender in diesem Listenfeld einen Eintrag markieren und du willst den entsprechenden Datensatz aus der Tabelle löschen? Du zeigst also in deinem Formular nicht die gefundenen Datensätze an, sondern nur die gefundenen Werte des Feldes, in dem gesucht wird? Naja, ob das geschickt ist? Der Anwender kann doch so gar nicht so recht beurteilen, was er da eigentlich löscht, oder? Halte ich für relativ gefährlich. Da ist schnell mal was weggelöscht, was noch gebraucht wird. Ich würde an deiner Stelle zuerst in dem Formular den Datensatz, der gelöscht werden soll, anzeigen und dann den Anwender diesen Datensatz löschen lassen. Ok, aber das ist deine Entscheidung. Sag mal Bescheid, ob ich das so richtig verstanden habe.
Gruß
Skogafoss
brauchehilfe@office
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Okt 2004, 13:25
Rufname: Stefan
Wohnort: Schweiz

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

1. Irgendwie funtkioniert das nicht so recht. Es kommen bei beiden Vorschlägen verschiedene Fehlermeldungen

2. Ja, das stimmt so. Direkt aus dem Listenfeld löschen können über einen Button.
Skogafoss
Moderator / Access-Halbprofi ;-)


Verfasst am:
11. Okt 2004, 13:32
Rufname:
Wohnort: Wiesbaden

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Erst mal zu 1.:
In der Datenblattansicht der Tabelle muss das funktionieren.
Bei den beiden anderen Methoden musst du natürlich statt "tblKunde" deine Tabellenbezeichnung und in der Abfrage zusätzlich statt "KdNr" den Namen deines Kundenfelds einsetzen. Hast du das auch wirklich gemacht? Welche Fehlermeldungen hast du wo erhalten?
Gruß
Skogafoss
brauchehilfe@office
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Okt 2004, 13:39
Rufname: Stefan
Wohnort: Schweiz

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

1. Die Benutzer haben später keinen direkten Zugriff auf die Tabelle. Sie können nur über die div. Formulare Dinge machen.
2. Ist es möglich, dass man kein zusätzliches Feld machen muss in der Tabelle, um die Kundenanzahl sehen zu können? So zum Beispiel, dass er einfach alle Datensätze zusammenzählt und dann im Hauptmenü in einem Text-/oder was auch immer für ein Feld anzeigt.
Skogafoss
Moderator / Access-Halbprofi ;-)


Verfasst am:
11. Okt 2004, 14:37
Rufname:
Wohnort: Wiesbaden

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Ja natürlich,
du definierst in dem Formular ein ungebundenes Feld mit dem Steuerelementinhalt
=Anzahl("*")
Das funzt, wenn die Tabelle die zugrundeliegende Datenherkunft des Formulars darstellt. Allerdings refresht er dieses Feld nicht sofort, wenn du einen Kunden neu anlegst, erst wenn du speicherst oder das Formular refreshst. Aber das ist ja nur ein momentaner Effekt und sicher nicht so wichtig.
Gruß
Skogafoss
P.S. Fast vergessen: Das mit dem Listenfeld und dem Löschen. Du musst auf jeden Fall erst einmal den Datensatz "identifizieren", z.B. die Kunden-ID dieses Datensatzes ermitteln. Dann kannst du z.B. mit
Code:
Sub LöschenDatensatz(DelKdNr As Long)
    Dim db As Database

    Set db = CurrentDb
    db.Execute "DELETE * FROM tblKunde WHERE KdNr = " & DelKdNr
End Sub

einen Kunden löschen, wenn du zuvor die Kundennummer ermittelt hast und dann über den Löschbutton diese Prozedur aufrufst. Allerdings sollte man da noch mal eine Sicherheitsabfrage "Wollen Sie wirklich den Kunden mit der Nummer bla bla bla löschen?" einbauen. Wie du die Kundennummer ermitteln kannst, kann ich von hier aus nicht beurteilen, da ich nicht genug von deiner Tabelle weiß.


Zuletzt bearbeitet von Skogafoss am 11. Okt 2004, 14:46, insgesamt einmal bearbeitet
brauchehilfe@office
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Okt 2004, 14:45
Rufname: Stefan
Wohnort: Schweiz

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Also, entweder bin ich zu doof, oder aber es stimmt etwas nicht. Er zeigt eine 1 an obwohl in der Datenbank bereits etwa 15 Datensätze eingegeben sind.
Skogafoss
Moderator / Access-Halbprofi ;-)


Verfasst am:
11. Okt 2004, 18:13
Rufname:
Wohnort: Wiesbaden

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Skogafoss am 11. Okt 2004 um 14:51 hat folgendes geschrieben:
Nein, doof bist du wahrscheinlich nicht Laughing. Basiert dein Formular wirklich auf einer Tabelle oder doch auf einer Abfrage? Ich schrieb vorhin, dass das nur bei Tabellen funzt. Bei Abfragen muss man erst auf den letzten Datensatz springen und dann die Anzahl der Datensätze ermitteln. Warum Access das so blöd macht, darfst du mich nicht fragen Very Happy.
Die Ergänzung zu meinem letzten Posting hat sich wohl mit deinem überschnitten.
Was liegt also dem Formular zugrunde, eine Tabelle oder eine Abfrage?
Gruß
Skogafoss
Hallo,
ich sende dir gleich eine Mail mit der Lösung des Anzeigeproblems für die Anzahl der Kunden. Die DB enthält nur das Formular "Hauptmenü" und ein Modul "Modul_AnzahlKunden". Du brauchst also nur die beiden Objekte in deine DB zu importieren (bei dem Formular hängt er dann eine 1 an den Namen, so dass dein ursprüngliches Formular erhalten bleibt). Dann müsste es funzen. Wenn du das Anzeigefeld irgendwo anders haben willst, geht das analog.
Das mit dem Suchformular ist eine größere Sache. Der SQL-Ausdruck, den du da kreiert hast, ist Access einfach zu komplex. Da muss ich mir mal was überlegen, wie man das hinkriegen kann. Aber da komme ich wahrscheinlich erst morgen Abend dazu. Ich schaue aber auf jeden Fall mal, ob mir da was einfällt. Da hast du aber auch kräftig zugeschlagen mit den Möglichkeiten der Suche Laughing.
Also bis dann.
Gruß
Skogafoss
P.S. Bei deinen Modulen meckert er irgendwie, wenn man die Datenbank kompilieren will. Tritt das bei dir nicht auf? Habe mich da allerdings jetzt mal nicht drum gekümmert Very Happy .
brauchehilfe@office
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Okt 2004, 18:55
Rufname: Stefan
Wohnort: Schweiz

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Vielen Dank.
Nein, beim Kompilieren zeigt er mir keine Nachricht an. Aber ich verwende auch Access 2003 und musste es für dich ins Access 2000 Format kompilieren. Dabei ist es möglich dass sich einige Ausdrücke nicht vertragen oder sonst irgendetwas schief gelaufen ist.
Skogafoss
Moderator / Access-Halbprofi ;-)


Verfasst am:
12. Okt 2004, 12:58
Rufname:
Wohnort: Wiesbaden

AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Skogafoss am 11. Okt 2004 um 22:45 hat folgendes geschrieben:
Hallo,
ach so, du verwendest das Access-2003-Format? Standardmäßig speichert Access 2003 ja auch im 2000er-Format. Ok, dann gleich noch eine Frage: Meckert er bei dir in dem Suchformular auch nicht? Bei mir kommt sowohl im Büro als auch zuhause unter Access 2000 die Fehlermeldung "Dieser Ausdruck wurde falsch eingegeben, oder er ist zu komplex, um ausgewertet zu werden. bla bla bla". Er bemängelt wohl den SQL-Ausdruck. Ist das wirklich so, dass diese Meldung bei dir nicht kommt?
Wenn das bei dir alles ok ist, dann maile mir bitte noch einmal die Datenbank im 2003-Format. Dann öffne ich sie mal mit A3 und schaue da weiter. Sch....-Formate Laughing
Gruß
Skogafoss

Hallo,
ich habe mir mal die DB angeschaut, die du mir gemailt hast. Als Ereignisprozedur beim Klicken auf den Button "VorschlagLoeschen" (das ist doch der, mit dem du den ausgewählten Datensatz löschen willst, oder?) solltest du Folgendes einbauen:
Code:
Private Sub VorschlagLoeschen_Click()
    'Löscht den Kunden, der in dem Listenfeld ausgewählt wurde, aus der Tabelle Kundenkartei_Tabelle.
    'Die Eigenschaft Mehrfachauswahl des Listenfeldes könnte auch auf "Erweitert" gestellt sein.
    'Bei der Einstellung "Erweitert" wäre auch die Markierung mehrerer Datensätze und gleichzeitige Löschung
    'aller entsprechenden Kunden-Stammsätze möglich (Anm.: derzeit nicht so eingestellt)
    Dim db As DAO.Database
    Dim lngKdID As Long
    Dim varElement As Variant
    Dim intDel As Integer
   
    Set db = CurrentDb
    'Zuerst Bestimmen des Werts der gebundenen Spalte (Kunden-ID) in der/den ausgewählten Zeile(n)
    For Each varElement In Me!LbErgebnisse.ItemsSelected
        lngKdID = Me!LbErgebnisse.ItemData(varElement)
        'Sicherheitsabfrage
        intDel = MsgBox("Wollen Sie wirklich den Kunden mit der Kunden-ID " & lngKdID & " löschen?", vbYesNo)
        'Auswertung der Eingabe des Anwenders (Ja/Nein)
        If intDel = vbYes Then
            DoCmd.SetWarnings False   'funktioniert hier auch ohne Ausschaltung der Warnhinweise, DB-Einstellung
            db.Execute "DELETE * FROM Kundenkartei_Tabelle WHERE ID = " & lngKdID
            DoCmd.SetWarnings True    's.o., sollte man trotzdem so lassen, falls DB-Einstellung geändert wird
            Me!LbErgebnisse.Requery   'damit die Anzeige des Listenfelds aktualisiert wird
            MsgBox "Kunde mit der Kunden-ID " & lngKdID & " wurde gelöscht!"
          Else
            MsgBox "Kunde mit Kunden-ID " & lngKdID & " wurde NICHT gelöscht!"
        End If
    Next
    Set db = Nothing
End Sub

Dann müsste das mit dem Löschen funzen.
Gruß
Skogafoss
brauchehilfe@office
Im Profil kannst Du frei den Rang ändern


Verfasst am:
12. Okt 2004, 21:54
Rufname: Stefan
Wohnort: Schweiz


AW: Datensatz löschen und die anderen neu durchnummerieren - AW: Datensatz löschen und die anderen neu durchnummerieren

Nach oben
       

Ja, hat super geklappt. Vielen Dank für deine Hilfe
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Anfügeabfrage soll nur einen Datensatz verschieben 2 Quamsman 1026 08. März 2005, 15:23
Quamsman Anfügeabfrage soll nur einen Datensatz verschieben
Keine neuen Beiträge Access Tabellen & Abfragen: Hintergrundfarbe in Datensatz 1 Rheinbote 901 24. Feb 2005, 20:18
stpimi Hintergrundfarbe in Datensatz
Keine neuen Beiträge Access Tabellen & Abfragen: duplikatabfrage, löschen der doppelten datensätze.... 1 nebbio 1490 30. Jan 2005, 16:58
hommy duplikatabfrage, löschen der doppelten datensätze....
Keine neuen Beiträge Access Tabellen & Abfragen: Durch Abfrage die 2 letzten Zeichen löschen? 2 Maik_er 1326 17. Jan 2005, 14:48
Maik_er Durch Abfrage die 2 letzten Zeichen löschen?
Keine neuen Beiträge Access Tabellen & Abfragen: Aus 1 Datensatz mit 10 Infos mache 10 Datensätze à 1 Info 2 Steve 915 14. Jan 2005, 00:43
Steve Aus 1 Datensatz mit 10 Infos mache 10 Datensätze à 1 Info
Keine neuen Beiträge Access Tabellen & Abfragen: Bei der Aktualisierung eines Tabellenwertes neuen Datensatz 6 zheng 811 07. Dez 2004, 22:35
zheng Bei der Aktualisierung eines Tabellenwertes neuen Datensatz
Keine neuen Beiträge Access Tabellen & Abfragen: Einmalige Datensätze löschen 18 frankkugler 1616 18. Okt 2004, 15:33
frankkugler Einmalige Datensätze löschen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellenbeziehungen löschen ? 2 Gast 613 15. Okt 2004, 11:42
Gast Tabellenbeziehungen löschen ?
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelleninhalt löschen 2 Tobi 988 23. Sep 2004, 12:14
Tobi Tabelleninhalt löschen
Keine neuen Beiträge Access Tabellen & Abfragen: CurrentUser() in neuen Datensatz eintragen 2 mafke 924 16. Aug 2004, 15:49
mafke CurrentUser() in neuen Datensatz eintragen
Keine neuen Beiträge Access Tabellen & Abfragen: Löschen von Doppelten Datensätzen 2 wgiesel 684 29. Jul 2004, 13:28
wgiesel Löschen von Doppelten Datensätzen
Keine neuen Beiträge Access Tabellen & Abfragen: in einem Textfeld letztes Zeichen löschen? 2 mokona.s 1923 19. Jul 2004, 13:24
mokona.s in einem Textfeld letztes Zeichen löschen?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Editor Forum