Ich habe schon viele Beiträge über das Thema studiert dennoch finde ich den fehler nicht. Per Click soll eine Abfrage werte aus einer Tabelle lesen welchen Zwischen Datum Lastday und Firstday liegen. Mir geht es darum das "firstday" und "lastday" über folgenden Code vorher ausgelesen werden.
Private Sub Befehl25_Click()
datDay = Me.tf_auswahldatum
Do While Not Weekday(datDay) = 2
datDay = datDay - 1
Loop
firstday = datDay
Do While Not Weekday(datDay) = 6
datDay = datDay + 1
Loop
Lastday = datDay
MsgBox firstday & "," & Lastday
End Sub
Wenn ich den buton drücke kommt eine Msgbox mit dem Datum vom Montag und vom Freitag. Das klappt also.
Die 2 Variablen wollte ich nun in eine Abfrage einbauen die so aussieht.
SELECT Behandlungen.Behandlungs_ID, Behandlungen.Datum, Patientendaten.Name, Behandlungen.Behandlung, Kassenleistungen.Behandlungsarten_name, Kassenleistungen.Leistung, Behandlungen.Einheiten, [Leistung]*[Einheiten] AS Gesamt
FROM Krankenkassen INNER JOIN (Kassenleistungen INNER JOIN (Behandlungen INNER JOIN Patientendaten ON Behandlungen.[Patient] = Patientendaten.P_ID) ON Kassenleistungen.Behandlungsarten_ID = Behandlungen.[Behandlung]) ON (Krankenkassen.Kassentyp = Kassenleistungen.Kassentyp) AND (Krankenkassen.Kassen_Nr = Patientendaten.Krankenkasse)
WHERE (((Behandlungen.Datum) Between " & Format(firstday, '\#yyyy\-mm\-dd\#') & " AND " & Format(lastday, '\#yyyy\-mm\-dd\') &"));
Das entscheidende ist das der Fehler in der Between Syntax liegen muss. Alles vor dem WHEER ist 1 zu 1 aus einer anderen Abfrage kopiert. Ich habe einige Beiträge gelesen in denn das Datum wohl formatiert werden muss, was ich mir aber nicht vorstellen kann das es ja als Datum in der Msgbox ausgegeben wird.
Er bringt mir den Fehler "Datentypenkonflikt in Kriterienauswahl"
Hallo,
<<edit>> 'so isses, wenn man Code mit zwei linken Füssen eintippt... 8)
Eine Abfrage kennt keine VBA-Variablen. Insofern muss die Variable mittels einer Funktion aus dem VBA-Bereich "geholt" werden:
In einem Standardmodul(!):
Public firstday as Date
Public lastday as Date
Public Function fktGetFirstdate() as Date
fktGetFirstdate= firstday
End Function
Public Function fktGetLastdate() as Date
fktGetLastdate= lastday
End Function
<</edit>>
und
SELECT Behandlungen.Behandlungs_ID, Behandlungen.Datum, Patientendaten.Name, Behandlungen.Behandlung, Kassenleistungen.Behandlungsarten_name, Kassenleistungen.Leistung, Behandlungen.Einheiten, [Leistung]*[Einheiten] AS Gesamt
FROM Krankenkassen INNER JOIN (Kassenleistungen INNER JOIN (Behandlungen INNER JOIN Patientendaten ON Behandlungen.[Patient] = Patientendaten.P_ID) ON Kassenleistungen.Behandlungsarten_ID = Behandlungen.[Behandlung]) ON (Krankenkassen.Kassentyp = Kassenleistungen.Kassentyp) AND (Krankenkassen.Kassen_Nr = Patientendaten.Krankenkasse)
WHERE Behandlungen.[Datum] Between fktGetFirstdate() AND fktGetLastdate()
Wenn ich den Code in ein Modul einfügen will ist jeweils die erste Zeile Rot. Habe noch nicht mit Modulen gearbeitet. Bzw. noch nie geschrieben nur importiert.
Da schlägt bei DF6GL mal einfach so die deutsche Sprache durch
in den Zeilen
Public Funktion fktGetFirstdate() as Date
und
Public Funktion fktGetLastdate() as Date
das k in dem wort Funktion durch ein c ersetzen.
ist zwar nicht wirklich von Bedeutung, aber deinen Code könntest du wie folgt ändern:
Private Sub Befehl25_Click()
datDay = Me.tf_auswahldatum
Do While Not Weekday(datDay) = 2
datDay = datDay - 1
Loop
firstday = datDay
Lastday = firstday + 4
MsgBox firstday & "," & Lastday
End Sub
k durch c ersetzt er macht was aber nun Fehler
Fehler beim Kompilieren
Funktionsaufruf auf der linken Seite der Zuweisung muß den Typ Variant oder Object zurückgeben
noch'n kleiner Fehler in fktGetLastdate:
Public Funktion fktGetLastdate() as Date
fktGetFirstdate= lastday
fktGetLastdate = lastday
End Function
Jungs Ihr seid wahre HELDEN. Euer Wissen möchte ich haben. Vielen Dank. Ich melde mich wenn ich bei der Monatsabrechnung bin ^^. Frohes Fest
Hallo,
das geht auch ohne Loop.
Private Sub Befehl25_Click()
Me!Firstday = Me!tf_auswahldatum - Weekday(Me!tf_auswahldatum, vbMonday) + 1
Me!Lastday = Me!tf_auswahldatum - Weekday(Me!tf_auswahldatum, vbMonday) + 5
End Sub
Werde ich mal ausprobieren danke.
ZitatPublic firstday as Date
Public lastday as Date
Public Function fktGetFirstdate() as Date
fktGetFirstdate= firstday
End Function
Public Function fktGetLastdate() as Date
fktGetLastdate= lastday
End Function
Habe versucht dies Anzupassen auf Folgenden Code
Public todayday As Date
Public Function fktGetTodaydate() As Date
fktGetTodaydate = todayday
End FunctionDann über
todayday = Me!tf_auswahldatum
DoCmd.OpenReport "Tagesbericht", acViewPreview
MsgBox todaydayden Bericht Öffnen. Er zeigt mit im Datum 00:00:00 an. in der Messagebox allerdings das Datum aus "tf_auswahldatum"
Hab ich nen Denkfehler und firstday und lastday sind reserviere Funktionem?
Hallo,
und wie heißt die SQL der Berichtsabfrage?
SELECT Behandlungen.Behandlungs_ID, Behandlungen.Datum, Patientendaten.Name, Behandlungen.Behandlung, Kassenleistungen.Behandlungsarten_name, Kassenleistungen.Leistung, Behandlungen.Einheiten, [Leistung]*[Einheiten] AS Gesamt
FROM Kassenleistungen INNER JOIN (Behandlungen INNER JOIN Patientendaten ON Behandlungen.[Patient] = Patientendaten.P_ID) ON Kassenleistungen.Behandlungsarten_ID = Behandlungen.[Behandlung]
WHERE (((Behandlungen.Datum)=[Formulare]![FM_start]![UF1].[Formular]![tf_auswahldatum]));
Das Problem bei der Abfrage wenn es kein Eintrag gibt habe ich logischer Weise auch kein Datum. Aber im Bericht gibt es ein Feld was mit dem Datum der Abfrage gefüttert wird. Nur wenn die Abfrage leer ist weil keine Datensätze schreibt er im Bericht #Name was sehr unschön aussieht. Daher dachte ich mach ich es über eine Variable weil das datum in dem Feld "tf_auswahldatum" gibt es ja.
Ich bekomme gleich nen Raster hab schon wieder Das VBA Problem. Den ganzen Vormittag geht. Dann wolltest du Abfrage haben wollte ich rauskopieren bringt er den Fehler. Ich kotz gleich. Schuldigt den Ausdruck. Kann ich dir die Datei mal Mailen das du mal reinschaust?
Hallo,
na, dann wollen wir mal versuchen, die Sauerei zu vermeiden... ;) :D
Du kannst sie mal schicken an
de ef 6 ge el ät ge em ix . de ee
(die "6" als Zahl belassen)
Ich merz noch nen paar macken aus dann schick ich das ding mal vorbei.
Ich verstehe den Requery nicht. Es gibt da so viele schreib weisen mit Hochkomma mich Gänsefüschen in Eckigen Klammern und nomalen Klammern. Ich raffs nciht wann ich was machen muss.
Forms!FM_start.[FM_behandlungen].list_kassen_alle.Requery
Ich habe ein Formular. Dort gibt es einen Save button und der soll speichern was er macht aber zusätzlich mein Listenfeld was sich im Form "FM_kassenverwaltung" befindet Aktualisieren.
Dieses "FM_kassenverwaltung" wird in das Form "FM_start" und da in das UForm UF1 geladen.
Hallo,
naja, lt. Deiner Beschreibung sollte das so heißen:
Forms!FM_start![UF1].Form!FM_kassenverwaltung.Form!list_kassen_alle.Requery
ZitatForms!FM_start![UF1].Requery
den code hatte ich mal drin und der hat auch mal funktioniert. bei
Forms!FM_start![UF1].Form!FM_kassenverwaltung.Form!list_kassen_alle.Requerykann er das Feld FM_kassenverwaltung nicht finden, was ja auch net geht da dies ein Formular ist.
Problem gefunden. hatte es gestern schon mal gelöst allerdings bin ich nicht so schnell drauf gekommen durch den ganzen mist. Ich habe das FM_Start was mein Hauptformular ist im Popup starten lassen da geht das anscheiden nicht oder anders. wenn ich es als Dialog öffne macht er die Aktualisierung mit
DoCmd.Requery FM_start
Die Frage ist ob das zu ungenau ist. An sich müsste ich das UF1 aktualisieren da dort nicht nur das Listenfeld sondern auch noch 2 Textfelder ein Requery bräuchten
Edit:
Mit
oCmd.Requery FM_kassenverwaltung geht es auch aber was ist den Programmiertechnisch der Sauberste weg?
Hallo,
naja, wie heißt denn dann das UFO-Steuerelement, das das Form anzeigt?
Diesen Namen mußt Du einsetzen.
Forms!FM_start![UFO_Steuerlement1].Form![UFO_Steuerelement2].Form!list_kassen_alle.Requery
Hallo,
mhmm,
ich kapiere nicht diese Formularkonstruktion...
Wo stehen denn die einzelnen UFO-St-Elemente?
Das Form zu aktuualaisieren, in dem der Code läuft, ist mit
Me.Requery
zu erledigen.
Das Form, das in einem UFO-Steuerelement im akt. Form angezeigt wird, wird mit
Me!UFO-SteuerlementName.Form.Requery
aktualisiert.
Befindet sich in dem "Unterformular" nochmal ein UFO-Steuerlement mit anzuzeigenden Formular, dann wird dieses wiederum mit:
Me!UFO-SteuerlementName.Form!UFO-SteuerlementName2.Form.Requery
aktualisiert.
Habe Folgendes Gefunden im Netz:
Der Syntax um Steuerelemente auf einem Access Unterformular anzusprechen scheint auf den ersten Blick ganz einfach. Doch Vorsicht, oft wird ein Überlegungsfehler gemacht. Folgender Aufruf führt leider nicht zum gewünschten Ergebnis:
Forms![Unterformular-Name]![Steuerelement-Name]
Der Grund des resultierenden Fehlers ist darin zu suchen, dass ein Access Unterformular kein eigentliches Formular ist, sondern ein Steuerelement auf dem Hauptformular. Deshalb sieht der korrekte Aufruf wie folgt aus:
Forms![Hauptformular-Name]![Unterformular-Steuerelement-Name].Forms![Steuerelement-Name]
Wichtig dabei ist die genaue Unterscheidung zwischen dem Namen des Unterformulars und dem Namen den Unterformular-Steuerelementes.
Ich benutze ein sogenanntes Navigationssteuerelement wo der Nav Bereich "Navigationsbereich heißt und das große Feld in das die Forms geladen werden heißt. "UF1"
ZitatMe!UFO-SteuerlementName.Form!UFO-SteuerlementName2.Form.Requery
Müste doch dan glaube ich so aussehen.
Me!UF1.Form!FM_behandlungen.Form.Requery
Aktualisieren tut er nix. ich schick dir das ding mal das ist glaub ich leichter
Ich schmeiße Access gleich von Rechner und Steig wieder auf PHP und My Sql um. 10 Minuten nicht am Rechner DB Geschlossen. Aufgemacht öffne Formular Access schließt sich. Ausrasssssssssssssster
Hallo,
such lieber erst mal nach Access 2010-Updates und Hotfixes und installier die.
Also das SP 1 kb2075994 hat er wohl drauf. weiter hab ich so nix gefunden. hat office einen eigenen Updater?
Hallo,
habe hier:
407160_intl_i386_zip.exe
416943_intl_i386_zip.exe
420390_intl_i386_zip.exe
437040_intl_i386_zip.exe
439894_intl_i386_zip.exe
Hotfixes werden in aller Regel nur auf Anforderung verbreitet.
Such halt auf den MS-Seiten danach..