PDA

Vollständige Version anzeigen : Abfrage erweitern


chris218
11.05.2011, 08:51
Moin Moin,

ich seh den Wald vor lauter Bäumen nicht...... und krieg es einfach nicht hin. Ich habe eine Abfrage die bisher wie folgt aussieht:

SELECT R.[RE Nummer] AS Nummer, R.Datum, R.Kundennummer, K.Kundenname1 AS Kundenname, B.[Ausführung], B.[Oberfläche], B.[Anzahl Fenster], B.[Anzahl Gläser], K.LKZ, Wert AS Auftragswert FROM (Rechnungen R LEFT JOIN Kunden K ON R.Kundennummer=K.Kundennummer) LEFT JOIN Bestand_tbl B ON R.Rechnungsnummer=B.[AB Nummer] " & IIf(where <> "", "WHERE " & where & " ", "") & "ORDER BY " & orderstatement

Nun habe ich in der Tabelle Rechnungen eine Spalte "abrechnung" hinzugefügt. Nun soll die ABfrage so erweitert werden, dass nur noch die Datensätze aufadiert werden, wo in der Spalte ABrechnung "sofort" oder "heute" steht

Vielen Dank im voraus
Chris

Atrus2711
11.05.2011, 09:22
Hi,

dann wirst du die where-Variable entsprechend aufrüsten müssen. Wie du die zusammensetzt, zeigst du leider nicht, aber sie müsste so ergänzt werden, dass etwas in dieser Art herauskommt:

... WHERE (BisherigesFeld = BisherigerWert AND R.Abrechnung In ("sofort";"heute"))

chris218
11.05.2011, 10:12
So dann hier der ganze Code. Es geht um Case 2:

