Hallo zusammen.
ich benutze Access 2002 und stehe vor folgendem Problem:
In meiner Datenbank werden alle neu angelegten Datensätze automatisch gezählt. Das Problem ist, dass dadurch sowohl die Aufträge als auch die Angebote als Datensatz gezählt werden. Letztendlich sollen aber nur die Aufträge, nicht die Angebote gezählt werden. da in den Angeboten noch Daten fehlen, die erst im Auftrag eingegeben werden können.
Wie kann kann ich mein Angebot so umwandeln, dass in die Aufträge geleitet wird und anschließend auch bei den Aufträgen gezählt wird. Meistens wird sofort ein Auftrag geschrieben und nur in den seltensten Fällen ein Angebot, welches aber später zum Auftrag wird.
im Modul habe ich folgend Anweisung:
Option Compare Database
Public Function LNr()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim Anz As Double
Set db = CurrentDb
Set rs = db.OpenRecordset("Daten")
Anz = DCount("JahresNr", "Daten", "Year(DatumErfassung) = Year(Date())")
If Anz = 0 Then
LNr = 1
Else
LNr = DCount("JahresNr", "Daten", "Year(DatumErfassung) = Year(Date())") + 1
End If
End Function
Aber wie gesagt, hier wird automatisch beim Erstellen eines neuen Auftrages der Datensatz gezählt. Ich hatte vor zwei identische Formulare ( Auftrag und Angebot) über dieselbe Tabelle laufen zu lassen und im Falle eines Wechsels vom Angebot zum Auftrag über ein Textfeld (nach Aktualisierung) den Status Auftrag zu vergeben.
Ich hoffe meine Erklärung ist verständlich. ;D
Hallo,
diese 4 Zeilen sind schon mal überflüssig.
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Daten")
Und Anz ist als Long zu deklarieren. Die Anzahl kann nie eine Kommastelle haben.
Die Aufträge kannst Du auch ganz einfach zählen, wenn das Statusfeld eingebaut ist.
Dim AnzAuftraege As Long
AnzAuftraege = DCount("JahresNr", "Daten", "Year(DatumErfassung) = Year(Date())" & " and Status = 'Auftrag'")
Ich würde auch keine 2 Formulare machen. In einem Formular setzt Du einfach den Status auf "Auftrag", wozu ein zweites Formular?
Hallo,
mhmm, nicht so wirklich....
Sind in Tabelle "Daten" (btw: "unerklärliche" Benennung ;) ) die Daten sowohl eines Angebotes als auch die eines Auftrages hinterlegt?
Ist es wirklich (geschäftlich) so, dass immer alle(!) Daten eines Angebotes sich auch zu einem Auftrag "wandeln"?
Wenn ja, dann belasse es bei dieser Tabelle und erweitere um ( wie Du schon angedeutet hast) ein Feld "Status" (oder besser vielleicht: "Dokumenttyp" oder "Kategorie" ), das den Typ der Daten beschreibt.
Sodann kannst Du durch Angabe eines weiteren Kriteriums die DAtensätze passend zählen:
Anz = DCount("JahresNr", "Daten", "Year(DatumErfassung) = Year(Date()) And Kategorie = 'Angebot'")
In Deinem Code ist das Öffnen/Verwenden eines Recordsets überflüssig.
Weiterhin sollte "Anz" vom Datentyp Long sein, z. B. gibt es 3,7 Datensätze nicht.
Ein weiteres Form brauchst Du auch nicht.
PS: da war ich wohl etwas langsam :o ;D :D ;) :)