Berechnetes Feld in Tabelle

Moderator: ModerationP

Berechnetes Feld in Tabelle

Beitragvon Krügi » 26. Sep 2019, 16:18

Hallo alle zusammen,
ich möchte in einer Tabelle ein berechnetes Feld mit einer Wenn das oder wenn das oder wenn das, dann schreibe Fall1, Wenn icht, schreibe Fall2 erzeugen. Ich bekomme das mit der Syntax nicht hin.

Beispiel: Stehen im FeldA die Ausdrücke Test1 oder Test2 oder Test3 dann schreibe Fall1, wenn nicht, schreibe 0

Kann mir jemand weiterhelfen?
Krügi
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 427
Registriert: 01. Apr 2009, 09:05

Re: Berechnetes Feld in Tabelle

Beitragvon Marmeladenglas » 26. Sep 2019, 17:01

Code: Alles auswählen
Wenn([Feldx]="Test1" Oder [Feldx]="Test2" Oder [Feldx]="Test3";1;0)
Marmeladenglas
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 16747
Registriert: 23. Jan 2008, 18:55

Re: Berechnetes Feld in Tabelle

Beitragvon Krügi » 27. Sep 2019, 08:40

Vielen Dank Marmeladenglas!

Einen schönen Tag
Krügi
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 427
Registriert: 01. Apr 2009, 09:05

Re: Berechnetes Feld in Tabelle

Beitragvon JU299 » 07. Okt 2019, 17:36

Hallo,

man möge mich bitte berichtigen. Aber widerspricht ein berechnetes Feld in einer Tabelle nicht der Definition
der 3. Normalform, die folgendes besagt:

Dritte Normalform (3NF)

Eine Tabelle befindet sich in der dritten Normalform, wenn sie der zweiten Normalform entspricht und darüber hinaus alle Felder, die nicht den Primärschlüssel bilden, voneinander unabhängig sind.


Danke schon mal für eine evtl. Aufklärung.
Jörg
Gehe mit Anderen stets so um, wie Du erwartest, dass man mit Dir umgeht
JU299
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 174
Registriert: 10. Aug 2008, 23:04

Re: Berechnetes Feld in Tabelle

Beitragvon Bitsqueezer » 08. Okt 2019, 09:04

Hallo,

ja, das mag wohl sein, aber wo steht geschrieben, daß sich eine Tabelle in einer bestimmten Normalform befinden muß?

Man sollte nicht dem Irrtum verfallen, daß eine Datenbank zwingend die höchste Normalform haben muß und alles andere schlicht falsch ist. Die Normalformen sind nur graue Datenbanktheorie und manchmal anwendbar - manchmal aber auch nicht.

Ich hatte dazu schon mal das Beispiel Adresstabelle gebracht, bei der eine totale Normalisierung der totale Irrsinn wäre, da man dann Städte in einer eigenen Tabelle haben müßte, Straßen, Hausnummern und bei PLZs wird es dann ganz kompliziert. Man hätte eine Ultranormalisierung, aber völlig praxisfremd.

Ein berechnetes Feld in einer Tabelle ist dann sinnvoll, wenn die zugrundeliegende Datenbank erlaubt, den berechneten Wert peristent zu speichern, also wie ein normales Feld, so daß bei jeder Änderung der zugrundeliegenden Felder die Berechnung automatisch neu erfolgt und das Ergebnis gespeichert wird. Dann kann auf das berechnete Ergebnis ein Index erstellt werden, womit insbesondere Reporte einen deutlichen Mehrwehrt davon haben, aber auch in Formularen und Abfragen kann man davon profitieren. Das ist nicht normalisiert, aber praxisnah, weil es die Performance deutlich steigern kann.

Beim Datenbankdesign kommt es nicht darauf an, irgendwelche Theorien strikt zu befolgen, sondern sich zu überlegen, was für das geforderte Ergebnis die beste Methode ist. Schau Dir etwa mal an, wie etwa ein Sternschema einer Datawarehouse-Datenbank designt wird, da kannst Du Normalformen i.d.R. erst mal vergessen, hier wird absichtlich redundant gespeichert, weil es das Ergebnis erfordert.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7210
Registriert: 21. Jun 2007, 12:17

Re: Berechnetes Feld in Tabelle

Beitragvon Gast » 08. Okt 2019, 10:15

Dann kann auf das berechnete Ergebnis ein Index erstellt werden

Das wäre dann schön, wenn es denn gelingt.

Ein Gegenargument für berechnete Felder in Tabellen wäre - besonders bei jenen, die es einfach und flüchtig lieben und ganze Tabellen verwenden - der Umstand, dass die Berechnung dann immer ausgeführt wird, auch wenn man das Feld gar nicht braucht, also => unnützer Aufwand, Performancereduzierung.
Gast
 

Re: Berechnetes Feld in Tabelle

Beitragvon Bitsqueezer » 08. Okt 2019, 16:03

Hallo Gast,

erstens gelingt es bis jetzt immer und zweitens sprach ich bereits von persistenter Speicherung des Ergebnisses, beides mit SQL Server als Backend kein Problem.

Ein berechnetes Feld ohne Persistenz geht auch, aber dann muß man halt beim SELECT aufpassen, wenn man das Berechnungsergebnis nicht braucht, das Feld auch nicht selektieren - dann wird es auch nicht live berechnet.

