Autor |
Beitrag |
Talemantros
Beiträge: 444
Erhaltene Danke: 2
Win7 Proff 64bit
C# (VS2013)
|
Verfasst: Do 21.05.15 15:05
Hallo zusammen,
ich habe folgenden Code
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| public static DataTable GetDataTableRechnungByStyleAndDate(DateTime datumVon, DateTime datumBis, double minPreis, double maxPreis) { DataTable dt = new DataTable(); strSql = @"Select rechnung.rechnungid, rechnungnummer as Rechnungsnummer, lieferscheinnummer as Lieferscheinnummer, packliste as Packlistennummer, rechnung.datum as Datum, kunde.rechnungname as Kunde, prozent as Prozentsatz, sum(round(((rechnungdetail.preis*netto)/100*prozent)+(rechnungdetail.preis*netto),2)) as Rechnungsbetrag, case when art = 'ER' then 'Einzelrechnung' else 'Sammelrechnung' end as Art, case when rechnung.druck = 0 then 'Nicht gedruckt' else 'Gedruckt' end as Druck from rechnung left join oktabinerdokument on oktabinerdokument.rechnungid=rechnung.rechnungid left join rechnungdetail on rechnungdetail.oktabinergrundid=oktabinerdokument.oktabinergrundid left join lieferschein on lieferschein.lieferscheinid=rechnung.lieferscheinid left join packliste on packliste.packlisteid=rechnung.packlisteid left join kunde on kunde.kundeid=rechnung.kundeid left join oktabinergrund on oktabinergrund.oktabinergrundid=oktabinerdokument.oktabinergrundid where (rechnung.datum between ?datumVon and ?datumBis) and (rechnungsbetrag between ?minPreis and ?maxPreis) group by rechnung.rechnungid";
using (MySqlConnection conn = new MySqlConnection(connStr)) { using (MySqlDataAdapter da = new MySqlDataAdapter(strSql, conn)) { da.SelectCommand.Parameters.AddWithValue("?datumVon", datumVon.AddDays(-1)); da.SelectCommand.Parameters.AddWithValue("?datumBis", datumBis); da.SelectCommand.Parameters.AddWithValue("?minPreis", minPreis); da.SelectCommand.Parameters.AddWithValue("?maxPreis", maxPreis); da.Fill(dt); } }
return dt; } |
Dort habe ich sum(round(((rechnungdetail.preis*netto)/100*prozent)+(rechnungdetail.preis*netto),2)) as Rechnungsbetrag der Berechnung als Spaltennamen "Rechnungsbetrag" benannt.
Nun würde ich gern diesen Spaltennamen als Kriterium benutzen C#-Quelltext 1:
| and (rechnungsbetrag between ?minPreis and ?maxPreis) | . Leider sagt er, dass er die Spalte nicht kennt.
Würde mich über Hilfe freuen.
Gruß
|
|
iKilledKenny
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: Do 21.05.15 15:18
Rechnungsbetrag vs rechnungsbetrag?
|
|
baumina
Beiträge: 305
Erhaltene Danke: 61
Win 7
Delphi 10.2 Tokyo Enterprise
|
Verfasst: Do 21.05.15 15:34
HAVING statt WHERE, da der Wert erst berechnet (die Abfrage erst durchgeführt) werden muss, bevor verglichen werden kann.
|
|
Talemantros
Beiträge: 444
Erhaltene Danke: 2
Win7 Proff 64bit
C# (VS2013)
|
Verfasst: Fr 22.05.15 08:38
Danke
Ergebnis:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| public static DataTable GetDataTableRechnungByStyleAndPrice(DateTime datumVon, DateTime datumBis, double minPreis, double maxPreis) { DataTable dt = new DataTable(); strSql = @"Select rechnung.rechnungid, rechnungnummer as Rechnungsnummer, lieferscheinnummer as Lieferscheinnummer, packliste as Packlistennummer, rechnung.datum as Datum, kunde.rechnungname as Kunde, prozent as Prozentsatz, sum(round(((rechnungdetail.preis*netto)/100*prozent)+(rechnungdetail.preis*netto),2)) as Rechnungsbetrag, case when art = 'ER' then 'Einzelrechnung' else 'Sammelrechnung' end as Art, case when rechnung.druck = 0 then 'Nicht gedruckt' else 'Gedruckt' end as Druck from rechnung left join oktabinerdokument on oktabinerdokument.rechnungid=rechnung.rechnungid left join rechnungdetail on rechnungdetail.oktabinergrundid=oktabinerdokument.oktabinergrundid left join lieferschein on lieferschein.lieferscheinid=rechnung.lieferscheinid left join packliste on packliste.packlisteid=rechnung.packlisteid left join kunde on kunde.kundeid=rechnung.kundeid left join oktabinergrund on oktabinergrund.oktabinergrundid=oktabinerdokument.oktabinergrundid where (rechnung.datum between ?datumVon and ?datumBis) group by rechnung.rechnungid having (rechnungsbetrag between ?minPreis and ?maxPreis)";
using (MySqlConnection conn = new MySqlConnection(connStr)) { using (MySqlDataAdapter da = new MySqlDataAdapter(strSql, conn)) { da.SelectCommand.Parameters.AddWithValue("?datumVon", datumVon.AddDays(-1)); da.SelectCommand.Parameters.AddWithValue("?datumBis", datumBis); da.SelectCommand.Parameters.AddWithValue("?minPreis", minPreis); da.SelectCommand.Parameters.AddWithValue("?maxPreis", maxPreis); da.Fill(dt); } }
return dt; } |
Schönes Pfingswochenende
|
|
|