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

ACCESS 2007 DECODE oder vergleichbare Funktion

Frage Microsoft Microsoft Office

Mitglied: 68863

68863 (Level 1)

27.08.2008, aktualisiert 28.08.2008, 7796 Aufrufe, 2 Kommentare

Hallo,

in ORACLE SQL gab bzw gibt es die Funktion DECODE, mit der man entsprechend der IF-THEN-ELSE Logik bedingte Abfragen aus einer Tabelle erstellen kann. Das selbe habe mit einer Access 2007 Datenbank ausprobiert, leider mit wenig erfolg da Access die Funktion DECODE nicht kennt. Weiss jemand ob es eine Vergleichbare Funktion gibt?
Mitglied: Biber
28.08.2008 um 00:10 Uhr
Moin ABC123,

willkommen im Forum.

die M$Access-Funktionalität, die wohl der DECODE-Funktion am nächsten kommt, ist nicht etwa diese grottige IIF()-Verirrung, sondern die switch()-Funktion.
Diese ist allerdings (außer in meinen Memoiren) vermutlich nur in irgendwelchen Redmonder Praktikanten-Monatsberichten dokumentiert.
Aber für die lausigste DB-Syntax-Dokumentation der südlichen Quadranten dieses Spiralarms der Galaxis ist Access ja bekannt.

Deshalb schnell zwei kurze nachvollziehbare Beispiele:
01.
PARAMETERS Stichtag DateTime; 
02.
select  
03.
switch(m.type=1,"Tabelle", 
04.
           m.type= 5,"Abfrage", 
05.
           m.type= -32768 ,"Formular", 
06.
           m.type=-32766,"Makro", 
07.
           m.type=-32764, "Bericht", 
08.
           m.type=-32761, "Modul", 
09.
           m.Type=2,"MSysDb", 
10.
           m.type=3,"Container", 
11.
           m.type=4,"ODBC-verknüpfte Tabelle", 
12.
                               true, "Exotisches") as Objekttyp, 
13.
 m.Name, m.Type, m.flags, m.DateCreate AS angelegt, m.DateUpdate AS geandert 
14.
FROM MSysObjects AS m 
15.
WHERE (m.DateUpdate>=[stichtag]) 
16.
order by 1
Diese (skizzierte) Abfrage listet alle DB-Objekte auf, die seit einem einzugebenen Stichtag geändert worden sind.
Die SWITCH()-Funktion verwende ich hier exakt so, wie ich auch die DECODE-Funktion benutzen würde, inklusive des DEFAULT-Falls.
Zweiter Haken (neben der fehlenden Dokumentation): der SWITCH-Funktion geht relativ schnell die Puste aus... nach ein paar albernen Fallunterscheidungen meldet ACCESS dann "Ausdruck zu komplex" oder ähnliche Hilflosigkeitsbekundungen.
In diesem Fall musst Du dann SWITCH-Funktionen schachteln:
01.
PARAMETERS Stichtag DateTime; 
02.
select  
03.
switch(m.type=1,"Tabelle", 
04.
           m.Type=2,"MSysDb", 
05.
           m.type=3,"Container", 
06.
           m.type=4,"ODBC-verknüpfte Tabelle", 
07.
           m.type= 5,"Abfrage", 
08.
           m.type= 6, "Jet-verknüpfte Tabelle", 
09.
           m.type= 8,"Beziehung",    
10.
           true, switch(m.type= -32768 ,"Formular", 
11.
                               m.type=-32766,"Makro", 
12.
                               m.type=-32764, "Bericht", 
13.
                               m.type=-32761, "Modul", 
14.
                               m.type=-32758,"Benutzer", 
15.
                               m.type=-32757,"DB-Eigenschaft", 
16.
                               m.Type=-32756, "Datenzugriffsseite", 
17.
                               true, "Biber nich weiß")) as Objekttyp, 
18.
 m.Name, m.Type, m.flags, m.DateCreate AS angelegt, m.DateUpdate AS geandert 
19.
FROM MSysObjects AS m 
20.
WHERE (m.DateUpdate>=[stichtag] And [....]) 
21.
order by 1
[auf eine sinnvolle/praxisnahe WHERE-Clause hab ich hier verzichtet, is' nich unser Thema grade]

Grüße
Biber
Bitte warten ..
Mitglied: 68863
28.08.2008 um 08:08 Uhr
Super vielen, vielen Dank.

Gruß

ABC123
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Access 2007 (2)

Frage von Everest zum Thema Microsoft Office ...

VB for Applications
gelöst VBA Code Änderung Access 2010 (6)

Frage von Dr.Cornwallis zum Thema VB for Applications ...

Windows 10
Windows 10 mit Direct Access 2012 R2 zeigt es nicht alle Ordner an (4)

Frage von rainergugus zum Thema Windows 10 ...

Switche und Hubs
SG300: Modus "Access" vs. "Trunk" (3)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (48)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

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

Windows Server
Server 2012 R2 - Zugriff Verweigert bei jeglicher Tätigkeit (13)

Frage von DarkLevi zum Thema Windows Server ...