Supportnet / Forum / Datenbanken
Abfrage: Feldformat von Text zu Zahl konvertieren?
Frage
Hallo,
Ausgangslage: ich habe eine Tabelle, deren Felder ich nicht ändern darf. Die Felder sind im Format Text und beinhalten Dauer in Minuten und/oder Sekunden. Sie sehen so aus:
00:00:00:30:00 (z. B. für 30 Minuten)
Was ich will: Ich möchte Differenzen zwischen den Feldern ermitteln.
Problem: Geht nicht, da ich anscheinend mathematische Formeln auf Text nicht anwenden kann.
Frage: Kann ich in einer Abfrage das Feldformat von "Text" auf "Zahl" ändern und dann die Differenzen bilden? Wie kann ich das am besten verwirklichen?
Vielen Dank
Chichitta
Antwort 1 von 14071
Hi Chichitta,
hab mal in ein VBA-Buch reingeschnuppert. Und da stand zu lesen, dass Access Variablen vom Typ Variant automatisch so behandeln kann als wären es Zahlen, bzw Datums wenn die Inhalte entsprechend sind. Also müsste eine Umwandlung entsprechend möglich sein. Kann aber sein, dass du den timepart explizit auslesen musst.
ciao
Jürgen
hab mal in ein VBA-Buch reingeschnuppert. Und da stand zu lesen, dass Access Variablen vom Typ Variant automatisch so behandeln kann als wären es Zahlen, bzw Datums wenn die Inhalte entsprechend sind. Also müsste eine Umwandlung entsprechend möglich sein. Kann aber sein, dass du den timepart explizit auslesen musst.
ciao
Jürgen
Antwort 2 von Chichitta
Hi Jürgen,
wie kann ich das implementieren? Könntest Du mir bitte ein Befehlbeispiel geben?
Danke
Ch
wie kann ich das implementieren? Könntest Du mir bitte ein Befehlbeispiel geben?
Danke
Ch
Antwort 3 von 14071
Hi,
ich weiss nur die Anfangssyntax
Dim Zeit as Variant
damit deklarierst du eine Variable Zeit vom Typ Variant.
Zeit = Tabelle.Feld
Zuweisung der Werte zur Variablen.
Aber wie gesagt ich hab nur mal reingestöbert in ein VBA-Buch.
Gruß
Jürgen
ich weiss nur die Anfangssyntax
Dim Zeit as Variant
damit deklarierst du eine Variable Zeit vom Typ Variant.
Zeit = Tabelle.Feld
Zuweisung der Werte zur Variablen.
Aber wie gesagt ich hab nur mal reingestöbert in ein VBA-Buch.
Gruß
Jürgen
Antwort 4 von struppi
Hallo
Man kann das ganze mit einer Prozedur
in Sekunden umwandeln und diese dann in einer neuen Spalte speichern. Die sekunden können verrechnet werden.
Als VBS kann man das mal so testen:
zeit = "00:30:56"
feld = split(zeit,":")
stunden = clng(feld(0))*3600
minuten = clng(feld(1))*60
sekunden = clng(feld(2))
Gesamtzeit = stunden+minuten+sekunden
Msgbox Gesamtzeit
Das ganze müßte dann in VBA ins Formular (dim nicht vergessen) und an ein ereignis gehängt werden sodas die Ergebnisse automatisch in die neue Spalte übernommen werden.(läßt sich auch auf Tag und Jahr ausdehnen.
Man kann das ganze mit einer Prozedur
in Sekunden umwandeln und diese dann in einer neuen Spalte speichern. Die sekunden können verrechnet werden.
Als VBS kann man das mal so testen:
zeit = "00:30:56"
feld = split(zeit,":")
stunden = clng(feld(0))*3600
minuten = clng(feld(1))*60
sekunden = clng(feld(2))
Gesamtzeit = stunden+minuten+sekunden
Msgbox Gesamtzeit
Das ganze müßte dann in VBA ins Formular (dim nicht vergessen) und an ein ereignis gehängt werden sodas die Ergebnisse automatisch in die neue Spalte übernommen werden.(läßt sich auch auf Tag und Jahr ausdehnen.
Antwort 5 von Chichitta
Hi,
vielen Dank für Eure Vorschläge!!
Kann jemand sich vielleicht zur folgenden Möglichkeit äußern:
Man benutze die Funktion Format und dann DatDiff für die Differenzenbildung. Läßt sich so der Feldformat "Text" umwandeln?
Danke
Ch
vielen Dank für Eure Vorschläge!!
Kann jemand sich vielleicht zur folgenden Möglichkeit äußern:
Man benutze die Funktion Format und dann DatDiff für die Differenzenbildung. Läßt sich so der Feldformat "Text" umwandeln?
Danke
Ch
Antwort 6 von Köbi Hautle
Auf die Gefahr hin, die Frage falsch verstanden zu haben, versuchs mal in der Microsoft Knowledge Base mit folgender Adresse:
http://www.microsoft.com/IntlKB/Germany/Support/kb/D38/D38899.HTM?LN=DE&SD=SO&FR=0
Gruss, Köbi
http://www.microsoft.com/IntlKB/Germany/Support/kb/D38/D38899.HTM?LN=DE&SD=SO&FR=0
Gruss, Köbi
Antwort 7 von struppi
Hallo
Wenn IsDate Wahr zurückliefert dann gehts auch so:
zeit = "00:30:56"
msgbox isDate(zeit)
diff = DateDiff("s","00:00:00",zeit)
Msgbox diff
Wenn IsDate Wahr zurückliefert dann gehts auch so:
zeit = "00:30:56"
msgbox isDate(zeit)
diff = DateDiff("s","00:00:00",zeit)
Msgbox diff

