Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Dirk am September 18, 2005, 12:03:34

Titel: MySQL Control Flow Functions in Access
Beitrag von: Dirk am September 18, 2005, 12:03:34
hi leute,

in mysql bin ich recht fit,
aber access ist neu für mich.

ich würde gern das CASE konstrukt (http://dev.mysql.com/doc/mysql/en/control-flow-functions.html)
aus mysql in access nutzen. das scheint
es da nicht zu geben. wie ist dafür die
alternative syntax?

bzw. mal allgemein: gibt es irgendwo eine
übersicht über die in access verfügbar sql?

vielen dank für eure tipps.

Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Hondo am September 19, 2005, 20:17:28
Hallo,
T-SQL welches u.a. von MySQL verwendet wird kann man bei solchen Spezialfällen imo nicht auf Access ummünzen.
Erkläre dein Problem, was du machen möchtest etc und wir helfen dir bei der Suche nach Alternativen.

Gruß Andreas
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Dirk am September 19, 2005, 20:44:20
ok, vielen dank schon mal.

es geht um eine artikel-db für einen shop.

die auszulesende tabelle enthält artikelname, kategoriename usw.

einige kategorienamen sollen umbenannt werden
also SELECT WHEN katname='a' THEN katname='b' ELSE katname AS ...

mh, weiß nicht, ob das jetzt verständlich war ;-)
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Hondo am September 19, 2005, 20:51:27
Hallo,
mach eine Select/Case Schleife, bestimme die einzelnen Werte wie Feldname, neuer Feldname etc, baue dir daraus resultierend ein SQL-Statement zusammen und führe dies aus.
BTW, Feldnamen kannst du mit Select nicht ändern, sondern mit Alter Table...

Gruß Andreas

PS: imo macht es keinen Sinn die Feldnamen in einer Tabelle während der Laufzeit zu ändern. Ich mutmaße dass an deinem Datenbankkonzept was falsch ist.
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Dirk am September 19, 2005, 21:32:31
ah, uuh, nee. ich verstehs ni.

eine select case abfrage würd ich ja gern machen:
SELECT
ARTIKEL1 AS KURZNAME,
(CASE WHEN GRUPPE1 ='Displays' THEN 'Monitore' ELSE GRUPPE1 END) as KATEGORIE_NAME
FROM bla


aber da erhalte ich den fehler:
syntaxfehler (fehlender operator) in abfrageausdruck ...

und das war auch falsch rübergekommen,
ich möchte nicht den feldnamen ändern,
sondern lediglich den inhalt
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Hondo am September 19, 2005, 21:38:06
Hallo,
du weisst doch vor dem Abschicken welche Felder umbenannt werden sollen und wie sie umbenannt werden sollen - oder?
BTW: erkläre doch mal was dies für ein Sinn machen soll?

Andreas
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Dirk am September 19, 2005, 21:50:17
ja, die bedingungen stehen fest und ändern sich auch nicht.

sinn macht das, da aus der großhändler-db die artikel
für den eigenen webshop geholt werden - und dabei
sollen halt einige artikel in andere kategorien gesteckt
werden.
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Hondo am September 19, 2005, 22:00:07
Hallo,
Zitatund dabei sollen halt einige artikel in andere kategorien gesteckt werden.
Ja das ist jetzt klarer um was es geht.
Du musst für jede Kategorie folgendes ausführen:
Update Tabelle set kategorie = 'andereKategorieX' Where kategorie = 'kategorie1' AND sonstiges Kriterium
Update Tabelle set kategorie = 'andereKategorieY' Where kategorie = 'kategorie2' AND sonstiges Kriterium
Update Tabelle set kategorie = 'andereKategorieZ' Where kategorie = 'kategorie3' AND sonstiges Kriterium
...

Hast du nur wenige Kategorien die geändert werden müssen würde ich es so hard-coded machen.
Wie unterscheidest du bei welchen Artikel die Kategorie geändert werden soll?

Gruß Andreas
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Dirk am September 19, 2005, 22:19:54
die unterscheidung erfolgt rein nach kategoriename.
die variante mit dem update vorher käme als lösung
also in frage, obwohl es schon einige viele kategorien
betrifft. naja.

großen dank jedenfalls für deine hilfe!

jetzt hätte ich nur noch das problem, wie ich mehre
abfragen automatisch ablaufen lassen kann?!
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Hondo am September 20, 2005, 09:02:03
Wenn du weisst welche Kategorien es betrifft und welchen neuen Kategorienamen in Frage kommt kannst du dies in 2 Array schreiben und dann dieses in einer For-Schleife abarbeiten.

Dim arrAlt As Variant, arrNeu As Variant, i As Integer
arrAlt = Array("1","5","9","18")
arrNeu = Array("11","17","18","25")
For i = lbound(arrAlt) to ubound(arrAlt)
    Currentdb.Execute "Update Tabelle1 set kategorie  = " & arrNeu(i) & " Where kategorie = " & arrAlt(i)
Next i


Gruß Andreas
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: Dirk am September 21, 2005, 19:01:39
wunderbar, dank dir! :)
Titel: Re: MySQL Control Flow Functions in Access
Beitrag von: imp666 am März 03, 2011, 14:01:35
SELECT
ARTIKEL1 AS KURZNAME,
(CASE WHEN GRUPPE1 ='Displays' THEN 'Monitore' ELSE GRUPPE1 END) as KATEGORIE_NAME
FROM bla


In Access gibt es in SQL eine ähnlich funktionale Syntax, ich würde es in Access evtl. so umsetzen:
SELECT IIF(GRUPPE1 ='Displays';'Monitore';GRUPPE1) AS gruppe FROM bla