Neuigkeiten:

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

Mobiles Hauptmenü

SQL string Fehlerhaft

Begonnen von elvodia, Dezember 23, 2011, 14:53:17

⏪ vorheriges - nächstes ⏩

elvodia

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"

DF6GL

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?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

elvodia

#2
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

DF6GL

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)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

elvodia

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?

DF6GL

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.


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

elvodia

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.

elvodia

#7
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;


DF6GL

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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access