Hallo Zusammen,
ich habe folgendes Problem bei einer bestehenden Datenbank mit 1200 Datensätzen. Bisher war das Ablaufdatum für z.b. Zertifikate mit Feldatentyp Text im Eingabeformat mit Kalenderjahr und Monat eingepflegt (\0000\.00). Jetzt haben sich die Abfragemodalitäten geändert und es muss diese Info als dd.mm.yyyy geliefert werden. Der Tag soll dabei immer der letzte Tag im Monat sein. Gibt es ne Möglichkeit die bestehende DB zu ändern ohne die 1200 Datensätze händisch einzupflegen. Über Tips bin ich sehr dankbar. Bin nicht der Accessprofi.
Viele Grüße Shiregar.
Hallo,
kopiere in ein Standardmodul die folgende Prozedur:
Public Function fktcreateDate(strDatum As String) As Date
On Error Resume Next
fktcreateDate = DateSerial(Split(strDatum, ".")(0), Split(strDatum, ".")(1) + 1, 0)
End Function
Erstelle (im Abfrageentwurf) eine neue Abfrage und öffne das Fenster "SQL-Ansicht". Dorthin kopierst Du diesen SQL-String:
Update [color=red]tblDeineTabelle[/color] set [color=yellow]datDatum[/color]= fktcreateDate([[color=green]strDatum[/color]])
Wobei tblDeineTabelle der Name der Tabelle ist,
datDatum der Name eines neuen Tabellenfeldes mit Datentyp Datum/Uhrzeit ist,
strDatum der Name des bisherigen Textfeldes ist.
Führe die Abfrage aus.
Hallo Franz,
danke Dir.Habe jetzt alles eingegeben beim letzten enter kommt die meldung "operation muss eine aktualisierbare abfrage verwenden" was muss ich da noch tun?
viele grüße
Hallo,
"beim letzten Enter" bedeutet was?
zeig mal den SQL-String der Abfrage (aus dem SQL-Fenster im Abfrageentwurf).
Hast Du für "tblDeineTabelle" eine Tabelle oder eine Abfrage eingesetzt?
Update Referat set datDatum= fktcreateDate([strDatum])
hab den tabellennamen eingegeben
Hallo,
und die Tabellenfeldnamen? Heißen die so: "datDatum" und "strDatum"?
hi, ja habe ich und jetzt ist das ergebnis bei abfrage datDatum 00:00:00.
Ich wollte eigentlich aus zb. 2012-04, 30.04.2012 machen. Über Tips bin ich sehr dankbar.
Hallo,
dann beschreib korrekt und genau das eingesetzte Format der Monatsangabe.... ::)
2012-04 deckt sich nicht mit der vorherigen Beschreibung (\0000\.00)
Wenn das Textfeld sowas enthält: 2012-04, dann ändere den Code in der Funktion so ab:
fktcreateDate = DateSerial(Split(strDatum, "-")(0), Split(strDatum, "-")(1) + 1, 0)
Den Smiley übersehe ich mal.
Ok Funktion so eingegeben. Jetzt kommt Fehlermeldung Kompilierungsfehler.in Abfrageausdruck'fktcreateDate([strDatum]
Kann man da noch was machen. Danke für deine Mühe. Nett das du dir zeit nimmst. zu meinem background zwei tage accessschulung und jetzt jo machma. vba hat der trainer ausgelassen.
Hallo,
lad die DB mal hier hoch (komprimiert/repariert und gezippt)