Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Do 21.05.15 15:05 
Hallo zusammen,
ich habe folgenden Code

ausblenden volle Höhe C#-Quelltext
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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Do 21.05.15 15:18 
Rechnungsbetrag vs rechnungsbetrag?
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Fr 22.05.15 08:38 
Danke

Ergebnis:
ausblenden volle Höhe C#-Quelltext
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