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, 5885 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 ..
Ähnliche Inhalte
Datenbanken
gelöst MySQL "order by" erst bestimmtes Wort, dann alphabetisch (9)

Frage von AS-N00 zum Thema Datenbanken ...

Datenbanken
gelöst SQL ORDER BY und Join mit 2 Tabellen (7)

Frage von Dipps zum Thema Datenbanken ...

VB for Applications
SNMP Abfrage in EXCEL über VBA (7)

Frage von SebastianL zum Thema VB for Applications ...

Neue Wissensbeiträge
Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (14)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (13)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...