Laden...

Fehlermeldung beim schreiben auf SQL

Erstellt von NoLimit vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.528 Views
N
NoLimit Themenstarter:in
191 Beiträge seit 2007
vor 15 Jahren
Fehlermeldung beim schreiben auf SQL

verwendetes Datenbanksystem: SQL 2005

Guten Morgen!

Bei folgendem Code


            using (dbBodySpoolDataContext datenbank = new dbBodySpoolDataContext())
            {
                Properties.Settings.Default.Reload();
                spalte = new Spalten() { Seriennummer = (SN(s)), BK = dblres1, CK = dblres2, DK = dblres3, Kürzel = Kuerzel };
                
                datenbank.Spalten.InsertOnSubmit(spalte);
                datenbank.SubmitChanges();
            }

erhalte ich diese Fehlermeldung

Das ganze hat so auch schon funktioniert. Musste aber zwischenzeitlich an der Datenbank etwas ändern, und kann nun leider nicht nachvollziehen woher dieser Fehler nun kommt.

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil:

3.511 Beiträge seit 2005
vor 15 Jahren

Für mich sieht es so aus, das du auf einer der Spalten ein Check Constraint liegen hast, und du ein ungültigen Wert in einen der Parameter schmeißt.

Sowas lässt sich sehr gut mit dem SQL Profiler nachvollziehen. Einfach anschmeißen und das INSERT Statement beobachten.

Musste aber zwischenzeitlich an der Datenbank etwas ändern, und kann nun leider nicht nachvollziehen woher dieser Fehler nun kommt.

Wenn du noch weist was (und das sollte man ja wissen), ist es doch noch einfacher herauszufinden.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

N
NoLimit Themenstarter:in
191 Beiträge seit 2007
vor 15 Jahren

Ich hatte der Tabelle 2 neue Spalten hinzugefügt. Danach trat dieser Fehler auf.

Ich hab diese nun testweise wieder entfernt, und alles läuft wieder wie es soll.
Leider hab ich keinen Plan warum das mit den 2 neuen Spalten nicht so will.
Ich muss dazu sagen, es ist mein ersten Projekt mit einem SQL-Server ...

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil:

3.511 Beiträge seit 2005
vor 15 Jahren

Haben diese beiden neuen Spalten ein NOT NULL? Wenn ja, liegt es daran. Die Spalten wollen mit einem Wert gefüllt werden.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

N
NoLimit Themenstarter:in
191 Beiträge seit 2007
vor 15 Jahren

Ich hatte sie so geändert dass auch NULL erlaubt ist. Kein Erfolg.
Aber auch nachdem ich ihnen Werte zugewiesen hatte war der Fehler nicht weg 🤔

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil:

3.511 Beiträge seit 2005
vor 15 Jahren

Hmm, schau dir mal an, was wirklich zum SQL Server geschickt wird (über den SQL Profiler) und führe dann das INSERT was im SQL Profiler auftaucht 1:1 im Management Studio aus. Da sollte dann eine genauere Fehlermeldung stehen.

Habe zwar zum Anfang viel mit Linq gemacht, aber momentan gar nicht mehr. Deswegen weis ich nicht 100%ig was er will. Sind bis jetzt an sich nur Vermutungen 😉. Aber wenn eine neue Spalte dazugekommen ist, kann es ja nur an diesem Kontext liegen.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

N
NoLimit Themenstarter:in
191 Beiträge seit 2007
vor 15 Jahren

Mal eine ganz andere Frage.

Ich hab den Primärschlüßel auf "Seriennummer" festgelegt.
Die SN besteht aus einem Buchstaben und einer max. 4-stelligen Zahl.
Also z.B. A123. Wie lege ich die Sortierreihenfolge fest dass ich nicht

C1
C10
C100
C101
C102
C103
C104
C105
C106
C107
C108
C109
C11
C110

sondern eben

C1
C2
C3
.
.
.

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil:

L
770 Beiträge seit 2006
vor 15 Jahren

Schneide den erseten Buchstaben weg, Konventiere es zu einem int Typ und sortiere nach dem.

So mach ich es meistens, daher hoffe ich auch, eine andere Lösung hier zu erhalten 🙂
lg Lion

lg Lion

N
NoLimit Themenstarter:in
191 Beiträge seit 2007
vor 15 Jahren

Wo soll ich da den ersten Buchstaben wegschneiden?
Die Tabelle geht von A0 - A999, dann geht es mit B0 - B999 weiter. Und das läuft dann eben bis Z durch

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil:

L
770 Beiträge seit 2006
vor 15 Jahren

Ja, aber dann hast du den Buchstaben und die Zahl, man kann ja mehr als ein Feld bei Order By angeben...

Order By Buchstabe (A -> Z), Zahl

lg Lion

lg Lion

N
NoLimit Themenstarter:in
191 Beiträge seit 2007
vor 15 Jahren

Wo genau gibst du das "order by" an? Glaub langsam blick ich echt nimmer durch X(

Hab schon paar graue Haare mehr!

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil:

N
NoLimit Themenstarter:in
191 Beiträge seit 2007
vor 15 Jahren

Mit


SELECT     Seriennummer, BK, CK, DK, Timestamp
FROM         Spalten
GROUP BY BK, CK, DK, Seriennummer, Timestamp
ORDER BY Timestamp, Seriennummer

Bekomm ich die Tabelle wie ich sie gerne hätte.
Aber das ist ja leider nur eine Abfrage ...

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil:

3.511 Beiträge seit 2005
vor 15 Jahren

Wo brauchst du denn sonst die Reihenfolge, wenn nicht in einer Abfrage?

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

N
NoLimit Themenstarter:in
191 Beiträge seit 2007
vor 15 Jahren

Wirklich gute Frage!
Hatte da wohl nen ganz üblen Denkfehler! Aber ist ja auch schon Freitag, und kurz vor Feierabend 😉

Hab jetzt einfach meine Abfrage im DataSet geändert, und schon sieht das richtig nett aus!

Bleibt nur noch der Fehler von heute morgen... Aber das reicht auch am Montag noch

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil: