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-Key: 12315

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

Printed on: April 19, 2024 at 20:04 o'clock

Mitglied: 16640
16640 Sep 07, 2005 at 07:41:05 (UTC)
Goto Top
SQL: update [tabellenname] set stunden = arbeitsende - arbeitsbeginn
Member: Falkster
Falkster Sep 20, 2005 at 13:54:14 (UTC)
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
Member: Biber
Biber Sep 20, 2005 at 16:03:12 (UTC)
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
Mitglied: 16640
16640 Sep 20, 2005 at 16:05:46 (UTC)
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.
Member: Falkster
Falkster Sep 21, 2005 at 07:56:17 (UTC)
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
Mitglied: 16640
16640 Sep 21, 2005 at 11:21:58 (UTC)
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.
Member: Falkster
Falkster Sep 21, 2005 at 13:14:06 (UTC)
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
Member: Biber
Biber Sep 21, 2005 at 13:43:52 (UTC)
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]
Member: Falkster
Falkster Sep 21, 2005 at 14:00:12 (UTC)
Goto Top
hi biber,

danke schonmal
probier das morgen aus.

face-smile
Member: Biber
Biber Sep 21, 2005 at 14:01:52 (UTC)
Goto Top
@Falkster
Wie, morgen?
der Arbeitstag hat doch noch 8 Stunden exclusive Teepausen? face-wink
Mitglied: 16640
16640 Sep 22, 2005 at 06:10:38 (UTC)
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
Member: Falkster
Falkster Sep 22, 2005 at 06:47:24 (UTC)
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"????
Mitglied: 16640
16640 Sep 22, 2005 at 07:25:41 (UTC)
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
Member: Biber
Biber Sep 22, 2005 at 07:36:45 (UTC)
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.
Member: Falkster
Falkster Sep 22, 2005 at 08:59:31 (UTC)
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ß
Mitglied: 16640
16640 Sep 22, 2005 at 09:07:29 (UTC)
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
Member: Biber
Biber Sep 22, 2005 at 09:16:07 (UTC)
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