falkster
Goto Top

access tabellen- spalten errechnen lassen

hi buddies,

wie kann man sich in ms access spalten "errechnen" lassen, quasi wie in excel...
beispiel:

eine spalte heißt "arbeitsbeginn", die 2.te heißt "arbeitsende" nun möchte ich mir
in spalte "stunden" die arbeitszeit in stunden ausgeben lassen, indem ich die differenz
aus beginn und ende bilde....

sorry.... aber ich bin echt ziemlich raus aus access face-wink

danke für jeden tip!!!

fm

Content-ID: 12315

Url: https://administrator.de/contentid/12315

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

16640
16640 07.09.2005 um 09:41:05 Uhr
Goto Top
SQL: update [tabellenname] set stunden = arbeitsende - arbeitsbeginn
Falkster
Falkster 20.09.2005 um 15:54:14 Uhr
Goto Top
hi,

danke, aber muss
ich für jede änderung eine extra abfrage schreiben??

... access füllt mit auch die spalte noch nicht obwohl geschrieben wird,
das X Datensätze aktualisiert werden, woran kann das liegen?

thanx
Biber
Biber 20.09.2005 um 18:03:12 Uhr
Goto Top
@Falkster
Magst Du mal die Struktur Deiner Tabelle XZ posten oder würde uns das nur unnötig belasten? Wüsste mindestens 4 verschiedene Gründe, warum im Feld "Stunden" nichts zu sehen ist, bei Kenntnis der Feldtypen ließe sich das aber einschränken.

Biber
16640
16640 20.09.2005 um 18:05:46 Uhr
Goto Top
Hab' ich ja schon fast wieder vergessen, diesen Thread ...

Was meinst Du mit 'jede Änderung' ?

Du kannst natürlich mehrere Felder in einem Lauf ändern, dann trennst Du die Statements mit einem Komma, bspw.:

update [tabellenname] set spalte1 = wert1, spalte2 = wert2, spalte3 .... (usw.)

Was meinst Du mit 'access füllt die Spalte noch nicht ...'? Wenn Du keine Fehlermeldung bekommst, dann hat Access die Anweisungen auch ausgeführt. Kann natürlich sein, dass je nach WHERE-Bedingung nichts upgedated werden musste/sollte. Aber das kann ich aus meiner Kristallkugel nicht lesen. Dann müsstest Du schon mal konkrete Anweisungen posten, damit man da was zu sagen kann.
Falkster
Falkster 21.09.2005 um 09:56:17 Uhr
Goto Top
danke vielmals!

..also in einer tabelle "aufträge" habe ich u.a. die spalten,

"norm" "25%" "40%" und "Gesamtstunden,

nun will ich, dass die stunden aus norm,25%,40% addiert werden und in "Gesamtstunden"
eingetragen werden für den jeweiligen Datensatz.

Der Felddatentyp ist immer "zahl"

thanx
16640
16640 21.09.2005 um 13:21:58 Uhr
Goto Top
Das hier

update [aufträge] set Gesamtstunden = norm + [25%] + [40%]

sollte funktionieren.

Tip: verwende keine Sonderzeichen in Objektnamen, Du sparst Dir dann die umständliche Eingabe und kannst die eckigen Klammern weglassen.
Falkster
Falkster 21.09.2005 um 15:14:06 Uhr
Goto Top
hi dba,


habe das so gemacht, es werden angeblich die datensätze aktualisiert...
allerdings wird die spalte "gesamtstunden" nicht gefüllt mit den summen,
verstehe das nicht...

cu

falkster
Biber
Biber 21.09.2005 um 15:43:52 Uhr
Goto Top
@Falkster,
a) ich habe mir die Struktur, soweit preisgegeben, sinngemäß angelegt und mit der Anweisung

Update tabelle1 t set stundengesamt= t.norm+ t.[25%]+t.[40%]+ t.norm;

das Feld Stundengesamt aktualisiert. Gibt es irgendwelche Details, die wir noch wissen sollten zu deiner Tabelle???

b) Abgesehen davon beiße ich mir schon seit gestern auf die Zunge:
WOZU brauchst du denn das redundante Feld "Stundengesamt" in der Tabelle?
Ein
 [create view View4711 as] *<i>siehe Anmerkung unten</i>
SELECT  t.[25%], t.[40%], t.Norm, t.Norm+ t.[25%]+t.[40%]+ t.norm AS AlleStunden
FROM Tabelle1 t;

würde doch das gleiche bringen und ist auf jeden Fall widerspruchsfreier.
Nun sag nicht, das diese Addier-Aktionen Zeit kosten....

