Office: Recordset Sortierung

Helfe beim Thema Recordset Sortierung in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; von ebs17 Eine Erläuterung wäre wohl am einfachsten und direktesten, wenn Du erläuterst, wie Du zu Deinem Recordset kommst und wie verwendete... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Till41, 14. Januar 2017.

  1. Recordset Sortierung


    Habe ja in dem fast zeitgleichen Post gezeigt, wie ich zu dem Recordset komme. Was willst du zu der Tabelle wissen? Sie beinhaltet Spalten wie "Firma", "Kunde" und am Ende eben die "ID" um die es ja hier geht. Diese - um das nochmal klarzustellen - hat das Format XXX-XXX-00-0(00).

    Ich hoffe, dass ich einige Fragen klären konnte!
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  2. Zur Thematik Recordset direkt aus XML habe ich gar keine Erfahrungen, liest sich aber sehr spannend. Die Übernahme von XML-Inhalten in Tabellen ist ein häufiger nachgefragtes Thema.
    Zum Verständnis wäre da aber ein vollständiges Projekt (XLSM + XML-Datei) notwendig.

    Ein Link auf die Quelle wäre nett.

    Das System, was ich meine:
    nicht
    Code:
    sondern
    Code:
    Ggf. muss man diese Sortierfelder erst aus einem Konglomeratfeld herauslösen.
     
  3. Hallo Till,

    das erwartete Chaos ist eingetreten - blickst Du noch durch? Mir macht das wirklich wenig Freude.
    Wolltest Du nicht ein neues Thema aufmachen? Jetzt geht es doch bunt durcheinander weiter.

    Dein Code zum Speichern bringt auch mein Excel zuverlässig zum Absturz, wenn ich eine bereits vorhandene, offene Mappe nochmals mit gleichem Namen speichern will. Das verwundert mich aber ehrlich gesagt auch nicht sehr - fehlt dann doch das zu speichernde Objekt, das Du mit Deiner nachgelieferten Routine einfach schließt.
    Vielleicht solltest Du vorher prüfen, ob wkb bereits mit gleichem Namen existiert und offen ist und dann entsprechen reagieren. Zusätzlich würde ich wkb.SaveAs verwenden anstelle .Execute. Aber das ist entweder was für Dein Selbststudium (bei dem man noch am meisten lernt) oder wirklich einen anderen Thread.

    Wie Du eingangs richtig bemerkst hast, wird nicht richtig sortiert, da "1", "2" und "10" immer in der Reihenfolge "1, 10, 2" sortiert werden. Das liegt daran, dass die Zahlen mit Text kombiniert sind und somit als Teil des Textes auch nach Textregeln sortiert werden.
    Also trickse die Textsortierung aus, indem Du die Texte "0001", "0002", "0010" sortieren lässt - das führt zur gewünschten Reihung "0001, 0002, 0010". Im 2. Schritt wandelst Du die Texte wieder in einen Zahlenwert ("Text"*1), damit wieder eine Zahl daraus wird, die Du zurück in die (nunmehr aber richtig gereihte) ID einbaust.

    Mein Vorschlag, die Einzelelemente der ID in Spalten aufzuteilen, würde dies unnötig machen, da Du die Zahlen dann als Zahlen behandeln kannst. Die Spalte mit der kombinierten ID kannst Du ja dennoch haben. (wobei du alles als "feste" Werte eintragen oder per Formel teilen / zusammenbauen kannst - wie Du magst)

    Grüße
    EarlFred
     
    EarlFred, 17. Januar 2017
    #18
  4. Recordset Sortierung

    Ich habe etwas nachrecherchiert.
    Die oben gezeigte Methode GetRecordset hat mit XML nur insofern etwas zu tun, dass sie innere Strukturen von Exceldatenblättern ausnutzt. Die Formate von Officedateien >= 2007 verwenden ja XML in ihrer inneren Struktur.
    Quelle: VBA Trick of the Week: Range to Recordset Without Making Connection
    Es geht also inhaltlich um das Kopieren eines Bereichs und weiter gar nichts.
     
  5. Ausgangspunkt:
    Wenn S für je genau einen Buchstaben und I für je genau eine Ziffer steht, dürfte es für eine alphanumerische Sortierung unter Einschluss der Zahlensortierung überhaupt kein Problem geben. Da ist dann die von EarlFred gezeigte Umformatierung des Strings mit führenden Nullen (ersatzweise Herauslösung von Sortierspalten) nicht mal notwendig.

    Also Wie genau ist das in Realität?

    Ansonsten, der Weg scheint ja so: Bereich => Recordset => Bereich
    Das sind dann drei Stellen, in denen man die Sortierung und dafür erforderliche Maßnahmen umsetzen kann. In einem Recordset scheint mir eine entsprechende Umformung mit vernünftigem Aufwand als nicht möglich. Für die Bereiche (Quelle als auch Ziel) gibt es einige Möglichkeiten, einige wurden auch schon genannt, und damit bleibst Du auch in der hier wohlbekannten Excelwelt.
     
  6. Nur die letzten Zahlen sind das Problem in der alphanumerischen Sortierung, da dort sowohl einstellige als auch zweistellige Zahlen vorkommen. Der Rest ist konstant und lässt sich auch im Recordset gut sortieren.
     
  7. Recordset Sortierung

    Nun, dann machst Du die letzte Zahl zweistellig (durch Formatierung mit führender 0) oder Du machst eine Sortierung im Sinne von Left(ID, Len(guterString) zuzüglich letzteZahl (in jeweils eigenen Spalten).
    Und da ist das Recordset nun gerade der schwierigste Platz, sprich da ist derart viel Aufwand nötig, dass eine anderes Kopieren deutlich effizienter wäre als das umzusetzen. Also versuche es vor dem Kopieren oder nach dem Kopieren.

    Und allgemein: Das Bestreben ist ja groß und wird freudig wahrgenommen, möglichst viele und z.Z. gegensätzliche Informationen in einem Gesamtausdruck zusammenzufassen. Mögliche Folgen erlebst Du gerade. Probleme, die man sich selber schafft.
    In einer (ordentlichen) Datenbank speichert man nur atomare Informationen. Man hätte also von Haus aus getrennte Spalten und überhaupt keine Sorgen mit speziellen Sortierungen.
    Es gilt dann auch: Zusammensetzen ist einfacher und schneller als Trennen.
     
  8. Mir fällt das mit steigendem Umfang des Projekts auch auf, dass es sinnvoller gewesen wäre, mit einem richtigen Datenbankverwaltungstool wie Access zu arbeiten. Schade - dafür ist es jetzt zu spät. Euer/Dein Vorschlag ist jetzt also, dass ich die ID splitte und es somit einfacher wird zu sortieren? Aus einer Spalte würde ich also 4 machen und hätte es dann einfacher in vielerlei Hinsicht?
    Klingt gut! Ich werde meine jetzige Datei mal duplizieren und das ausprobieren. Vielen Dank Dir!
     
  9. So, wie Du das wiederholst, hast Du unsere Aussagen verstanden, sogar bis hin zu den atomaren Informationen.
    Einfache Sortier- und Filtermöglichkeiten sind offensichtlich.
    Wenn die letzte Zahl eine fortlaufende Nummer zu einer Gruppe, die durch die ersten drei Werte identifiziert wird, ist, öffnet man sich den Weg z.B. zu Pivottabellen, um da z.B. die höchsten Nummern pro Gruppe zu ermitteln.
     
  10. Hallo EarlFred,
    Dein Code hat super funktioniert, sobald ich ihn komplett verstanden hatte. Das Problem war glaube ich wirklich das totale Durcheinander, das ich mit meiner zweiten Frage fabriziert habe - entschuldigt das bitte!

    Trotz alldem vielen Dank für Eure Hilfe und in Zukunft gibt es immer neue Themen für neue Fragen :P

    Code:
     
Thema:

Recordset Sortierung

Die Seite wird geladen...
  1. Recordset Sortierung - Similar Threads - Recordset Sortierung

  2. Apostroph in sql Recordset

    in Microsoft Access Hilfe
    Apostroph in sql Recordset: Hallo Gemeinde, einen hätte ich noch: sqlTitel = "SELECT * FROM tbl_Files_Edited WHERE Titel='" & strTitel & "'" Set rs1 = db.OpenRecordset(sqlTitel) Enthält strTitel einen...
  3. Recordset auf einmal nicht mehr aktualisierbar

    in Microsoft Access Hilfe
    Recordset auf einmal nicht mehr aktualisierbar: Hallo, ich bin bei der Weiterentwicklung einer seit Jahren funktionierenden Prozedur, bei der u.a. per SQL Datensätze nach einem bestimmten Feld sortiert aus einer Tabelle in ein Recordset...
  4. Recordset

    in Microsoft Excel Hilfe
    Recordset: Hallo Zusammen, ich möchte gern aus einer Excel-Tabelle Werte über ein Recordset in eine Access Tabelle einlesen. In der Anlage die vereinfachte Struktur der Daten. Im Bsp 1 werden die Daten...
  5. Recordset wird nicht erfasst

    in Microsoft Access Hilfe
    Recordset wird nicht erfasst: Liebe Access-Profis, wieder bin ich am Ende der Weisheit; dieses Mal geht es um einen VBA-Code, der einen Recordset nicht identifiziert. Das Vorhaben: Im Formular 'Aktuelles Schuljahr' steht in...
  6. Recordset-Feldname mit Variable verbinden

    in Microsoft Access Hilfe
    Recordset-Feldname mit Variable verbinden: Hallo, hat jemand einen Tipp für mich, wie ich einen Recordset-Feldnamen mit einer Variablen kombinieren kann. Ein Pivot-Recordset stellt mir Feldnamen zur Verfügung, die etwa so aussehen:...
  7. Recordset Listenfeld füllen

    in Microsoft Access Hilfe
    Recordset Listenfeld füllen: Hallo *Smilie Ich möchte gern mein Listenfeld füllen.. ______________ 1) Bei dieser Methode kommt es (willkürlich) zu einem Absturz: Set Forms("Freigabetool").Controls(liste0).Recordset = rs...
  8. ID aus SQL Recordset ermitteln - Geänderter Treiber?

    in Microsoft Access Hilfe
    ID aus SQL Recordset ermitteln - Geänderter Treiber?: ch habe ein akutes Problem beim Zugriff auf den SQL Server. Seit vielen Jahren nutze ich folgendes Prinzip. Im VBA lege ich einen neuen Datensatz in einem Recordset an. Da der SQL Server die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden