Access meckert rum wegen der Datums Format. Jedoch das Datum in der Variable entspricht zum Bsp: 01.12.2011
VAR_monatvon = DateAdd("m", 0, Me!tf_auswahldatum)
MsgBox VAR_monatvon
DoCmd.RunSQL "INSERT INTO tbl_ausgaben (AG_Name, AG_Leistung,AG_Notiz,AG_datum)SELECT FK_Name,FK_Leistung,FK_Notiz,'VAR_monatvon' FROM tbl_fixkosten"
Hallo,
beides ist richtig.. ;)
Im SQL-String jedoch ist an der betroffenen Stelle kein Datum(swert) , sondern lediglich ein Text, der "VAR_monatvon" heißt.
Wenn Du in den SQL-String den Wert aus einer Datumsvariablen einbauen willst, so muss das z. B. so geschehen
VAR_monatvon = DateAdd("m", 0, Me!tf_auswahldatum)
MsgBox VAR_monatvon
DoCmd.RunSQL "INSERT INTO tbl_ausgaben (AG_Name, AG_Leistung,AG_Notiz,AG_datum)SELECT FK_Name,FK_Leistung,FK_Notiz, " & Format(VAR_monatvon,"\yyyy-mm-dd\#") & " FROM tbl_fixkosten"
Was genau willst Du mit
DateAdd("m", 0, Me!tf_auswahldatum)
erreichen?
Mit der Funktion kann ich wohl egal welchen tag des Monats wir haben mir in die Variable immer den 01 des Monats schreiben. Diese Sql Funktion soll mir Fixkosten immer zum ersten den Monats in eine Tabelle schreiben. noch per Hand. später via Selbsterkennung des Datums. Aber soweit bin ich noch nicht ^^
Ich habs mal auf
DoCmd.RunSQL "INSERT INTO tbl_ausgaben (AG_Name, AG_Leistung,AG_Notiz,AG_datum)SELECT FK_Name,FK_Leistung,FK_Notiz, " & Format(VAR_monatvon, "tt.mm.jjjj") & " FROM tbl_fixkosten"
abgeändert weil mit deiner yyyy-dd-mm Formatierung kam er gar net klar.
Nun meckert er "Anzahl Abfrage und Zielfelder Stimmen nicht überein" liegt wohl daran das ich nur 3 werte aus der einen Tabelle auslese und das 4 Manuel über Variable machen möchte
Hallo,
bist Du sicher?
Die Funktion addiert 0 Monate zum angegebenen Datum. Das ergibt genau das eingegebene Datum...
Wenn Du immer den 1. des Monat und des Jahres aus dem eingegebenen Datum errechnen willst, mach das besser so:
Dim datErsterDesMonats As Date, aktDat as Date
aktDat=Date
datErsterDesMonats= Dateseriell(Year(aktDat),Month(aktDat),1)
Wo muss ich das einfügen? Modul? Weil in sub sagt er "Sub oder Funktion nicht definiert"
Wo ist den der Fehler in Der SQL. Oder meinst du das das mit dem datum zusammenhängt?
Hallo,
irgendwie sind wir jetzt nicht synchronisiert.
1) in meinem vorherigen Posting habe ich Dir den Code mit dem einzufügenden Variablenwert gezeigt.
2) Im letzten Posting habe ich Deine Aussage bezweifelt, dass Dateadd... bei Eingabe irgendeinen Datums immer den Ersten des Monats liefert. Dazu habe ich Dir die (richtige) Lösung geschrieben.
3) Weiterhin wirfst Du Modul, Sub usw. etwas durcheinander:
Ein Modul ist eine "Kontainer" der Functions, Subs oder Klassen(module) aufnehmen kann.
Ein Modul, das für sich im Datenbankfenster/Module steht , ist ein allgemeines oder auch Standard-Modul, das in der gesamten DB gültig ist.
Ein Modul , das Formular/Bericht-bezogene Subs oder Functions enthält, nennt sich (Formular/Bericht-)Klassenmodul , das nur gültig ist, solange das entspr. Formular/Bericht geladen ist.
Insofern kann ich Deine Frage bzgl. Modul nicht verstehen. Ich denk aber, Du meinst dieses:
VAR_monatvon = Dateseriell(Year(Me!tf_auswahldatum),Month(Me!tf_auswahldatum),1)
wobei ein "leeres" Textfeld evtl. noch mit der NZ-Funktion abgefangen werden sollte:
VAR_monatvon = Dateseriell(Year(nz(Me!tf_auswahldatum,Date)),Month(nz(Me!tf_auswahldatum,Date)),1)
Die Dateseriell-Funktion setzt ein gültiges Datum aus der separaten Angabe von Jahr, Monat, Tag zusammen.
ZitatDim datErsterDesMonats As Date, aktDat as Date
aktDat=Date
datErsterDesMonats= Dateseriell(Year(aktDat),Month(aktDat),1)
Diesen von dir geposteten Code habe ich in meine button_click Sub eingebaut da hat er rum gemeckert. Mit meinem Code arbeite ich nach wie vor und es Funktioniert auch.
Dein posting zu
DoCmd.RunSQL "INSERT INTO tbl_ausgaben (AG_Name, AG_Leistung,AG_Notiz,AG_datum)SELECT FK_Name,FK_Leistung,FK_Notiz, " & Format(VAR_monatvon,"\yyyy-mm-dd\#") & " FROM tbl_fixkosten" habe ich versucht geht nicht.
Habe ihn angepast auf
VAR_monatvon = DateAdd("m", 0, Me!tf_auswahldatum)
MsgBox VAR_monatvon
DoCmd.RunSQL "INSERT INTO tbl_ausgaben (AG_Name, AG_Leistung,AG_Notiz,AG_datum)SELECT tbl_fixkosten.FK_Name,tbl_fixkosten.FK_Leistung,tbl_fixkosten.FK_Notiz, " & Format(VAR_monatvon, "tt.mm.jjjj") & " FROM tbl_fixkosten"In der Msgbox bringt er mir sauber den 01.12.2011 aber er bringt Fehler "Anzahl Abfrage und Zielfelder Stimmen nicht überein" denke mal es passt ihm nicht das ich 3 werte aus Tabelle 1 aus Variable zuordnen möchte.
OK Problem Gelöst. Ich Dummerchen war einfach zu sehr an Mysql und PHP gewöhnt. Hab mal eine AfüAbfrage gebaut und fertig. Den code nach VBA und läuft.
Abfrage:
INSERT INTO tbl_ausgaben ( AG_Name, AG_Leistung, AG_Notiz, AG_Datum )
SELECT tbl_fixkosten.FK_Name, tbl_fixkosten.FK_Leistung, tbl_fixkosten.FK_notiz, fktGetMonatsanfang() AS Ausdr1
FROM tbl_fixkosten;
Hallo,
zu meinem Vorschlag bzgl. Datum im SQl-String:
Dort ist ein Fehler enthalten. Das Ding muss so aussehen:
DoCmd.RunSQL "INSERT INTO tbl_ausgaben (AG_Name, AG_Leistung,AG_Notiz,AG_datum) SELECT FK_Name,FK_Leistung,FK_Notiz, " & Format(VAR_monatvon,"\#yyyy-mm-dd\#") & " FROM tbl_fixkosten"
Dein Versuch mit "deutschem" Datumsformat jedoch ist falsch, weil SQL nur USA- oder ISO-Datumsformat akzeptiert.
Du kannst natürlich auch eine Funktion einbauen, die den Datumswert liefert.