Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Unzulässiges Einklammern des Namens Select

Frage Microsoft Microsoft Office

Mitglied: stevensqwe

stevensqwe (Level 1) - Jetzt verbinden

31.03.2010, aktualisiert 05:16 Uhr, 8947 Aufrufe, 5 Kommentare

Hilfe!!!
Irgendwie spinnt eine Abfrage, ACCESS mag sie gar nicht, weiss aber nicht wieso...
Wisst Ihr Rat?
Schönen Gruß,
stevens

Ominöse Dinge passieren: Ich speichere folgende Abfrage ab:

SELECT A.*
FROM LyoTable AS A, (SELECT [Lot Number], Max([Start Time] +[Start Date]) AS StartDateTime
FROM Lyotable
GROUP BY [Lot Number]) AS B
WHERE (A.[Lot Number]=B.[Lot Number] AND A.[Start Date]+ A.[Start Time] = B.StartDateTime);

und ACCESS ersetzt einfach die Klammer um (SELECT.... ] ) mit [SELECT.... ] ]. wie folgt:

SELECT A.*
FROM LyoTable AS A, [SELECT [Lot Number], Max([Start Time] +[Start Date]) AS StartDateTime
FROM Lyotable
GROUP BY [Lot Number] ]. AS B
WHERE (A.[Lot Number]=B.[Lot Number] AND A.[Start Date]+ A.[Start Time] = B.StartDateTime);

und wirft dann beim Versuch, diese Abfrage erneut zu öffnen, den Fehler: "Unzulässiges Einklammern des Namens 'Select [Lot Number'."

Könnt Ihr Euch darauf einen Reim machen? ACCESS will dann auch gar nicht mehr diese Abfrage öffnen...
Mitglied: trommelschlumpf
31.03.2010 um 09:42 Uhr
Die erste Antwort war etwas... unausgereift...

So, jetzt:

Abgesehen von dem SELECT, was hier wirklich zu viel ist passen da noch ein paar andere Sachen nicht.

Mal das offensichtliche:

Zitat von stevensqwe:
>... FROM LyoTable AS A, (SELECT [Lot Number], Max([Start Time] +[Start Date]) AS StartDateTime

Mit dem Teil willst du anscheinend 2 Felder zu einem verbinden. Das geht nicht mit "+" sondern mit "&".

Was soll die Abfrage eigentlich rausschmeissen? Ich hab so den Eindruck du versuchst mehrere Abfragen in eine einzige zu packen.
Bitte warten ..
Mitglied: SlainteMhath
31.03.2010 um 09:57 Uhr
Moin,

der SELECT ist an der Stelle schlichtweg falsch.. was genau willst du denn mit damit erreichen?

lg,
Slainte
Bitte warten ..
Mitglied: Biber
31.03.2010 um 14:17 Uhr
Moin stevensqwe,

jepp, da hast du den Redmonder PraktikantInnen wieder voll in den Schritt gefasst.

der Parser (=Syntaxprüfer und Übersetzer in Richtung Datenbankengine) der JET-Datenbank hat ein Problem damit, eine Query richtig mit einer Subquery zu verknibbeln, wenn denn die SubQuery selbst Feldnamen in eckigen Klammern enthält.

Konkreter:
01.
SELECT A.* 
02.
FROM LyoTable AS A,  
03.
   (SELECT [Lot Number], Max([Start Time] +[Start Date]) AS StartDateTime   
04.
          FROM Lyotable 
05.
        GROUP BY [Lot Number])  
06.
         AS B 
07.
     WHERE  
08.
         (A.[Lot Number]=B.[Lot Number]  
09.
          AND  
10.
      A.[Start Date]+ A.[Start Time] = B.StartDateTime);
--> was hier stört, sind die ganzen "[" und "]"s in der Subquery, die letzten Endes unter dem Alias B angesprochen wird.
Und die sind nur nötig, weil irgendeine Schafsnase unbedingt meinte, Datenbankfeldnamen mit "Leerzeichen im Namen" wie z.B. "Start Time" wären total angesagt in der Szene.
(Ich sprach kurz in dem Vorgängerthread darüber, glaube ich.)

Abhilfe:

Meiner unmaßgeblichen Meinung nach wäre das Problem ohne "Feldnamen in eckigen Brackets" gar nicht aufgetreten. und wenn diese wiederum nur nötig sind wegen dieser Leerzeichen... dann zwei oder drei Lösungsansätze:
  • statt auf Tabellen lieber auf Eins-Zu-Eins-Views (=heißen in Access auch "Abfragen") gehen, in denen die Feldnamen keine Leerzeichen mehr haben. Also "StartDate" statt "Start date"; "Lotnumber" statt "Lot Number" heißen
  • Oder aber die Subquery auslagern in eine eigenständige Query, i.e das "SELECT [Lot Number] as LotNumber, Max([Start Time] +[Start Date]) AS StartDateTime FROM Lyotable GROUP BY [Lot Number] " in ein neues Abfrage-SQL-Fenster copy&pasten, Abfrage speichern als "LyoTableGroupedbyDateTime" und in der Query oben diesen Namen einsetzen
  • oder aber tabula rasa machen und diese mistigen Leerzeichen endlich mal in den Tabellen resp LyoTable selbst rauswerfen (Felder umbenennen... natürlich auch in evtl Applikationen, Queries etc.)

Grüße
Biber
Bitte warten ..
Mitglied: stevensqwe
31.03.2010 um 16:03 Uhr
Danke Euch für die Hilfe!
Wenn das ein Parser Problem ist, kann ich wenigstens nachvollziehen, was ACCESS da im Hintergrund leistet bzw. nicht leistet...
und am sinnvollsten, die Leerzeichen einfach wegzulassen, hätte nicht gedacht, dass das den Parser durcheinander bringen könnte.
Danke und Gruß,
stevens
Bitte warten ..
Mitglied: Biber
31.03.2010 um 16:16 Uhr
Moin stevensqwe,

hätte nicht gedacht, dass das den Parser durcheinander bringen könnte.
Na ja, ist ja kein Parser, der von Profis zusammengestoppelt wurde....
Da kannst du schon mal ein Auge zudrücken.

Wir können doch froh sein, dass überhaupt noch engagierte Unternehmen jungen Leuten, die sonst chancenlos auf dem ersten bis dritten Arbeitsmarkt wären, einen Ausbildungsplatz resp. eine Spielwiese bereitstellen.

Obwohl.... bei manchen Redmondern Programmen denk ich mir auch: Hey, eine neue Halfpipe oder ein Bolzplatz hätte den Kidz genauso viel Freude gemacht.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Datenbanken
Mit sql eine Zeile einfügen, select und feste Werte (9)

Frage von helmuthelmut2000 zum Thema Datenbanken ...

C und C++
Einfacher Webserver in C mit select() (1)

Frage von Ah3n0bar6us zum Thema C und C ...

Datenbanken
gelöst IF Abfrage im SELECT Oracle SQL (2)

Frage von Roadrunner777 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Router & Routing
gelöst Empfehlung günstiges ADSL2+ nur Modem (10)

Frage von TimMayer zum Thema Router & Routing ...

Server-Hardware
Lenovo Server System X 3650 M5 Festplatten (9)

Frage von Hendrik2586 zum Thema Server-Hardware ...