Probleme bei Berechneten Spalten (MySQL)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Probleme bei Berechneten Spalten (MySQL)

    Hallo,

    ich habe in meiner Tabelle (MySQL Datenbank) eine berechnete Spalte (STORED). Wenn ich jetzt im Formular einen neuen Datensatz speichern will bekomme ich folgenden Fehler:

    Quellcode

    1. Me.TblSdAngebotsartTableAdapter.Update(Me.DbLeiKaDataSet.tblSdAngebotsart)

    ​{"The value specified for generated column 'AngebotsartAnzeige' in table 'tblSdAngebotsart' is not allowed."}

    Im Dataset ist die Spalte auf ReadOnly gesetzt, im Formular selber ist Sie an kein Steuerelement gebunden.

    Jetzt stehe ich ehrlich gesagt auf den Schlauch. Hat jemand eine Idee was ich eventuell noch einstellen muss?

    Gruß, AndPod
    Dataset ist die Spalte auf ReadOnly gesetzt

    Was vermutlich erklärt, warum die nette Meldung bekommst... oder irre ich mich?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Der einzige Unterschied zwischen Datenbankspalte und Datatable-Spalte ist, das er die Expression nicht übernommen hat (keine Ahnung ob das MySQL bedingt ist). Da er aber in der Datenbank selber das Feld ordentlich berechnet sollte das eigentlich kein Problem sein.
    Ich habe ehrlich gesagt das Gefühl, das Visual Studio das Readonly ignoriert. Hab sogar die Tabelle neu ins Formular eingebunden, half aber auch nichts.

    AndPod schrieb:

    Ich habe ehrlich gesagt das Gefühl, das Visual Studio das Readonly ignoriert
    Passiert das beim generieren des DS in VS? Was wird in der berechneten Spalte genau berechnet und machst du das im Dataset auch genau so - könntest du das noch genauer erklären...
    Ich bilde in der Spalte den Inhalt von 3 Spalten der gleichen Tabelle ab, es wird nichts berechnet.
    Wenn ich die Tabelle ins Dataset einbinde übernimmt er die Feldeigenschaften (Datentyp String, Anzahl Zeichen) aber nicht den Ausdruck für die Berechnung (Expression). Das Feld wird auch nicht auf Readonly gesetzt.
    Nachdem die ersten Tests fehl schlugen habe ich noch Readonly auf True gesetzt, das Ergebnis war aber das gleiche.
    Im Formular ist wie bereits erwähnt kein Steuerelement mit dem Feld verknüpft, ich lass es nicht mal im DatagridView anzeigen.
    Sobald ich einen Datensatz speichere (egal ob neu oder bereits vorhanden) kommt der entsprechende Fehler.

    Es gibt zwar zwei Möglichkeiten wie ich das Problem umgehe (ich bilde den Feldinhalt per Code und lasse es als normale Spalte, oder ich bilde die berechnete Spalte im Formular wo ich sie benötige), aber das würde ich nur als letzten Ausweg machen wollen.

    Ich hänge mal noch ein Bild an, wie die Datatable im Dataset aussieht. Bis auf Readonly habe ich nichts verändert.
    Bilder
    • BerechneteSpalte.png

      17,92 kB, 566×368, 99 mal angesehen
    Berechnete Spalten werden nicht ordentlich ins DS übertragen, denke ich.
    Ich vermute einmal, dass du die berechnete Spalte als eigene selbstständige Spalte im Dataset-Designer erstellen musst
    und die Spalte AngebotsartAnzeige beim Erstellen (diese Spalte bleibt einfach abgewählt) des DS einfach weglässt.
    Du fügst in der Tabelle eine berechnete Spalte hinzu und gibst die gleiche Berechnungsformel als Expression an und lässt das DS selbst rechnen.
    Ich glaube, dann funktioniert das ganze...