Wenn man es dagegen braucht, würde man es alternativ ohnehin in eine View/Query packen und die würde es dann live berechnen, gleiche Performance also. Entsprechend ist es auch hier durchaus eine positive Alternative, da die Berechnungsformel nur an einer Stelle hinterlegt wird (im berechneten Feld) und dann überall verwendet werden kann, ohne die Formel jedesmal neu schreiben zu müssen.

Wie immer, muß man mit seinen Werkzeugen auch umgehen können. Wer immer SELECT * FROM verwendet, muß sich offenbar generell keine Gedanken um Performance machen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7210
Registriert: 21. Jun 2007, 12:17

Re: Berechnetes Feld in Tabelle

Beitragvon KlausMz » 08. Okt 2019, 16:07

Hallo,
@Christian
Dann kann auf das berechnete Ergebnis ein Index erstellt werden,

Wie legst Du in einen berechneten Feld einer Accesstabelle einen Index an ?
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39236
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Berechnetes Feld in Tabelle

Beitragvon Bitsqueezer » 08. Okt 2019, 21:06

Hallo Klaus,

gar nicht, da in Access auch keine Persistenz möglich ist, ohne die geht das auch nicht in SQL Server.

Aber wie gesagt, haben auch nicht persistente berechnete Felder ihre Vorteile.

Vielleicht bringt Microsoft die Möglichkeiten ja auch mal in Access ein. Aber ich hatte ja schon das ein oder andere Mal erwähnt, daß Access für mich als Datenbank ohnehin nicht mehr in Frage kommt...

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7210
Registriert: 21. Jun 2007, 12:17

Re: Berechnetes Feld in Tabelle

Beitragvon KlausMz » 08. Okt 2019, 22:36

Hallo Christian,
und warum schreibst Du es dann ?
Wir sind hier ja in einem Accessforum und da sollten sich Antworten auch auf Access beziehen.
Ich habe mir ernsthaft überlegt, wie auf das berechnete Feld ein Index zu legen ist.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39236
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Berechnetes Feld in Tabelle

Beitragvon Bitsqueezer » 08. Okt 2019, 23:19

Hallo Klaus,

ich glaube, wir diskutierten hier gerade über die 3. NF und dem Sinn eines berechneten Feldes, nicht über Access.

Und hier wird ja wohl schon immer auch über andere Datenbanken diskutiert. Du willst wohl jetzt nicht anfangen, Antworten auf Access zu beschränken...

Nebenbei habe ich oben gesagt, daß Persistenz und Index bei SQL Server gemeint war, aber auch ohne diese Möglichkeiten ein berechnetes Feld durchaus Sinn macht - auch in Access.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7210
Registriert: 21. Jun 2007, 12:17

Re: Berechnetes Feld in Tabelle

Beitragvon KlausMz » 08. Okt 2019, 23:49

Hallo,
ich glaube, wir diskutierten hier gerade über die 3. NF und dem Sinn eines berechneten Feldes, nicht über Access.
nein, ich will nicht über die 3. Normalform diskutierten.
Zumal ich Dir ja im Prinzip auch Recht gebe. Es war eine ganz einfache Rückfrage, ohne Hintergedanken, weil mich Dein Hinweis auf den Index irritiert hat. Und mit SQL Server habe ich das nicht in Verbindung gebracht und auch nix gelesen. Aber wie gesagt, es war nur eine Nachfrage, aus reinem Interesse.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39236
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Berechnetes Feld in Tabelle

Beitragvon derArb » 09. Okt 2019, 13:45

Hallo,.
Zitat von Bitsqueezer:
...Aber ich hatte ja schon das ein oder andere Mal erwähnt, daß Access für mich als Datenbank ohnehin nicht mehr in Frage kommt...

Um so mehr freut es mich (!!!) zumindest, dass Du, Bitsqueezer, uns im Access-Forum mit Deiner Kompetenz und Deinen Hilfen bisher erhalten bliebst und hoffentlich möglichst auch weiterhin erhalten bleiben wirst; Du würdest sonst sehr fehlen.
Ich hoffe, dass es den "Mond" auch zukünftig nicht kümmern wird, wenn ihn mal ein aufgeregter "Mops" wie ich oder auch aktuell andere ihn mal anhusten.
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
derArb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14435
Registriert: 19. Apr 2006, 18:39
Wohnort: Berlin

Re: Berechnetes Feld in Tabelle

Beitragvon Bitsqueezer » 09. Okt 2019, 15:09

Hallo,

@derArb: danke für die Blumen, aber ich habe mich gar nicht angehustet gefühlt und ich habe nicht vor, das Access-Forum zu verlassen.

@Klaus: Du nicht (über 3.NF diskutieren), aber die Frage kam ja oben auf und das war nur die Antwort darauf. Im Übrigen schadet es ja nicht, etwas auszuprobieren (also hier zu versuchen, den Index zu erzeugen), man entdeckt oft, daß Access noch einiges kann, was man nicht vermutet hätte. Ich lerne auch immer wieder was dazu und speziell berechnete Felder sind ja noch ein relativ neues Feature.
Ich hab's übrigens auch ausprobiert. Was man noch testen könnte, wäre eine CREATE INDEX-Anweisung statt den grafischen Editor, aber ich denke, es wird auch dann nicht funktionieren, eben weil der berechnete Wert in Access nicht gespeichert werden kann, und ohne Speicherung geht das, wie gesagt, auch nicht in SQL Server.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7210
Registriert: 21. Jun 2007, 12:17


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste