Office: (Office 2016) Zu viele Zeilenfortsetzungen

Helfe beim Thema Zu viele Zeilenfortsetzungen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; select nr, sum(case when er_g = 10 then 1 else 0 end) as "10", sum(case when er_g = 9 then 1 else 0 end) as "9", sum(case when er_g = 8 then 1 else 0... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von simar, 19. Dezember 2019.

  1. Zu viele Zeilenfortsetzungen


    select nr, sum(case when er_g = 10 then 1 else 0 end) as "10",
    sum(case when er_g = 9 then 1 else 0 end) as "9",
    sum(case when er_g = 8 then 1 else 0 end) as "8",
    sum(case when er_g = 7 then 1 else 0 end) as "7",
    sum(case when er_g = 6 then 1 else 0 end) as "6",
    sum(case when er_g = 5 then 1 else 0 end) as "5",
    sum(case when er_g = 4 then 1 else 0 end) as "4",
    sum(case when er_g = 3 then 1 else 0 end) as "3",
    sum(case when er_g = 2 then 1 else 0 end) as "2",
    sum(case when er_g = 1 then 1 else 0 end) as "1",
    sum(case when er_g = 0 then 1 else 0 end) as "0"
    usw... (Sind 30 Zeilen in der Art)
    from tab_tr

    wenn ich mit dieser Abfrage ein Makro erstelle bekomme ich die Fehlermeldung
    " Zu viele Zeilenfortsetzungen"
    ich weiß des dürfen nur 24 _ sein ab wie kann ich das umgehen.

    kann mir jemand helfen das Problem zu umgehen, wäre super?

    :)
     
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue. Ich baue keine Datei nach.
    Bei mir ist der Code rot, da jede Zeile mit Enter abgeschlossen.

    Sollte die Datei verlinkt werden?

    Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster*, Test*, Mappe*, Beispiel*, Fehler*, Kalender*, UserForm* usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
    Es sollte ein aussagekräftiger Name sein.

    Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
    http://www.ms-office-forum.de/forum/...d.php?t=322895
    änderrn.

    Das ist nur meine Meinung zu dem Thema.

    Bitte berücksichtige das Themen die Erledigt sind als Erledigt markiert werden können. Also mache es unten links mit Klick auf den Schalter "als erledigt setzen", falls Problem gelöst.
    Der Zustand des Beitrages wird dann in der Übersicht angezeigt und man braucht sich diese Beiträge nicht mehr ansehen.





    Meine Homepage Homeseite - Hajo's Excelseiten
     
  3. Hallo simar,
    Da müßte man zunächst einmal die Aufgabenstellung kennen, die ich aus diesem Code-Gebilde nicht herauslesen kann.

    Gruß
    Aloys
     
  4. Zu viele Zeilenfortsetzungen

    Es ist doch nicht nötig, das SQL-Statement in so viele Zeilen zu zerhacken. Lass halt Zeilenumbrüche weg oder setz das Statement aus mehreren Einzelstrings zusammen, wenn es der Übersichtlichkeit dient.
     
    EarlFred, 21. Dezember 2019
    #4
  5. Sorry ihr habt ja recht.

    Also, ich lade mittels odbc und dieser obigen SQL Abfrage Daten aus einer externen Datenbank nach Excel die Abfrage enthält auch noch diverse Bedingungen.
    Die SQL Abfrage summiert die Anzahl der gleichen Einträge der Spalte er_g in der Tabelle tab_tr.
    Diese Bedingungen möchte ich mittels eines Makros ändern.
    Beim beenden der Makoaufzeichnung bekomme ich die besagte Meldung " Zu viele Zeilenfortsetzungen".

    Hoffe dass ich jetzt mein Problem verständlicher formuliert habe.

    Leider weiß ich nicht wie ich das SQL ändern kann um diesen Fehler zu beheben.
     
  6. ich weiß leider nicht wie man die Zeilenumbrüche vermeidet.
     
  7. Da soll wohl ein VBA-Code erzeugt werden - ist aber in der Darstellung nicht erkennbar.

    Zuerst sollte man registrieren, dass SQL und VBA recht unterschiedliche Sprachen sind. Infolgedessen kann man die Zeilen einer SQL-Anweisung nicht einfach so in den VBA-Code reinschreiben - dem VBA-Interpreter fehlt da jedes Verständnis dazu.
    Für VBA ist eine SQL-Anweisung ein einfacher String und somit auch als solcher zu behandeln. Dieser String wird dann irgendwann an eine DB-Methode (Execute, Recordset, Datenherkunft eines anzeigenden Objektes) zur Auswertung übergeben.
    Praktisch fasst man diesen String in einer Stringvariablen (Erfassung, Prüfung, Formatierung zur Ansicht). Dazu gibt es zwei Methoden und die Kombination daraus:

    1)
    Code:
    Hier würde dann die eingangs erwähnte Fehlermeldung zuschlagen, weil VBA bei einer mehrzeiligen Anweisung maximal die genannten 23 Zeilentrennungen zulässt.

    2)
    Code:
     
  8. Zu viele Zeilenfortsetzungen

    ich hab die Vorgabe schon gefunden kann sie aber zu meiner Schande nicht umsetzen.

    strSQL = "SELECT ... "
    strSQL = strSQL & " ... "
    strSQL = strSQL & " ...

    wo muß ich das anwenden? muß ich das in meiner hinterlegten SQL anwenden
    oder in dem durch die Makroaufzeichnung erzeugten Modul?
     
  9. Sehe zwar nicht alles, aber hilft hier nicht group by?

    Erzeuge doch mal ein einzelnes, funktionierendes, Statement und Poste Dein Ergebnis.

    N Excelfile mit paar Datensätzen .. je Tabelle ein WorkSheet und die Beziehungen zueinander...würde sicherlich weiterhelfen
     
  10. Sub treffen()
    '
    ' treffen Makro
    '

    '
    With ActiveWorkbook.Connections("Abfrage von PostgreSQL30").ODBCConnection
    .BackgroundQuery = True
    .CommandText = Array( _
    strSQL = "select t_namen.id_name"

    strSQL = strSQL & "t_liste.id_training"
    strSQL = strSQL & "t_namen.sum_zehn"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 9 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 8 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 7 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 6 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 5 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 4 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 3 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 2 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 1 then 1 else 0 end)"
    strSQL = strSQL & "sum(case when ergebnis_zehn = 0 then 1 else 0 end)"

    from
    strSQL = strSQL & "t_liste"
    strSQL = strSQL & "t_namen"
    strSQL = strSQL & "t_Typ"
    where
    strSQL = strSQL & "t_liste.id_name = t_typ.id_name"
    strSQL = strSQL & "and t_liste_name = t_namen.id_name"
    strSQL = strSQL & "and t_liste.id_training = t_namen.id_name"
    strSQL = strSQL & "and t_namen.v_name ilike '%'"
    strSQL = strSQL & "and t_liste.id_dis = '804'"
    strSQL = strSQL & "and t_liste.id_typ = 2"


    Group by
    strSQL = strSQL & "v_name"
    strSQL = strSQL & "id_training"
    strSQL = strSQL & "sum_zehn"
    Order by
    strSQL = strSQL & "t_liste.id_training desc "

    End Sub


    hab ich das so richtig verstanden?

    ich bekomme jetzt einen Syntaxfehler beim Kompilieren

    wo liegt der Fehler?
     
  11. Code:
    Ob das Statement funktioniert kannst nur Du testen.
    Wenn Du Access hast, klicke Dir dort eine funktionierende Abfrage zusammen. Bei Erfolg kannste das SQL-Statement kopieren.
     
  12. Hab leider kein Access

    Der Fehler muß mit "CommandText = Array( _" zusammenhängen
    wenn ich die Klammer am Ende des Skripts ...desc ") schließe
    kommt die Meldung Erwartet: Anweisungsende
     
  13. Zu viele Zeilenfortsetzungen

    Folgendes versucht?
    Code:
     
  14. Sub treffen()
    '
    ' treffen Makro
    '

    '
    With ActiveWorkbook.Connections("Abfrage von PostgreSQL30").ODBCConnection
    .BackgroundQuery = True
    .CommandText = Array( _
     
  15. Wie im Wilden Westen... unglaublich.
    Simar, Ruhe bewahren. Nur wenn Du alles richtig machst wird es funktionieren.

    Kopiere mal folgende Function unter Dein Modul:
    Code:
    Dann nimmst Du Deine ursprüngliche Abfrage und löscht alles was zu .CommandText gehört raus.

    Jetzt ersetzt Du es mit Code:
    Speichern -> Ausführen -> Ergebnis rückmelden.
     
Thema:

Zu viele Zeilenfortsetzungen

  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