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, 5862 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
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
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 VBA Excel Recordset - Abfrage auf SQL-Server (4)

Frage von Aximand zum Thema VB for Applications ...

C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...