Autor Beitrag
dinazavric
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Mi 22.06.11 12:59 
Hallo,

Ich habe eine Tabelle mit Einträgen, die eine ID automatisch bekommen sollten. Die Bedingung ist hier, dass sie mit bspw. 5 (kann auch was anders sein) anfangen soll, dann kommt die eigentliche Nummer, die durchläuft. Für einen neuen Eintrag wird immer die nächste nach dem Maximum genommen. Hier ist meine Lösung:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
                    int IndexMax = new int();
                    var values = dataSetPro.Tables["Parameters"].Rows.OfType<DataRow>();
                    
                    if (values.Count() == 0)
                    {
                        IndexMax = 0;
                        newRow["ParameterID"] = 51// erster Eintrag
                    }
                    else
                    {
                        String[] IndexMaxS = Convert.ToString(values.Max(x => x.Field<int>("ParameterID"))).Split('5'); // die "5" abschneiden um die eigentliche Nummer zu bekommen
                        IndexMax = Convert.ToInt32(IndexMaxS[1]);
                        newRow["ParameterID"] = Convert.ToInt32("5" + Convert.ToString(IndexMax + 1)); // "5" plus neue Nummer
                    }

                    dataSetPro.Tables["Parameters"].Rows.Add(newRow);


Das Problem wird mit der Lösung gleich sichtbar - wenn die ID außer der ersten "5" noch weitere Fünfer in der Nummer hat, funktioniert es nicht mehr. Irgendwie finde ich aber keine andere einfache Lösung. Hat jemand vielleicht ne Idee?

Vielen Dank im Voraus,
Dina
Eudaimonie
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mi 22.06.11 16:08 
Benutz nicht die Split() Methode, sondern schneide die erste '5' mittels Substring() ab.
So kannst du immer, das erste Zeichen abschneiden und somit bist du sicher, dass es immer die '5' am Anfang ist.