listbox.SelectedIndex

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von frankfurtez.

    listbox.SelectedIndex

    Wahrscheinlich ein banales Problem ...

    Ich hole aus aus eine DB Tabelle Projektsprachen, und trage diese in eine Listbox ein. Die Tabelle sieht wie folgt aus (Integer und String):

    1 DEU
    2 ENG
    3 FRA
    7 ITA

    Wenn ich bei Neuanlage einen der Einträge auswähle, dann werden Integer und String (z.B. 3 unde FRA) richtig in die Textfelder der Form übernommen und weiterverarbeitet.

    VB.NET-Quellcode

    1. int_sprache = Listbox.SelectedIndex


    Ich weiß, dass der Index 0-basiert ist.

    Möchte ich einen bestehenden Datensatz anzeigen, bei dem schon eine Sprache ausgewählt ist, möchte ich, dass in der Listbox der bestehende Spracheintrag ausgewählt ist. Das mache ich mit

    VB.NET-Quellcode

    1. Listbox.SelectedIndex = int_Sprache


    Das Problem ist, dass die falsche Sprache markiert ist, und zwar immer um 1 versetzt, d.h. ist die Projektsprache 1 DEU, wird in der Listbox ENG markiert.

    Frage: Warum wird bei der Neuanlage eines Datensatzes der in der Integerspalte eingetragene Wert übernommen (beginnend mit 1), aber bei der Anzeige offenbar der 0-basierte Index angewendet?
    Option strict ist on

    Das sind nicht wirkliche Codesamples, da hast du recht. Aber das Problem liegt hier nicht im Code, sondern offenbar in der unterschiedlichen Numerik bei Auswahl (neuer Datensatz) und Anzeige (bestehender Datensatz).

    int_Sprache ist ein Textfeld, dahinter steckt ein Dataview. Das funktioniert alles ohne Probleme.

    Nachtrag: Ich habe genügend Messageboxes eingebaut, auch hier stimmt die Numerik. Lediglich die Anzeige in der Listbox verrutscht.
    Ich denke mal, dass Du aus "1 DEU " am Platz Index = 0 irgendwie die "1" rausholst und in einen Index konvertierst, dann würde korrekterweise "2 ENG" selektiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das sehe ich auch so, aber warum. Und gibt es einen Workaraund?

    Das ist eine bestehende komplexe Access Anwendung, die ich gerade anfange zu portieren, und mich dabei in .NET einarbeite. Diese 1 DEU usw. kommt an zig Stellen vor. Vor allen Dingen ist die Sequenz der Sprachnummern nicht lückenlos.

    In Access kann ich auf den Inhalt der ersten Spalte des Listenfelds zugreifen (Listbox.Column(0)) sinngemäß, und damit arbeiten. Aber unter VB.NET habe ich eine solche Möglichkeit nicht gefunden.
    Dann musst Du ganz sauber VB uns Access trennen.
    Das bedeutet, dass Du ggf. einen "Index-Konverter" schreiben musst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    oder vlt. die ADO.Net - Technologie bemühen - die ist ja für DB-Zugriffe und Databinding da.

    Access-VBA nach .Net zu portieren kannste vergessen. Das ist umständlicher als Neu schreiben, und das ergebnis ist immer noch kein .Net-Proggi, sondern Murx (eben ein portiertes Proggi).

    Aber das heißt von null anfangen.
    Ich portiere die Logik, nicht den Code. Aber wenn man von VBA kommt, ist VB.NET eine ziemliche Umstellung. Dazu noch die die Umstellung auf SQL Server ... Bisher habe ich ca. 200 € in Literatur investiert.

    Um die Sache nochmal auf den Punkt zu bringen:

    Konsequenz für mein Problem: Ich muss in allen Tabellen in denen es vorkommt DEU auf 0 usw. ändern, und ich darf keine Lücken in der Sequenz haben. Alles andere wäre unnötiges Gebastel.
    nein, genau das wäre ein hanebüchenes Gebastel

    wie gesagt, arbeite dich erstmal ganz unabhängig von deim Projekt in die .Net-Datenbänkerei ein - Links hasteja, und wennse dir ausgehen guckste einfach mal in die Datenbank-Tuts von VBParadise ;)
    achnee - habich ja noch garnet, also:
    "Datenbank in 10 Minuten" auf Movie-Tuts
    vier Views


    jepp, das mit der Umstellung ist ein Neu-Anfang. Ich empfehle dieses Buch Lesen - wenndedas wirklich durcharbeitest, sparstedir erhebliche Umständlichkeiten.
    Den Löffelmann habe ich als erstes gekauft, allerdings zur 2010er Version. Spitze, und didaktisch gut aufbereitet. Aber nichts zur Datenbankanbindung.

    Empfehlen kann ich hier: Doberenz, Datenbankprogrammierung mit VB 2010, Microsoft Press

    Zum SQL Server: Urban et.al. (auch Löffelmann) SQL Server 2008 R2, Entwicklerbuch, auch Microsoft Press

    Danke für die Links, sind schon gespeichert

    Nachtrag: Ich weiß, dass C# mächtiger ist, aber zusätzlich noch eine neue Sprache wird mir zu viel.