Frank / der Biber aus Bremen
[Edit] *Anmerkung: Ok, ich habs erst später gemerkt: MS-Access ist noch nicht ganz soweit, dass sich da VIEWs anlegen lassen.
Vielleicht später, wenn Windows 256-Bit-Architektur hat.
Also bleibt das "create view view4711" leider virtuell. However, trotzdem ist kein redundantes (errechnetes) Feld "Gesamtstunden" nötig, dafür reichen sogar die dreieinhalb zur Verfügung stehenden Access-SQL-Befehle.
Habe das erste Mal (seit Access97) wieder ein Access aufgehabt - und ganz naiv in der Hilfe nach "SQL" gesucht. Wollte nur wissen, an welche SQL-Norm die M$-Praktikanten sich anlehnen. Na ja... ein bisschen dünn ist das aber ja schon... *lach*. Was kostet denn so ein Access eigentlich? *breitgrinst* [/Edit]
Falkster
Falkster 21.09.2005 um 16:00:12 Uhr
Goto Top
hi biber,

danke schonmal
probier das morgen aus.

face-smile
Biber
Biber 21.09.2005 um 16:01:52 Uhr
Goto Top
@Falkster
Wie, morgen?
der Arbeitstag hat doch noch 8 Stunden exclusive Teepausen? face-wink
16640
16640 22.09.2005 um 08:10:38 Uhr
Goto Top
Ich verfolge das gespannt weiter. Nebenbei: was für ein Zahlenformat haben denn die Spalten? Wenn Du in der Tabellendefinition bist, wählst Du oben den Feldtyp ('Zahl' bspw.) und unten dann die Art, um welche Zahl es sich handelt. Kannst Du mal da die genauen Einstellungen posten? Thx.

dba
Falkster
Falkster 22.09.2005 um 08:47:24 Uhr
Goto Top
hi dba!

..also:

feldgröße: long integer
dezimalstellenanzeige: automatisch
standardwert: 0
eingabe erforderlich: nein
indiziert: nein

brauche ich bestimmte formate für "zahl" um damit rechnen zu können?

@ biber: habe das ausprobiert, und mir mit "AS" also eine spalte für die summe angelegt, sie bleibt nur leer, was meintest du mit dem "bleibt leider virtuell"????
16640
16640 22.09.2005 um 09:25:41 Uhr
Goto Top
Hi Falkster,

und Du bist der Ansicht, dass Du in ein Feld mit einem Datentyp Long Integer und logischerweise 0 Dezimalstellen Stunden und deren Bruchteile erfassen kannst? Oder arbeitet ihr nur ganze Stunden?

Und jetzt mal eine ganz banale Frage von mir: Hast Du in deinen Spalten Norm, 25% und 40% auch was drin stehen, oder sind die leer? Könntest Du mal ein paar Zeilen aus der Tabellenanzeige hier aufführen? Das würde helfen.

Zu Bibers Erläuterung: Du hast mit dem 'AS' keine Spalte in Deiner Tabelle angelegt, sondern nur die Resultatspalte des SQL-Statements mit einem Namen versehen. Abfragen werden erst zum Zeitpunkt des Aufrufes ausgeführt und holen die dann aktuellen Daten aus den Tabellen um sie anzuzeigen oder anderen Accesskomponenten zur Verfügung zu stellen.

dba
Biber
Biber 22.09.2005 um 09:36:45 Uhr
Goto Top
@Falkster

Die Spieltabelle tabelle1, die ich angelegt habe sieht so aus:
--
stundengesamt, Zahl (Also Default: Long Integer, nix geändert)
25%, Zahl, dito
40%, Zahl, dito
Norm,Zahl. dito
---
Eingegebener Satz:
"25%": 44
"40%": 33
norm: 11
--> nach dem "Update" oben habe ich wie erwartet 88 im Feld "Stundengesamt"

Mit "virtuell " meinte ich nur: ich kann leider im Access nicht mal einen View, also eine bestimmte Sicht auf eine Tabelle anlegen - normalerweise hätte ich von einen Programm jenseits der 19.95-Euro-Grenze das schon erwartet.

Von daher kann ich zwar in Gedanken das zweite Select-Statement als View bezeichnen ("virtuell"), aber ich kann es nicht hinterlegen. Oder ich habs nicht gefunden in Access.

Warum bei Dir das Feld leer bleibt, kann ich nicht nachvollziehen.
Falkster
Falkster 22.09.2005 um 10:59:31 Uhr
Goto Top
danke für soviel hilfe leute!!!!!

..nun hab ich was gefunden...

warum dürfen die felder nicht "leer" sein????? wenn alle
spalten einen wert
haben gehts...

gruß
16640
16640 22.09.2005 um 11:07:29 Uhr
Goto Top
Hallo Falkster,

naja, eine leere numerische Spalte sollte zumindest eine '0' enthalten, oder?

Ich frag' mich nur, wie Du das hinbekommen hast ...


dba
Biber
Biber 22.09.2005 um 11:16:07 Uhr
Goto Top
@16640
Hätte wir eher gemerkt, wenn wir ein
...where t.[25%]+t.[40%]+ t.norm > 0 
angegeben hätten. Wir sollten das Ganze eben ernster nehmen. face-big-smile