Nighthawk1977
Cadet 4th Year
- Registriert
- Sep. 2009
- Beiträge
- 114
Hallo zusammen,
ich habe aktuell ein kleines Problem mit einem Programm, was ich in der Entwicklungsumgebung unserer ERP Software geschrieben habe.
Über eine SQL Abfrage hole ich mir Artikel-Nr., Benennung, Fertigungsauftragsmenge und kalk. Losgröße. Ziel ist, die kalk. Losgröße auf Basis der Medianmenge je Artikel neu zu setzen.
Zunächst filtere ich mir die individuellen Artikel-Nr., Benennungen und kalk. Losgrößen. Ich ergänze eine Spalte für den Median.
median_menge habe ich als Int festgelegt da die kalk. Losgröße auch ein Int ist.
Im nächsten Schritt ermittele ich den Median, ggfs. steck hier in Zeile 31 und 32 schon das Problem. median habe ich zuvor als int definiert.
Da ich davon ausgehe, dass für viele Datensätze die kalk. Losgröße schon dem Median entspricht, möchte ich die Zeilen löschen.
Vermutlich habe ich hier Problem mit den Formaten. Von ursprünglich 264 Artikeln bleiben 132 übrig. Für diese 132 sind aber - zumindest in meiner Darstellung im Datagridview - die Werte identisch und müssten auch gelöscht werden. Ich habe aber keinen Eintrag in meiner TextBox, a != b kommt offenbar nicht vor.
Jemand eine Idee? Ich glaube, ich steh gerade nur auf dem Schlauch und es ist eigentlich ganz einfach...
ich habe aktuell ein kleines Problem mit einem Programm, was ich in der Entwicklungsumgebung unserer ERP Software geschrieben habe.
Über eine SQL Abfrage hole ich mir Artikel-Nr., Benennung, Fertigungsauftragsmenge und kalk. Losgröße. Ziel ist, die kalk. Losgröße auf Basis der Medianmenge je Artikel neu zu setzen.
Zunächst filtere ich mir die individuellen Artikel-Nr., Benennungen und kalk. Losgrößen. Ich ergänze eine Spalte für den Median.
C#:
// Artikel filtern
public void artikel_filtern()
{
try
{
DataView view = new DataView(faauswahl);
artikel = view.ToTable(true, "artnr", "benennung", "klg");
artikel.Columns.Add(new DataColumn("median_menge", typeof(int)));
this.dgv_artikel.DataSource = artikel;
}
catch(Exception ex)
{
ShowError("Fehler: artikel_filtern", ex);
}
}
median_menge habe ich als Int festgelegt da die kalk. Losgröße auch ein Int ist.
Im nächsten Schritt ermittele ich den Median, ggfs. steck hier in Zeile 31 und 32 schon das Problem. median habe ich zuvor als int definiert.
C#:
public void median_berechnen()
{
try
{
foreach(DataRow row in artikel.Rows)
{
zaehlen = zaehlen + 1;
this.progress1.Value = zaehlen;
artnr = row["artnr"].ToString();
DataView filter_artnr = new DataView(faauswahl);
filter_artnr.RowFilter = String.Format(@"artnr = '{0}'", artnr);
famengen = filter_artnr.ToTable();
anzahl = famengen.Rows.Count;
rest = famengen.Rows.Count % 2;
if (rest == 0)
{
w1 = (anzahl / 2 -1);
w2 = (anzahl / 2);
}
if (rest != 0)
{
w1 = (anzahl / 2);
w2 = (anzahl / 2);
}
median = (famengen.Rows[w1]["famenge"].ToInteger() + famengen.Rows[w2]["famenge"].ToInteger()) / 2;
row["median_menge"] = median;
}
}
catch(Exception ex)
{
ShowError("Fehler: median_berechnen", ex);
}
}
Da ich davon ausgehe, dass für viele Datensätze die kalk. Losgröße schon dem Median entspricht, möchte ich die Zeilen löschen.
C#:
public void daten_bereinigen()
{
try
{
this.anzahl_gesamt = artikel.Rows.Count;
for(int i = 0; i < artikel.Rows.Count; i++)
{
if (i>=0)
{
int a = artikel.Rows[i]["klg"].ToInteger();
int b = artikel.Rows[i]["median_menge"].ToInteger();
if (a == b)
{
log.AppendText(string.Format(@"Artikel {0} entfernt." + "\n", artikel.Rows[i]["artnr"].ToString().Trim()));
artikel.Rows[i].Delete();
}
else
if (a != b)
{
log.AppendText(string.Format(@"Artikel {0} ändern." + "\n", artikel.Rows[i]["artnr"].ToString().Trim()));
}
}
}
// Löschungen im Datatable committen
this.artikel.AcceptChanges();
}
catch(Exception ex)
{
ShowError("Fehler: daten_bereinigen", ex);
}
}
Vermutlich habe ich hier Problem mit den Formaten. Von ursprünglich 264 Artikeln bleiben 132 übrig. Für diese 132 sind aber - zumindest in meiner Darstellung im Datagridview - die Werte identisch und müssten auch gelöscht werden. Ich habe aber keinen Eintrag in meiner TextBox, a != b kommt offenbar nicht vor.
Jemand eine Idee? Ich glaube, ich steh gerade nur auf dem Schlauch und es ist eigentlich ganz einfach...