DGV Combobox, Display & Value funktioniert nicht richtig

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Orion.

    DGV Combobox, Display & Value funktioniert nicht richtig

    Guten Tag zusammen
    Habe heute auf einer Form eine 2. DGV hinzugefügt, bei der auf der einen eine Combobox ist mit DisplayMember = Nummer und ValueMember = ID wenn ich jetzt aber das ganze teste kann ich die Nummer zwar wählen wie es auch tun soll, sobald ich aber aus dem Fokus gehe zeigts mir die ID des Satzes an was es ja nicht tun soll. Im Anhang ist das Projekt, die Form Verwaltung ist hier gefragt. Kritisiert bitte nicht den restlichen Code, das ganze Projekt ist noch in Arbeit und bin noch überall ein bisschen am Testen. (Ist im übrigen das Projekt das ich schon mal hier mit euch angeschaut hatte nur soll ich da jetzt ein paar Sachen eben ausprobieren, nachdem die damalige finale Version beim Kunden installiert wurde.)
    mfg

    Orion
    Dateien
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Okay, dann geh ich mal schnell die DB exportieren. Habe eigentlich nur eine weitere Spalte hinzugefügt mit dem Wert Text und Nullwerte erlaubt. Zuerst hatte es beim aktualisieren der Abfrage im DataSet irgendwie gemurkst und mir noch eine Spalte Kunde1 erstellt obwohl in der DB gar keine solche Spalte existiert.
    EDIT: Habe SQL Server Express 2012 installiert, kannst du mit den Scripts was anfangen?
    Dateien
    • scripts.zip

      (1,82 kB, 145 mal heruntergeladen, zuletzt: )
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Äh - nein :(

    ich hab Sql2008, und grad probiert, ob ich eins davon ausführen kann, aber nur Fehlermeldungen.

    Exportier dein Dataset doch einfach in eine Xml-Datei - das kannst du viel leichter anhängen, und muss man nicht das SqlServer-Monstrum für bemühen.
    Du hast offensichtlich noch jede Menge annerer Probleme, mittm Datenmodell und mitte Anbindung von Controls.
    Das lässt sich viel leichter entwickeln, wenn du die DB erstmal hintanstellen könntest.
    Okay :/ Reicht das Lesen der Scripts mit dem Texteditor aus um vielleicht einen Fehler zu entdecken? Obwohl ich nicht glaube das es an der Datenbank liegt, eher am DataSet...
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Habe gerade gesehen das man beim exportieren konvertieren kann. Bin gleich zurück.
    EDIT: Es ist die 2008 R2 Version hoffe die stimmt.
    Dateien
    • 2008script.sql

      (6,64 kB, 153 mal heruntergeladen, zuletzt: )
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Orion“ ()

    Habe davon noch nie gehört o.o ich nehme an das kann ich dann einfach in einen Button schreiben und als File die Datenbank. Nur verstehe ich MS SQL's DB Strukturen irgendwie nicht ganz. Sollte es nicht dasselbe sein wenn ich im MS SQL ein Data-Export mache?
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dann informier dich. Öffne den ObjectBrowser, suche nach "WriteXml", lies die Doku dazu.

    Aber auch mein Codesnippet lässt eiglich keine Frage offen: Das Argument habe ich "FileFullname" genannt, also da ist der volle Name einer Datei einzutragen, oder was sonst kann ich damit gemeint haben?
    Und wenn da der volle Name einer Datei eingetragen wird - wird dann in die Datenbank gespeichert?
    Nein, natürlich wird in die angegebene Datei gespeichert, deswegen wird sie ja angegeben, oder wozu sonst?

    aber gugge OB und lies die Doku.

    Und dann schreib die Zeile auch mal in ein ButtonClick, und öffne hinterher die Datei mittm TextEditor. Wähle als Extension der Datei ".Xml", denn Dataset.WriteXml() erstellt eine Xml-Datei - wer hätte das gedacht? ;) .

    Diese kleine popelige Zeile - und ihr Brüderchen .ReadXml - ist in vielen vielen Fällen eine vollständige und sogar vorzuziehende Alternative zum Einsatz einer Datenbank. Jo, hört man selten von, nur ich rede dauernd davon. Ich glaub fast, Microsoft tut es leid, dass sie das dem Dataset mitgegeben haben, denn so können sie vlt. ein paar SqlServer-Lizenzen weniger verkaufen.
    Jedenfalls in der Folge-Technologie zum Dataset - EntityFramework - gibt es diese Option nicht mehr.

    Wie gesagt: ich rede dauernd davon, und bastel reihenweise Tutorials dazu - hier mal zwei, mit je verschiedenem Fokus:
    Daten laden, speichern, verarbeiten
    vier Views-Videos
    Okay, habe mir das Ganze angeschaut und eine XML direkt nach dem abfüllen der Daten erstellt. Das darin sind 6 Beispielssätze in der Kundenliste und 1 Beispielssatz in der Datatable. Hoffe du kannst damit was anfangen...
    Dateien
    • Datatable.xml

      (869 Byte, 194 mal heruntergeladen, zuletzt: )
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    und schon gehts :D

    VB.NET-Quellcode

    1. Private Sub Verwaltung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. ''TODO: Diese Codezeile lädt Daten in die Tabelle "PmdbDataSet.Kunde". Sie können sie bei Bedarf verschieben oder entfernen.
    3. ' Me.KundeTableAdapter.Fill(Me.PmdbDataSet.Kunde)
    4. ''TODO: Diese Codezeile lädt Daten in die Tabelle "PmdbDataSet.Datatable". Sie können sie bei Bedarf verschieben oder entfernen.
    5. ' Me.DatatableTableAdapter.Fill(Me.PmdbDataSet.Datatable)
    6. Me.PmdbDataSet.ReadXml(IO.Path.GetFullPath("..\..\Datatable.xml"))
    aber hab noch nix getestet
    und schon gefunden: Du hast die ComboboxColumn an dieselbe BindingSource gehängt, an der auch das nebenstehende KundeDatagridView hängt. Da das DGV die BindingSource.Position steuert, steuert es damit auch die Anwahl der Combobox der ComboboxColumn.

    Dabei liegt eine Extra-BindingSource für die ComboboxColumn ja schon bereit: KundeBindingSource1 - also wechsel ComboboxColumn.DataSource und fixed.
    Oh, so einfach wäre es o.o Daran habe ich gar nicht gedacht. Bin momentan die DB am neu erstellen weil noch mehr Felder hinzugekommen sind. Vorhin als ich es ausprobierte stand dann auf einmal das Update kein Member vom KundeTableAdapter ist. Ist das hieraus herzuführen oder kommt das davon das ich noch ein SQL Statement in die Abfrage geschrieben habe und dieses falsch sein könnte?
    Habe die Kundentabelle von:

    SQL-Abfrage

    1. SELECT Kunde,KuID, Nummer
    2. FROM Kunde;

    Zu dem geändert:

    SQL-Abfrage

    1. SELECT Kunde, KuID, Nummer
    2. FROM Kunde
    3. ORDER BY Nummer;
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    keine Ahnung. Ich kenne das so, dasses sehr umständlich ist, andauernd die DB ändern zu müssen, und im Nachgang dann das ganze Dataset neu generieren, aber anners gehts nicht.
    Am Datenmodell nachbessern ohne komplett neu zu generieren kannst du nur bei DatasetOnly, mit DB dahinter bedeutet jede Änderung ein komplett neues Generieren des Datasets.
    Also mit Glück funztes manchmal, wenn man was nachbessert, aber in den meisten Fällen zickt im Anschluss daran immer irgendetwas rum.

    Auch deshalb: Entwickel besser DatasetOnly, klemm die DB erst dahinter, wenn alles annere fertig ist.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Das sind eben erst die letzten Änderungen. Hab bereits gemeldet das nach diesen Änderungen nur noch am GUI Änderungen vorgenommen werden weil nach dieser Woche schlicht einfach keine Projektzeit mehr übrig ist. Wie genau ist das neu generieren des DataSets gemeint? muss ich das nun rauslöschen und komplett neu aufbauen mit Tabellen usw?
    EDIT: Habe mal sicherheitshalber das ganze DataSet neu erstell der Update Fehler erscheint immer noch...
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Orion“ ()

    ja, komplett neu generieren.
    Wenn man zB erstmalig eine Db-Datei einem Projekt zufügt, dann startet ja der Dataset-Assistent, der das Dataset generiert. Dieser Assistent muss neu gestartet werden, und ein neues, gleichnamiges Dataset nochmal generieren.
    Und während des Vorgangs hast du > 102 Fehler im Projekt, und wenn dabei was schief läuft, auch noch danach.
    Alternativ zum Assistenten kann man auch im Dataset-Designer sämtliche Tabellen löschen, und neu aus dem Server-Explorer drauf ziehen.
    Aber ist wirklich hässlich - v.a., wenn man die Partialen Dataset-Klassen nutzt, um Business-Logik zu implementieren - da kommt man ganz schön ins schwitzen - immer feste Backup machen!

    Mit DatasetOnly ist das auch nicht immer lustig, aber doch schon viel viel eher. Da kannste eine String-Spalte, in der nur Zahlen stehen auch schonmal einfach umwidmen auf Int32, und sogar anschließend die Datei mit den Testdaten weiterverwenden.
    Oder wennde Relationen löschst oder zufügst - da entstehen ein paar Fehlerchen, und dann ist wieder gut.
    Und sogar SpaltenNamen kann man ändern, und geht anschließend in die Xml, und bessert mit Search&Replace die Daten nach, dasse wieder passen.
    Und Spalte zufügen ist gar kein Thema - solange sie Nullwerte erlaubt. Und auch bei ohne Nullwerte kann man mittels Defaultwerten bewirken, dass der Test-Datenbestand trotz Struktur-Änderung valide bleibt.
    Also habe jetzt mal das ganze DataSet neu generiert das alte in pmdbDataSetorig umbenannt und das neue nach dem richtigen Namen benannt der Fehler bleibt weiterhin bestehen...
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Was soll ich sagen? Dann liegt der Fehler wahrscheinlich (nicht sicher) woanders.

    Tja, mit DB auffm Server ist echt blöd, insbesondere das Thema Backup ist nicht lustig - oder hast du beim Backuppen auch die DB gesichert? Weil ohne die passende DB ist das Anwendungs-Backup ja zunächstmal auch nicht viel wert.
    Fehler ist behoben -.- aus irgend einem Grund hat er mir das Häkchen rausgemacht mit der Update anweisung als ich den Sort Teil in den SQL Befehl reingemacht hab.
    EDIT: Habe das Programm jetzt kompiliert und da erscheint wieder derselbe Fehler:

    EDIT2: Jetzt auf einmal auch wieder im Studio selber...
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Orion“ ()