Case 1, 3, 5: filternummer = "B.[AB Nummer]"
filterkunde = "B.Kundennummer"
filterwert = "B.Auftragswert"
filterlkz = "K.lkz"
Case 2: filternummer = "R.Rechnungsnummer"
filterkunde = "R.Kundennummer"
filterwert = "R.Wert"
filterlkz = "k.lkz"
Case 4: filternummer = "AT.Auftragsnummer"
filterkunde = "B.Kundennummer"
filterwert = "B.Auftragswert"
filterlkz = "k.lkz"
End Select
Select Case Me!Sortierung
Case 1: orderstatement = filternummer
Case 2: orderstatement = filterdatum
Case 3: orderstatement = filterkunde
Case 4: orderstatement = "K.Kundenname1"
Case 5: orderstatement = filterwert
Case 6: orderstatement = filterlkz
End Select
where = ""
If Nz(Me!Jahrauswahl, -1) <> -1 Then
If Len(where) > 0 Then where = where & " AND "
If Nz(Me!Wochenauswahl, -1) <> -1 Then
where = where & filterdatum & ">=" & getStringByDate(getDateByWeek(Me!Jahrauswahl, Me!Wochenauswahl, 1)) & " AND " & filterdatum & "<=" & getStringByDate(getDateByWeek(Me!Jahrauswahl, Me!Wochenauswahl, 7))
ElseIf Nz(Me!Monatauswahl, -1) <> -1 Then
where = where & filterdatum & ">=" & getStringByDate(DateSerial(Me!Jahrauswahl, Me!Monatauswahl, 1)) & " And " & filterdatum & " <= " & getStringByDate(DateSerial(Me!Jahrauswahl, Me!Monatauswahl + 1, 1) - 1)
Else
where = where & filterdatum & ">=#01/01/" & Me!Jahrauswahl & "# AND " & filterdatum & "<=#12/31/" & Me!Jahrauswahl & "#"
End If
End If
If IsNull(Me!Ausfuehrung) = False Then
If Len(where) > 0 Then where = where & " AND "
If Me!WieNichtWieAusfuehrung = 1 Then
where = where & "B.[Ausführung] LIKE '*" & Me!Ausfuehrung & "*'"
Else
where = where & "B.[Ausführung] NOT LIKE '*" & Me!Ausfuehrung & "*'"
End If
End If
If Nz(Me!Kundennummerauswahl, -1) <> -1 Then
If Len(where) > 0 Then where = where & " AND "
where = where & filterkunde & "=" & Me!Kundennummerauswahl
End If
Select Case Me!Tabellenquelle
Case 1: Me.RecordSource = "SELECT B.[AB Nummer] AS Nummer, B.[AB Datum] AS Datum, B.Kundennummer, K.Kundenname1 AS Kundenname, B.[Ausführung], B.[Oberfläche], B.[Anzahl Fenster], B.[Anzahl Gläser], K.LKZ, B.Auftragswert FROM Bestand_tbl B LEFT JOIN Kunden K ON B.Kundennummer=K.Kundennummer " & IIf(where <> "", "WHERE " & where & " ", "") & "ORDER BY " & orderstatement
Case 2: Me.RecordSource = "SELECT R.[RE Nummer] AS Nummer, R.Datum, R.Kundennummer, K.Kundenname1 AS Kundenname, B.[Ausführung], B.[Oberfläche], B.[Anzahl Fenster], B.[Anzahl Gläser], K.LKZ, Wert AS Auftragswert FROM (Rechnungen R LEFT JOIN Kunden K ON R.Kundennummer=K.Kundennummer) LEFT JOIN Bestand_tbl B ON R.Rechnungsnummer=B.[AB Nummer] " & IIf(where <> "", "WHERE " & where & " ", "") & AND R.Abrechnung In ("Angebot";"Lieferscheinrechnung";"Schlußrechnung") &"ORDER BY " & orderstatement
Case 3: Me.RecordSource = "SELECT B.[AB Nummer] AS Nummer, B.Lieferdatum AS Datum, B.Kundennummer, K.Kundenname1 AS Kundenname, B.[Ausführung], B.[Oberfläche], B.[Anzahl Fenster], B.[Anzahl Gläser], K.LKZ, B.Auftragswert FROM Bestand_tbl B LEFT JOIN Kunden K ON B.Kundennummer=K.Kundennummer " & IIf(where <> "", "WHERE " & where & " ", "") & "ORDER BY " & orderstatement
Case 4: Me.RecordSource = "SELECT AT.Auftragsnummer AS Nummer, T.Tourdatum AS Datum, B.Kundennummer, K.Kundenname1 AS Kundenname, B.[Ausführung], B.[Oberfläche], B.[Anzahl Fenster], B.[Anzahl Gläser], K.LKZ, B.Auftragswert FROM ((Tour T INNER JOIN Auftragtour AT ON AT.Tour=T.ID) INNER JOIN Bestand_tbl B ON AT.Auftragsnummer=B.[AB Nummer]) LEFT JOIN Kunden K ON B.Kundennummer=K.Kundennummer " & IIf(where <> "", "WHERE " & where & " ", "") & "ORDER BY " & orderstatement
Case 5: Me.RecordSource = "SELECT B.[AB Nummer] AS Nummer, B.Lieferscheindatum AS Datum, B.Kundennummer, K.Kundenname1 AS Kundenname, B.[Ausführung], B.[Oberfläche], B.[Anzahl Fenster], B.[Anzahl Gläser], K.LKZ, B.Auftragswert FROM Bestand_tbl B LEFT JOIN Kunden K ON B.Kundennummer=K.Kundennummer " & IIf(where <> "", "WHERE " & where & " ", "") & "ORDER BY " & orderstatement
End Select
'If Len(where) > 0 Then where = " WHERE " & where
'Me.RecordSource = "SELECT * FROM Bestand_tbl" & where
' If where = "" Then
' Me.FilterOn = False
' Else
' Me.FILTER = where
' Me.FilterOn = True
' End If
End Sub

Atrus2711
11.05.2011, 10:38
Bitte setz das mal in Codetags und rücke es ordentlich ein. :boah: