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

VBA - Abfrage ergänzen um order by?

Frage Microsoft Microsoft Office

Mitglied: DerParte

DerParte (Level 1) - Jetzt verbinden

27.04.2010, aktualisiert 18.10.2012, 5872 Aufrufe, 2 Kommentare

Nabend.

Ich möchte gerne die folgende SQL-Abfrage um eine Anordnung ergänzen:

Private Sub cboEinsatzort_AfterUpdate()
'Die Abfrage wird dynamisch abgearbeitet
Me.EinsatzortUF.Form.RecordSource = "SELECT Einsatzort.Einsatzort AS Einsatzort, IIf([Personal.Titel] Is Null,[Nachname], " & _
"[Titel.Titel] & ' ' & [Nachname]) AS NName, Personal.Vorname, Personal.Wäschenummer " & _
"FROM Titel RIGHT JOIN (Einsatzort INNER JOIN Personal ON Einsatzort.EinsatzortID = Personal.Einsatzort) " & _
"ON Titel.TitelID = Personal.Titel " & _
"WHERE EinsatzortID=" & Me.cboEinsatzort

'Formulardaten erneuern
Me.Refresh
End Sub

folgendes funktioniert nicht:

"WHERE EinsatzortID=" & Me.cboEinsatzort " & _
"order by NName

Aber warum nicht?
Mitglied: Biber
27.04.2010, aktualisiert 18.10.2012
Moin DerParte,

folgendes funktioniert nicht:
....ist keine brauchbare Fehlermeldung
Bitte poste künftig Code in Codetags und Fehler mit Fehlerbeschreibungen und/oder Fehlermeldungen.

Aber warum nicht?
Okay, das lasse ich als Frage gelten.

Es funktioniert nicht, weil das "ORDER BY" den Spalten-Aliasnamen "NNAME" noch gar nicht kennt.

Du kannst dreierlei machen
1) Ändern der ORDER BY-Klausel auf
 ORDER BY IIf([Personal.Titel] Is Null,[Nachname], " & "[Titel.Titel] & ' ' & [Nachname])
....was funktionieren wird, aber alles noch unleserlicher macht und außerdem vermutlich genauso schnell performed wie die Tigerentenkoalition

2) Noch einen äußeren SELECT drumherumpacken, der da lautet
01.
 SELECT x.* from ( 
02.
{ dein vollständiges bisheriges Gewurschtel von "SELECT"...bis "Me.cboEinsatzort" } 
03.
) as x 
04.
ORDER BY x.NNAME
3) Oder aber du gibst einfach als ORDER BY-Klausel ein "ORDER BY 2"
Dann wird nach der zweiten Spalte sortiert, egal wie die betitelt ist

Variante 3 ist natürlich recommended... so würde ich es machen.

Grüße
Biber

P.S. Was ist denn mit deiner fast gleichlautenden Frage Access - Order by zusammengesetzten Feld? von gestern - ist die damit auch beantwortet oder gibst du da gesondert kein Feedback?
Bitte warten ..
Mitglied: NetWolf
29.04.2010 um 21:42 Uhr
Hi,

folgendes funktioniert nicht:

"WHERE EinsatzortID=" & Me.cboEinsatzort " & _
"order by NName

Aber warum nicht?

logisch, da fehlt z.B. ein & und ein " und ein ; und Leerzeichen

Die SQL-Anweisung ist ein String, also schreiben wir das ganze mal in eine Zeile:
"WHERE EinsatzortID= " & Me.cboEinsatzort & " order by NName"
<------String----------------> & <---Variable -----> & <----- String ------>
Die Leerzeichen nach dem Gleichheitszeichen = und vor > order< sind wichtig!!

Versuche dir immer vorzustellen, wie der String dann am Ende fertig aussehen würde:
WHERE EinsatzortID=123order by NName


Am Ende würde ich IMMER ein Semikolon ; setzen:
"WHERE EinsatzortID= " & Me.cboEinsatzort & " order by NName;"

So, nun sollte es funktionieren und du weißt nun auch warum.


Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
SNMP Abfrage in EXCEL über VBA (5)

Frage von SebastianL zum Thema VB for Applications ...

VB for Applications
gelöst VBA Text mit Format übertragen und Zeichen ergänzen (11)

Frage von Dau12345 zum Thema VB for Applications ...

VB for Applications
gelöst DB-Abfrage in Excel mit Kriterien aus Excel (11)

Frage von JensDND zum Thema VB for Applications ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
gelöst Telefonanlage gesucht (37)

Frage von Xaero1982 zum Thema TK-Netze & Geräte ...

Windows Netzwerk
Anmeldung an Domäne schlägt oft fehlt (Fehlermeldung: falsches Passwort) (24)

Frage von harald.schmidt zum Thema Windows Netzwerk ...

Exchange Server
gelöst Wie freigegebenes Postfach immer als primäre Sendeadresse verwenden? (18)

Frage von Flinxit zum Thema Exchange Server ...

Microsoft Office
Outlook 2016 - Keine Mails sichtbar (nach Suche schon) (17)

Frage von Hirschix3 zum Thema Microsoft Office ...