none
ComboBox Split SQL RRS feed

  • Frage

  • Hi,

    ich habe da ein kleine Problem an dem ich nicht so weiter komme wie ich kommen sollte...

    Ich habe eine ComboBox die mit Einträgen aus der Datenbank gefüllt wird. Das Ergebnis sieht so aus:

    1 - User - 1

    Jetzt brauche ich die letzte eins für eine SQL Abfrage.
    Ich dachte an ein Array, allerdings weiß ich nicht wie ich das realisieren soll - oder wie ich den letzten Index aus dem Array bekomme ohne die genaue Länge zu wissen. Der Username variiert immerhin ständig.

    Die Logik ist klar, aber ich komme da einfach nicht drauf :(


    C# und VB.NET sind wie eine Schachtel Pralinen, ich weiß nie was ich bekomme xD

    Donnerstag, 6. September 2012 18:26

Antworten

  • Wenn du die SpieleID haben willst, dann benutzte folgenden Code:
    int ID = int.Parse(comboBox1.SelectedItem.ToString().Split('-')[2]);

    Koopakiller - http://koopakiller.ko.ohost.de/

    Donnerstag, 6. September 2012 19:27
    Moderator
  • Also wenn du mit Split arbeitest, muss es ja immer der gleiche Index sein,
    vorausgesetzt, die Strings sind immer gleich aufgebaut!

    Also N - xxx - N

    Wobei n beliebig ist und x auch, nur die "-" müssen immer dazwischen sein.

    Wenn du also Split auf "-" machst, ist deine SpielID immer auf  ..... 2
    (ungetestet) ... aber jedenfalls immer am gleichen Index.

    Wenn du das mit Substring machst, brauchst du nur den Index des 2. "-" und die Gesamtlänge des strings, beides hast du.

    Es gibt sogar ein Substring von index bis ende, da brachst nicht mal die Länge des Strings auslesen.

    Denke ein Trim() über das Ergebnis solltest dann noch machen und du hast deine Zahl ... wohlgemerkt als string!
    Wenn du dann noch eine Zahl brauchst, musst z.B. int.Parse() nehmen, oder die Klasse Convert.
    Donnerstag, 6. September 2012 19:30

Alle Antworten

  • Hallo

    Du könntest beispielsweise die Methode .Split('-') von string nutzen um ein Array zu erzeugen. Damit splittest du den Text an den Bindestichen auf und nimmst die das Element mit dem Index 2.

    Alternativ könnte man sich eine Lösung über Regex.Matches überlegen. Welches nur die 2. Zahl findet (sofern es immer eine ist).


    Koopakiller - http://koopakiller.ko.ohost.de/

    Donnerstag, 6. September 2012 18:35
    Moderator
  • Also das Split ist denke ich schon die einfachere Lösung.

    Allerdings würde es auch mit SubString gehen in Verbindung mit IndexOf auf die "-".

    LG

    PS.: Sollte diese eins nicht auch in der Value stehen!? Bzw. sollte man die SQL Abfrage nicht lieber über die Value der Combobox machen!?
    Donnerstag, 6. September 2012 18:43
  • Mit dem Gedanken Substring habe ich auch gespielt - allerdings kenne ich die Länge des Namens nicht.

    Also folgendes liegt zu Grunde:

    Werte die aus der Tabelle zurückgegeben werden:

    ID = 1

    Name = XXX

    SpieleID = 1

    Jetzt will ich SpieleID haben. Länge des Namens ist unbekannt. Zahlen sind immer 2 um String das erste und das letzte Value. Das bedeutet 1 - xx - 1

    Wenn dann muss ich auf ein Array setzen, aber ich habe keine Ahnung wie ich das bewerkstelligen soll.

    Mit Split habe ich das schon probiert, ich finde nur nicht den richtigen Index, da er automatisch gefunden werden muss :(


    C# und VB.NET sind wie eine Schachtel Pralinen, ich weiß nie was ich bekomme xD

    Donnerstag, 6. September 2012 19:23
  • Wenn du die SpieleID haben willst, dann benutzte folgenden Code:
    int ID = int.Parse(comboBox1.SelectedItem.ToString().Split('-')[2]);

    Koopakiller - http://koopakiller.ko.ohost.de/

    Donnerstag, 6. September 2012 19:27
    Moderator
  • Also wenn du mit Split arbeitest, muss es ja immer der gleiche Index sein,
    vorausgesetzt, die Strings sind immer gleich aufgebaut!

    Also N - xxx - N

    Wobei n beliebig ist und x auch, nur die "-" müssen immer dazwischen sein.

    Wenn du also Split auf "-" machst, ist deine SpielID immer auf  ..... 2
    (ungetestet) ... aber jedenfalls immer am gleichen Index.

    Wenn du das mit Substring machst, brauchst du nur den Index des 2. "-" und die Gesamtlänge des strings, beides hast du.

    Es gibt sogar ein Substring von index bis ende, da brachst nicht mal die Länge des Strings auslesen.

    Denke ein Trim() über das Ergebnis solltest dann noch machen und du hast deine Zahl ... wohlgemerkt als string!
    Wenn du dann noch eine Zahl brauchst, musst z.B. int.Parse() nehmen, oder die Klasse Convert.
    Donnerstag, 6. September 2012 19:30
  • Hallo Dom2011,

    Wir gehen davon aus, dass die Antworten Dir weitergeholfen haben.
    Wenn ja, wäre es hilfreich wenn Du diese Lösung bestätigen würdest, sodass andere Leute von derselben Situation profitieren können.
    Wenn nein, neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    Danke und viele Grüße,
    Ionut

    Donnerstag, 11. Oktober 2012 07:43
    Moderator