PDA

Vollständige Version anzeigen : Dcount Problem


Michael
30.07.2005, 16:16
Hallo zusammen,
ich habe ein Problem bei der Zusammenstellung eines Dcount Ausdruckes.

strDatum = Format(Forms.Menue.Wert_Datum, "\#yyyy\-mm\-dd\#")
Anzahl_Behaelter_Lieferung = DCount("Kunden_Auftr_geb", "Tbl_Lieferungen_Je_Behaelter", "Datum " & strDatum & " AND [Kunden_Auftr_geb] = '" & lngKdnr1 & "'")

lngKdnr1 = Textfeld.

Nun bekomme ich einen Syntax Fehler. Fehlender Operator.

Ok hat sich geklärt:
strDatum = Format(Forms.Menue.Wert_Datum, "\#yyyy\-mm\-dd\#")
Anzahl_Behaelter_Lieferung = DCount("Kunden_Auftr_geb", "Tbl_Lieferungen_Je_Behaelter", "[Datum] =" & strDatum & " AND [Kunden_Auftr_geb] = '" & lngKdnr1 & "'")
Das = hat gefehlt.
mfg,
Michael

Michael
30.07.2005, 16:55
Ich bekomme eine Fehlermeldung "Kein aktueller Datensatz", obwohl Daten zur Verfügung stehen.

Dim rsKunde As DAO.Recordset
Dim lngIndex As Long
Dim lngKdnr As Long
Dim lngKdnr1 As Variant
Dim DB1_1 As Database
Dim RS1_1 As Recordset
Dim WS1_1 As Workspace
strDatum = Format(Forms.Menue.Wert_Datum, "\#yyyy\-mm\-dd\#")
Dim strNewRecord As String
Dim strCountRecord As String
Dim gew_Summe
Dim geS_Behaelter
Set rsKunde = CurrentDb.OpenRecordset("tbl_Lieferungen_Gesamtgewicht", dbOpenTable)

strNewRecord = "SELECT Tbl_Lieferungen_Je_Behaelter.J_B_Datum, Tbl_Lieferungen_Je_Behaelter.Be AS Gew_Summe, " & _
"Tbl_Lieferungen_Je_Behaelter.AnzBehLief AS Behaelter_Summe, Tbl_Lieferungen_Je_Behaelter.Behälter, " & _
"Tbl_Lieferungen_Je_Behaelter.Lief_Pla_Kunde, Tbl_Lieferungen_Je_Behaelter.Kunden_Auftr_geb, " & _
"[Kunden Zeitfenster].Spedition, Speditionen.Ansprechpartner1, Speditionen.Ansprechpartner2, " & _
"Speditionen.FaxNr, [Kunden Zeitfenster].Abladestelle, [Kunden Zeitfenster].Zeitfenster1, " & _
"[Kunden Zeitfenster].Zeitfenster2, [Kunden Zeitfenster].Zeitfenster3 " & _
"FROM Tbl_Lieferungen_Je_Behaelter LEFT JOIN ([Kunden Zeitfenster] LEFT JOIN Speditionen ON [Kunden Zeitfenster].Spedition = Speditionen.Spedition) ON Tbl_Lieferungen_Je_Behaelter.Kunden_Auftr_geb = [Kunden Zeitfenster].KundeNr " & _
"WHERE Tbl_Lieferungen_Je_Behaelter.J_B_Datum =" & strDatum & " ;"

Set RS1_1 = CurrentDb.OpenRecordset(strNewRecord)

Do While Not RS1_1.EOF
lngKdnr1 = RS1_1!Kunden_Auftr_geb
Anzahl_Behaelter_Lieferung = DCount("Kunden_Auftr_geb", "Tbl_Lieferungen_Je_Behaelter", "[J_B_Datum] =" & strDatum & " AND [Kunden_Auftr_geb] = '" & lngKdnr1 & "'")

For lngIndex = 1 To Anzahl_Behaelter_Lieferung
MsgBox RS1_1!J_B_Datum
MsgBox RS1_1!Kunden_Auftr_geb
MsgBox RS1_1!gew_Summe
If gew_Summe < 23999 Then
gew_Summe = gew_Summe + RS1_1("Gew_Summe")
geS_Behaelter = geS_Behaelter + RS1_1("Behaelter_Summe")
End If
RS1_1.MoveNext
Next lngIndex
'MsgBox "Die Summe ist: " & gew_Summe
'gew_Summe = 0
rsKunde.AddNew
rsKunde!Datum = RS1_1!J_B_Datum
rsKunde!Lief_Pla_Kunde = RS1_1!Lief_Pla_Kunde
rsKunde!Kunden_Auftr_geb = RS1_1!Kunden_Auftr_geb
rsKunde!Behälter = RS1_1!Behälter
rsKunde!AnzBehLief = geS_Behaelter
rsKunde!Gewicht = gew_Summe
'rsKunde!Be = RS1_1!Je_Be
'rsKunde!AnzBehLief_Org = RS1_1!AnzBehLief
rsKunde.Update
gew_Summe = 0
geS_Behaelter = 0
Loop
Set RS1_1 = Nothing

