Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Verknüpfte Tabellen MS ACCESS auf SQL Server

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Jedu30, 11 November 2020.

  1. Jedu30

    Jedu30 Neuer Benutzer

    Hallo,

    ich bin dabei eine Desktop Datenbank in eine Server basierte Datenbank umzustellen. Soweit so gut ich haben alle Tabellen mit dem Server verknüpft nur funktionieren nicht alle VBA basierten SQL Abfragen mit den verknüpften Tabellen. Klar muss die Syntax angepasst werden doch leider kann ich bei dieser der folgenden Abfrage den Fehler nicht finden. Gibt es jemand welcher den Fehler entdecken kann ? ich bin ein wenig ratlos oder betriebsblind geworden anbei die Abfrage

    SELECT PR_ID, Kopplung, NameVorname, Art, Fach, EULA, Prüfer, Vorsitz, Dekan, Termin, Zeit, Std, Dauer, Klasse, Inklusion, Schulbezeichnung, KolZeit, KolSchulbezeichnung, PR_Art, Terminsort
    from (SELECT Prüfung.PR_ID, IIf(Isnull(Prüfung.PR_K_ID,0)=0,'',format(Prüfung.PR_K_ID,'K000'))
    AS Kopplung, (iif(isnull(A_Namenszusätze,0)= 0,A_Namenszusätze+' ','')+Anwärter.A_Nachname + ', ' + Anwärter.A_Vorname)
    AS NameVorname, iif(PR_Art=0,'',iif(A_Schulart = 'GYMGS',iif(PR_Art = 1,'RG','oRG'),iif(A_Schulart = 'GYMWHRS',iif(PR_Art = 1,'RG','oRG'), iif(PR_Art = 1,'mV','UE'))))
    AS Art, iif(PR_Fachkürzel <> 'GENT', PR_Fachkürzel, iif(A_TL_Sopäd = 1, PR_Fachkürzel + '-TL', PR_Fachkürzel))
    AS Fach, Prüfung.PR_EULA_Sprachkürzel
    AS EULA, (iif(isnull(P.Prüfperson_Namenszusätze,0)=0,P.Prüfperson_Namenszusätze+' ','')+P.Prüfperson_Nachname+', '+P.Prüfperson_Vorname)
    AS Prüfer, (iif(isnull(V.Prüfperson_Namenszusätze,0)=0,V.Prüfperson_Namenszusätze+' ','')+V.Prüfperson_Nachname+', '+V.Prüfperson_Vorname)
    AS Vorsitz, (iif(isnull(D.Prüfperson_Namenszusätze,0)=0,D.Prüfperson_Namenszusätze+' ','')+D.Prüfperson_Nachname+', '+D.Prüfperson_Vorname)
    AS Dekan, IIf(isnull(PR_SonderPrüfungstag,0)=1,format(Prüfung.PR_Prüfungstag,'dd.mm.yy ddd'),format(PR_SonderPrüfungstag,'dd.mm.yy ddd'))
    AS Termin, format(Prüfung.PR_Prüfungszeit,'hh:mm')
    AS Zeit, Prüfung.PR_Stunde
    AS Std, Prüfung.PR_Dauer
    AS Dauer, Prüfung.PR_Klasse
    AS Klasse, iif(PR_Inklusionsbegleiter=true,' i','')
    AS Inklusion, (Schul.SchulOrt+' / '+Schul.SchulName + ' ' + Schul.SchulName2 + ' / '+Schul.Schulstr)
    AS Schulbezeichnung, IIf(PR_Art=1 Or A_Schulart='GS' or A_Schulart = 'APrOFTL' or A_Schulart = 'APrOFL' or A_Schulart = 'EUAPL',format(Prüfung.PR_KolZeit,'hh:mm'),' --- ')
    AS KolZeit, iif(A_Schulart = 'GYMGS', ' ----- ', iif(PR_Art = 1 or A_Schulart = 'GS' or A_Schulart = 'APrOFTL' or A_Schulart = 'APrOFL' or A_Schulart = 'EUAPL', KolSchul.SchulOrt+' / '+KolSchul.SchulName+' / '+KolSchul.Schulstr, ' ----- '))
    AS KolSchulbezeichnung, Prüfung.PR_Art
    AS PR_Art, IIf(isnull(PR_SonderPrüfungstag,0)=1,format(Prüfung.PR_Prüfungstag,'yyyy.mm.dd'),format(PR_SonderPrüfungstag,'yyyy.mm.dd'))
    AS Terminsort, (A_Nachname+A_Vorname)
    AS ANachnameVorname, (P.Prüfperson_Nachname+P.Prüfperson_Vorname)
    AS PNachnameVorname, (V.Prüfperson_Nachname+V.Prüfperson_Vorname)
    AS VNachnameVorname, (D.Prüfperson_Nachname+D.Prüfperson_Vorname)
    AS DNachnameVorname
    FROM Prüfung, Anwärter, Prüfperson
    AS P, Prüfperson
    AS V, Prüfperson
    AS D, Schule
    AS Schul, Schule
    AS KolSchul, Steuer
    WHERE A_Schulart = 'GS' and A_Seminarkürzel = 'AS' and A_Kurs = '19' and Steuer_Schulart = A_Schulart and Steuer_Seminarkürzel = A_Seminarkürzel and Steuer_Kurs = A_Kurs and Prüfung.PR_A_ID = Anwärter.A_ID And Prüfung.PR_P_Prüfperson_ID = P.Prüfperson_ID And Prüfung.PR_V_Prüfperson_ID = V.Prüfperson_ID And Prüfung.PR_D_Prüfperson_ID = D.Prüfperson_ID And Prüfung.PR_Schul_ID = Schul.Schul_ID And Prüfung.PR_KolSchul_ID = KolSchul.Schul_ID and Prüfung.PR_Status not like '*D' and (Steuer_Wiederholer_Verlängerer = 0
    or (Steuer_Wiederholer_Verlängerer = 1 and (exists(select * from Noten where N_A_ID = A_ID and N_Art = 3 and N_Prüfungsart = 'SL') ) or (PR_Art = 1 and exists(select * from Noten where N_A_ID = A_ID and N_Art = 3 and N_Prüfungsart = 'UPP1')) or (PR_Art = 2 and exists(select * from Noten where N_A_ID = A_ID and N_Art = 3 and N_Prüfungsart = 'UPP2')) or (PR_Art = 3 and exists(select * from Noten where N_A_ID = A_ID and N_Art = 3 and N_Prüfungsart = 'UPP3')))))
    ORDER BY ANachnameVorname, PR_Art;

    Als Fehlermeldung erhalte ich in Visual Studio
    Meldung 156, Ebene 15, Status 1, Zeile 35
    Falsche Syntax in der Nähe des ORDER-Schlüsselworts.
    Leider kann ich mir keinen reim darauf machen.

    VG Jens
     
  2. dabadepdu

    dabadepdu Datenbank-Guru

    Order ist nicht irgendwo als Feldname verwendet.
    Vielleicht kann ANachnameVorname nicht zum Sortieren verwendet werden, wenn es nicht im Select ist.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Order ist kein Feldname, und ANachnameVorname ist als Alias im Select. Das ist es als nicht. Stimmen die Klammern?
     
  4. dabadepdu

    dabadepdu Datenbank-Guru

    Ja, ich meinte ja: Order wird nicht als Feldname verwendet, also okay.
    Aber ANachnameVorname ist nur im inneren Select.
    Die Klammerung find ich ok, hab aber nur geschaut, kann das nicht laufen lassen.
     
  5. akretschmer

    akretschmer Datenbank-Guru

    das könnte es sein. Ist halt doof, wenn die Fehlermeldung so wenig aussagt ...
     
  6. Jedu30

    Jedu30 Neuer Benutzer

    Super vielen Dank Visual Studio meint noch "Erwartet wird AS, ID oder Quoted_ID"
     
  7. Jedu30

    Jedu30 Neuer Benutzer

    Leider bin ich immer noch keinen Schritt weiter auch wenn ich die Order Anweisung weglasse läuft die Abfrage nicht dann kommt Falsche Syntax in der nähe von ;
    es ist zum Verzweifeln
     
  8. dabadepdu

    dabadepdu Datenbank-Guru

    "..meint noch"? 2 Fehlermeldungen? Oder die nächste?

    Ist das eine Abfrage in einem Programm an dem Du schreibst?
    Dann lass das Semikolon weg.

    Semikolon verwendet man nur bei Command Line Tools oder in einer SQL IDE.

    Und nach der schließenden Klammer kannst Du ohne Gefahr noch ein Alias für das Subselect spendieren.
    Statt
    ..)))))
    ORDER BY..
    besser

    ..))))) PS
    ORDER BY..

    "PS" kann auch anders lauten, ist nur ein Alias, den ich mir ausgedacht habe, aber es braucht offenbar einen.
    Lies Dir mal durch, was ein Table Alias oder Sub Select Alias ist und wofür der gut ist.
    Es gibt Systeme, die ohne auskommen, wenn die Sterne günstig stehen. Aber es ist gute Praxis, sie immer zu benutzen.
    Benutzen= Nicht nur reinschreiben/erzeugen, auch weiter verwenden (in der Select Clause, in der Where Clause, überall)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden