Office: (Office 2016) Feldname in Abfrage per VBA ändern

Helfe beim Thema Feldname in Abfrage per VBA ändern in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich möchte Feldnamen in Abfragen per VBA ändern, ähnlich folgender Zeile für das Gleiche in Tabellen.... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Mike, 5. Juli 2018.

  1. Feldname in Abfrage per VBA ändern


    Hallo,
    ich möchte Feldnamen in Abfragen per VBA ändern, ähnlich folgender Zeile für das Gleiche in Tabellen.

    CurrentDb.TableDefs("Tabelle1").Fields("AlterName").Name = "NeuerName"

    Hat jemand eine Lösung dafür?
    Mike

    :)
     
  2. Code:
     
    ebs17, 7. Juli 2018
    #2
  3. Hallo Eberhard,
    danke für die schnelle Antwort.
    Ich möchte einen Feldnamen gezielt ändern. Wenn ich das mit Replace im SQL-String mache, werden u. U. auch andere Textteile geändert, was ja nicht sein soll. Deshalb mein Ziel es so änderbar zu machen wie es bei Tabellen geht.
    Mike
     
  4. Feldname in Abfrage per VBA ändern

    Eine andere Definition hat eine Abfrage nicht. Eine SQL-Anweisung ist schlichter Text. Also kann man da Methoden der Textverarbeitung anwenden. Das könnte auch ein Replace sein, ggf. auch ein leistungsfähigeres Replace über RegEx, womit man gezielt auf Worte und nicht nur auf Textbestandteile an sich einwirken kann.
     
    ebs17, 7. Juli 2018
    #4
  5. Die Idee mit RegEx werde ich aufgreifen, danke.
    Mike
     
  6. Mit einem einzigen SQL Befehl klappt es wohl nicht.
    Aber mit diesen dreien nacheinander ...
    Code:
    Oder so: Code:
    Feldnamen in Abfragen:
    Code:
     
    hcscherzer, 7. Juli 2018
    #6
  7. Es war hier nicht das Ändern der Tabellendefinition gefragt, sondern das Ändern der Abfragedefinition.
     
    ebs17, 7. Juli 2018
    #7
  8. Feldname in Abfrage per VBA ändern

    Ja, großer Meister, hab ich auch gerade gemerkt und nachgetragen.
     
    hcscherzer, 7. Juli 2018
    #8
  9. Abgesehen von der Technik: Mir fällt kein vernünftiger Grund ein, einzelne Feldnamen in einer Abfrage per VBA, also programmatisch wiederholt, zu ändern - es sei denn, es muss ein nicht so optimales Datenmodell auf Dauer nachgebügelt werden.
     
    ebs17, 7. Juli 2018
    #9
  10. Danke für eure Mühe.

    @Eberhard: "Abgesehen von der Technik: Mir fällt kein vernünftiger Grund ein, einzelne Feldnamen in einer Abfrage per VBA, also programmatisch wiederholt, zu ändern - es sei denn, es muss ein nicht so optimales Datenmodell auf Dauer nachgebügelt werden."
    Ein Grund ist Texte in Abfragen, wie auch in anderen Objekten von Access per vba ändern zu können.

    @hans-Christian: Das Problem dabei ist, dass nicht nur das gewünschte Feld geändert wird, sondern alle anderen Textteile auch.
     
  11. Danke für eure Mühe.

    @hans-Christian: Mit Replace werden u. U. auch andere Textteile geändert, was ja nicht sein soll.
    @Eberhard: Der 'vernünftige Grund' ist, eine Suchen/Ersetzen-Routine zu schreiben, mit der man Abfragen ändern kann.

    Mike
     
  12. Du willst also Find&Replace von Rick Fisher nachbauen?

    Einzelne Feldnamen durch andere ersetzen? Wenn man normalisiert hat, enthält ein Feld ureigene Informationen und ist in einer Abfrage, und erst recht, wenn man über den SELECT-Teil oder den WHERE-Teil (dynamischer Filter) hinausdenkt, nicht einfach austauschbar. Ein anderes Feld würde also ein ganz anderes und vmtl. unerwartetes Ergebnis nach sich ziehen oder schlicht Fehler werfen.

    Ein Ersetzen von Feldnamen kann ich mir nur vorstellen, wenn man während der Entwicklung sein Bezeichnungsregime umstellt. Das sind aber dann regelmäßig einmalige Aktionen, und einen Teil davon deckt bereits die standardmäßig aktivierte Objektnamen-Autokorrektur ab (=> Performancebremse).
    Mit fortschreitender Entwicklererfahrung sollte so etwas aber nicht mehr so häufig vorkommen, wenn man seinen Stil gefunden hat.

    Das oben genannte Tool erfasst dann auch SQL-Anweisungen, die in VBA-Code eingebettet sind.

    Das Ersetzen in den genannten Varianten erfasst aber die ganze Datei und nicht nur eine einzelne Abfrage.

    Vielleicht kannst Du aber auch ein richtiges Beispiel für eine Notwendigkeit nennen, das außerhalb meiner Betrachtungen liegt. Unsereiner will ja auch was lernen.

    Zweites vielleicht: Über Aliase kommt man auch zu neuen Feldnamen.
     
    ebs17, 7. Juli 2018
    #12
  13. Feldname in Abfrage per VBA ändern

    "Du willst also Find&Replace von Rick Fisher nachbauen?" Ja
    Der Gedanke dabei war einfach nur, dass es genauso gehen könnte wie bei Tabellen:
    CurrentDb.TableDefs("Tabelle1").Fields("AlterName").Name = "NeuerName"
    CurrentDb.QueryDefs("Abfrage1").Fields("AlterName").Name = "NeuerName"
    Aber genau das geht so nicht.

    Mike
     
  14. Ich habe es erst einmal folgend gelöst (keine optimale Lösung, aber für vieles ausreichend:

    Public Sub RenameQueryWord(strQueryName As String, strWort As String, strWortNeu As String)
    Dim DB As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim SQL As String

    Set DB = CurrentDb
    Set qdf = DB.QueryDefs(strQueryName)
    SQL = qdf.SQL

    SQL = Replace(SQL, ".", " ~ ")
    SQL = Replace(SQL, vbCrLf, " ")
    SQL = ReplaceWord(SQL, strWort, strWortNeu)
    SQL = Replace(SQL, " ~ ", ".")

    qdf.SQL = SQL
    End Sub
     
  15. ebs17, 8. Juli 2018
    #15
Thema:

Feldname in Abfrage per VBA ändern

Die Seite wird geladen...
  1. Feldname in Abfrage per VBA ändern - Similar Threads - Feldname Abfrage VBA

  2. Access - Listeneintrag per VBA einem Feldnamen zuweisen

    in Microsoft Access Hilfe
    Access - Listeneintrag per VBA einem Feldnamen zuweisen: Hallo, ich möchte die Einträge eines Listenfelds mit einem bestimmten Feldnamen innerhalb einer VBA-Routine verbinden, stosse da aber programmiertechnisch an meine Grenzen... Hintergrund: Für den...
  3. Feldname für Bedingung zusamensetzen

    in Microsoft Access Hilfe
    Feldname für Bedingung zusamensetzen: Hallo Leute Habe ein Formular mit: ungebundenes Textfeld: Text1 Ereignis: Nach Aktualisierung Wenn ich folgendes nutze funktioniert es: If Me!Text1 "" Then Und die funktionieren nicht: Dim...
  4. Bedingte Formatierung abhängig vom eigenen Feldnamen

    in Microsoft Access Hilfe
    Bedingte Formatierung abhängig vom eigenen Feldnamen: Hallo zusammen, ich habe ein Endlosformular für die monatsweise Anzeige von Mitarbeiter-Schichtmodellen. Das bedeutet 31 Textfelder für max. 31 Tage eines Monats, die von "T1" bis "T31" heißen....
  5. 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:...
  6. "Dynamische" Feldnamen in einer Abfrage

    in Microsoft Access Hilfe
    "Dynamische" Feldnamen in einer Abfrage: Moin, wenn ich schon mal ein so gut funktionierendes Forum an der Hand habe, gleich noch eine weitere Frage ;-) Ich habe eine Kreuztabelle, in der viele, viele Artikel untereinander stehen und...
  7. Feldname (Primärschlüsselfeld) wird bei Abfrage in "Feld1: Feldname.Teil" umgewandelt

    in Microsoft Access Hilfe
    Feldname (Primärschlüsselfeld) wird bei Abfrage in "Feld1: Feldname.Teil" umgewandelt: Access ändert nach dem Schließen von Abfragen automatisch den ersten Feldnamen (gleichzeitig Primärschlüssel) um. Die Abfragen werden vor dem Schließen einwandfrei angezeigt. Beispiel:...
  8. Feldnamen chr und dir in einer Abfrage Access 2010 nicht verwendbar?

    in Microsoft Access Hilfe
    Feldnamen chr und dir in einer Abfrage Access 2010 nicht verwendbar?: Moin, ich habe das Problem, dass wir nunmehr von Access 2003 auf Access2010 umgestellt haben und bei zwei Feldern einer Tabelle diese in der Entwurfsansicht einer Abfrage eingefügt werden...
  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