Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Recordset mit Bedingung ?

Begonnen von asiat, Februar 23, 2011, 16:01:28

⏪ vorheriges - nächstes ⏩

asiat

Hallo,

Ich habe ein Endlosformular mit einer Tabelle  über Eigenschaften verbunden, in der Tabelle gibt es Felder mit Namen: Geburtsdatum, Alter und Alteram.  Wenn ich Geburtsdatum nicht kenne aber ungefähres alter kenne tippe ich nur alter in Feld "Alter " und aktuelles Datum in Feld "Alteram". mit den Jahren wird das alter nicht aktualisiert deswegen das Feld "Alteram" damit ich später ungefähres, aktuelles alter ausrechnen kann. nun die Frage, WIE.
ich habe mir sowas gedacht:
Private Sub Form_Load()
   'Wenn Geburtsdatum nicht eingegeben ist
   If IsNull(Me.Geboren) And Not IsNull(Me.Alter) Then
   Me.Alter = Me.Alter + DateDiff("yyyy", Me.Alteram, Now)
   End If
End Sub

das funktioniert nur bei den ersten Eintrag, soll aber natürlich für alle eintträge funktionieren

es soll nur das Jahr berücksichtigt werden.

weis jemand, wie man das in VBA lösen kann?


T417

Du könntest das alles doch auch über ein berechnetes Steuerelement lösen.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

asiat

ok..und was für Ausdruck soll ich da reinschreiben ?

Jonny

Hallo,
wenn Du als Datenherkunft eine Abfrage hast, was hier sinnvoll ist, kannst du eine freie Spalte nehmen und
dort das Alter berechnen. Da dich nur die Jahre interessieren könnte die Spalte so aussehen:
AktAlter: Jahr(Datum()) - Jahr(Geboren)
oder wie Deine Felder auch immer benannt sind.

Achtung! Diese Form der Berechnung ist genauso wie mit DatDiff berechnet nicht genau
wenn jetzt jemand ab März Geburtstag hat machst Du ihn ein Jahr älter.

Gruß

Johann

asiat

Hallo Jonny,

danke für deine noch einfachere Lösung.
für das was ich vor hatte habe ich so gemacht.

AktAlter: [Alter]+Jahr(Datum())-Jahr([Alteram])

ZitatAchtung! Diese Form der Berechnung ist genauso wie mit DatDiff berechnet nicht genau
wenn jetzt jemand ab März Geburtstag hat machst Du ihn ein Jahr älter.
das macht nichts, denn das wollte ich auch so haben. (wollte ja nur ungefähres/aktuelles alter wissen)

Hallo T417 ,
ich würde auch gerne wissen wie du das mit berechnetes Steuerelement gemeint hast, also was man da eingeben muss.

T417

Hallo, (wenn auch etwas verspätet)

mir schwebte etwas ähnliches wie Jonny vor.
Aber ich hatte kein Zeit zum testen, und ich wollte auch nichts falsches sagen. ;)


Gruß
T.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

asiat

Hallo,

da habe ich mich aber zu früh gefreut   :(

das Problem ist jetzt, wo das Geburtsdatum bekannt ist wird durch diese..

AktAlter: [Alter]+Jahr(Datum())-Jahr([Alteram])

..Berechnung überschrieben.

Ich brauche so eine Berechnung mit bedienung, ist sowas möglich ?

T417

Hallo,

Wenn ich das jetzt richtig verstanden hab, sollte dir nz() weiterhelfen.
Du willst ja verhindern das vorhandene Werte überschreiben werden.

Gruß
T.

Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

asiat

ich beschreibe das Problem lieber nochmal, bin mir nicht sicher ob du so verstanden hast was ich gemeint habe.

Ich habe eine Tabelle: tbl_Kontakt
mit Feldern
Vorname, Name, Alter, Geburtsdatum

einen Endlosformular Formular : frm_Kontakt
Vorname | Name  | Alter | Geburtsdatum |

Dieses Formular wird nur zum Daten Anzeigen gedacht, nicht einfügen oder bearbeiten (Dafür ist ein anderes Formular gedacht).
also es geht jetzt nur um Daten Ausgabe !

wenn bei der eingabe kein Geburtsdatum bekann ist aber Alter, gibt man nur alter an. wenn Geburtsdatum bekannt, dann Alter und Geburtsdatum wird eingetragen.

so,  ein Jahr später wenn ich im Formular die Daten anschaue, dann sind Altersangaben nicht mehr aktuell.

wie kann ich aktuelles Alter anzeigen lassen ?


T417

Hmm,

das ist nicht getestet, aber in einen ungebundenen Steuerelement auf ein Formular mit deiner Tabelle als Datenherkunft:
=Summe(nz([Alter]+Jahr(Datum())-Jahr([Alteram])))
könnte funktionieren, falls Access es zulässt.


Gruß
T.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

asiat

 :D :D :D
ich habe jetzt in jedem Eintrag im Feld Alter die Zahl 60




T417

 :D Ähhh, :D
Also zumindestens bewirkt der Code etwas. ;D

Hast du das wirklich in einen ungebundenen Textfeld auf einen Formular (nicht Endlosformular), das als Datenherkunft deine Tabelle hat?
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

asiat

nein, ich habe das für Endlosformular benutzt was als Datenherkunft meine Tabelle hat

DF6GL

Hallo,

dann lass die Geschichte mit dem Steuerelementinhalt und berechne das Alter in einer  Abfrage für das Formular....


http://www.donkarl.com/?FAQ2.7

imp666

Du kannst als Datensatzquelle des Formulars bereits eine SELECT-Anweisung angeben, z.B. wie folgt:
SELECT  *, IIF(Geburtsdatum IS NULL;[Alter] + YEAR([Alteram])-YEAR([Alter]);[Geburtsdatum]) AS BerechnetesAlter FROM tblKontakt

Im Formular zeigst du dann im entsprechenden Feld den Wert von BerechnetesAlter an.