Die Fehlermeldung kommt hier:
gew_Summe = gew_Summe + RS1_1("Gew_Summe")

Was kann denn hierfür die Ursache sein.
mfg,
Michael

vfrei
30.07.2005, 20:01
Hallo Michael,
die Schleifen sind falsch verschachtelt:

Do While Not RS1_1.EOF
lngKdnr1 = RS1_1!Kunden_Auftr_geb
Anzahl_Behaelter_Lieferung = DCount("Kunden_Auftr_geb", "Tbl_Lieferungen_Je_Behaelter", "[J_B_Datum] =" & strDatum & " AND [Kunden_Auftr_geb] = '" & lngKdnr1 & "'")

For lngIndex = 1 To Anzahl_Behaelter_Lieferung 'Innere Schleife beginnt
MsgBox RS1_1!J_B_Datum
MsgBox RS1_1!Kunden_Auftr_geb
MsgBox RS1_1!gew_Summe
If gew_Summe < 23999 Then
gew_Summe = gew_Summe + RS1_1("Gew_Summe")
geS_Behaelter = geS_Behaelter + RS1_1("Behaelter_Summe")
End If
RS1_1.MoveNext '<------Äussere Schleife läuft weiter, keine Kontrolle
Next lngIndex '<------Innere Schleife
'MsgBox "Die Summe ist: " & gew_Summe
'gew_Summe = 0
rsKunde.AddNew
rsKunde!Datum = RS1_1!J_B_Datum
rsKunde!Lief_Pla_Kunde = RS1_1!Lief_Pla_Kunde
rsKunde!Kunden_Auftr_geb = RS1_1!Kunden_Auftr_geb
rsKunde!Behälter = RS1_1!Behälter
rsKunde!AnzBehLief = geS_Behaelter
rsKunde!Gewicht = gew_Summe
'rsKunde!Be = RS1_1!Je_Be
'rsKunde!AnzBehLief_Org = RS1_1!AnzBehLief
rsKunde.Update
gew_Summe = 0
geS_Behaelter = 0
Loop '<-------Irgendwie sollte hier ein MoveNext stehen
Set RS1_1 = Nothing 'Nur am Rand: RS1_1.Close fehlt


HTH
Vincenz

Michael
30.07.2005, 20:12
Hallo Vincenz,
auch diese Änderung brachte nicht den gewünschten Erfolg.

mfg,
Michael

Michael
30.07.2005, 20:58
Das Problem liegt bei der Berechnung. Ich weis aber nicht wie ich das Problem lösen kann.

Do While Not RS1_1.EOF

lngKdnr1 = RS1_1!Kunden_Auftr_geb
Anzahl_Behaelter_Lieferung = DCount("Kunden_Auftr_geb", "tbl_Lieferungen_Je_Behaelter", "[J_B_Datum] =" & strDatum & " AND Kunden_Auftr_geb = '" & lngKdnr1 & "'")

For lngIndex = 1 To Anzahl_Behaelter_Lieferung
' MsgBox RS1_1!J_B_Datum
' MsgBox RS1_1!Kunden_Auftr_geb
' MsgBox RS1_1!gew_Summe
'If gew_Summe = gew_Summe + RS1_1("Gew_Summe") < 23999 Then
gew_Summe = gew_Summe + RS1_1("Gew_Summe")
geS_Behaelter = geS_Behaelter + RS1_1("Behaelter_Summe")
'End If

Next lngIndex
RS1_1.MoveNext

Und zwar nimmt "gew_Summe = gew_Summe + RS1_1("Gew_Summe")" nicht den nächsten Datensatz zur Berechnung zur Verfügung. Sonst immer nur den ersten gefunden Wert bis "For IngIndex" als Bedingung erfüllt ist.
Hoffentlich kann mir jemand weiterhelfen. Ich stehe schon kurz vor dem :smashing:.

mfg,
Michael

Nouba
30.07.2005, 21:28
Die Frage nach DCount ist abgeschlossen - es sollte also besser in <a href="http://www.ms-office-forum.net/forum/showthread.php?t=165615">Bericht zusammenfassen</a> weiter gehen.