ForeignKeyConstraint FK_

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

Es gibt 81 Antworten in diesem Thema. Der letzte Beitrag () ist von Amelie.

    ​Die Kundennummer gibts ja nicht umsonst....

    Die Kundennummer ist dafür nicht ausschlaggebend. Wenn ich z.B. zwei Herbert Müller in der Datenbank habe, ist das ausschlaggebende zum Auseinanderhalten einzig und alleine deren PK.
    Denn obwohl die Kundennummern mit einem Random erstellt werden, könnte dieses Random bei beiden Herbert Müller -> HM-xxxxx theoretisch zwei mal dieselbe Zahl generieren.

    Wenn sich an deinen letzten Code (deine Klick_Event's und extra Sub's die du geschrieben hast) nichts geändert hat ...
    ​Jetzt muss ich zuerst einen Weg finden das z.B. meine DummiUser nicht 2mal angelegt werden , also eine Prüfung.

    Dann werden die beiden Dummy-User doch nur angelegt wenn du auf einen deiner beiden 'DummyKunden' Button klickst?

    Fehler bei Löschung

    Hallo

    Mit diesem Code wollte ich meine Tabellen leeren und den PK Increment wieder auf 0 setzen. Bekomme Folgenden Fehler. Ratlos bin.
    Habe zum testen eine Neue Tabelle angelegt, weil die anderen fast alle einen PK & FK haben.


    VB.NET-Quellcode

    1. Private Sub DatenbankLeerenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DatenbankLeerenToolStripMenuItem.Click
    2. Dim verbindung As System.Data.SqlServerCe.SqlCeConnection _
    3. = New SqlCeConnection("datasource=B:\Dokumente\DB_1.sdf")
    4. Try
    5. verbindung.Open()
    6. Dim sql As String = "TRUNCATE TABLE Text"
    7. Dim cmd As SqlCeCommand = New SqlCeCommand(sql, verbindung)
    8. cmd.ExecuteNonQuery()
    9. verbindung.Close()
    10. Catch ex As Exception
    11. MessageBox.Show(ex.Message)
    12. End Try
    13. End Sub
    Bilder
    • token-1.jpg

      51,63 kB, 496×169, 110 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    ErfinderDesRades schrieb:

    Dann nochmal die SqlCe-Doku konsultieren.


    Nach langem googlen usw. wird das wohl nicht unterstützt.
    Was ich aber noch immer nicht gefunden habe, wie kann ich nach dem löschen der Test-Datensätze nun den Increment wieder bei 1 beginnen lassen.

    Ideen?

    DANKE
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Amelie schrieb:

    Nach langem googlen usw.
    Bei mir ging das ganz flott, ich hab nur eingegeben: "SqlCe: truncate table" - da fanden sich schon einschlägige Treffer auf Stackoverflow

    Amelie schrieb:

    wie kann ich nach dem löschen der Test-Datensätze nun den Increment wieder bei 1 beginnen lassen.

    Ideen?
    weiter googeln: "SqlCe: set Identity increment seed"

    Oder nach einer richtigen SqlCe-Sql-Dokumentation suchen.
    Ich geh mal davon aus, dass es auch zum SqlCe-Sql-Dialekt irgendwo eine veröffentlichte Referenz-Dokumentation gibt.
    Also ich habe es nun herraus gefunden und ein Workaround gemacht um meine Tabellen zurückzusetzen.
    Die andere SQL-Befehle kennt SQLCe nicht.
    Und warum das nur mit der kleinen Verzögerung klappt weiß ich nicht, ist aber auch nicht tragisch.

    VB.NET-Quellcode

    1. Try
    2. GetSQL("ALTER TABLE Adress ALTER COLUMN ID IDENTITY (1,1)")
    3. Threading.Thread.Sleep(100)
    4. GetSQL("ALTER TABLE Angebote ALTER COLUMN ID IDENTITY (1,1)")
    5. Threading.Thread.Sleep(100)
    6. GetSQL("ALTER TABLE KUAD ALTER COLUMN ID IDENTITY (1,1)")
    7. Threading.Thread.Sleep(100)
    8. GetSQL("ALTER TABLE KUAG ALTER COLUMN ID IDENTITY (1,1)")
    9. Threading.Thread.Sleep(100)
    10. GetSQL("ALTER TABLE Kunden ALTER COLUMN ID IDENTITY (1,1)")
    11. Threading.Thread.Sleep(100)
    12. GetSQL("ALTER TABLE KURC ALTER COLUMN ID IDENTITY (1,1)")
    13. Catch ex As Exception
    14. MessageBox.Show(ex.Message)
    15. End Try
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Hilfe für eine Abfrage

    Hey

    Ich bräuchte mal Hilfe wie ich eine Abfrage konstruiere.
    Folgendes ( siehe Bilder ) wenn ein Kunde angelegt wird. Er bekommt ID und KundenNr usw.
    Jetzt klicke ich auf das DGV und es öffnet sich ein Mailformular. Mailaddy wird mitgeschickt.
    Nach absenden der email soll nun das ganze " upgedatet " werden, und zwar dass das Feld erledigt auf True gesetzt wird.

    Ich tue mich gerade schwer mit den Hilfstabellen usw. Bräuchte mal einen Ansatz wie ich nun was mache.
    Eine Funktion welche aus dem eMail-Formular aufgerufen wird? Aber wie?
    Bilder
    • auftrag true.jpg

      280,1 kB, 972×558, 103 mal angesehen
    • auftrag true2.jpg

      189,16 kB, 1.050×551, 105 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Amelie schrieb:

    Eine Funktion welche aus dem eMail-Formular aufgerufen wird? Aber wie?


    Das email-Formular bekommt doch einen Datensatz übergeben.
    von diesem Datensatz ausgehend kann es doch den zugehörigen Angebot-Datensatz abrufen, und auf Erledigt setzen.

    Wenn richtig gemacht, ist da keine Extra-Funktion für erforderlich.

    ErfinderDesRades schrieb:



    Wenn richtig gemacht, ist da keine Extra-Funktion für erforderlich.


    Naja eigendlich mache ich das so: War für mich erstmal der einfachste Weg aber jetzt merke ich das es wohl nicht so ist.


    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    DataGridView Umbenenn

    Ich möchte die Zellenüberschriften ändern aber das klappt nicht.
    Fehler : Kann Datengebundenes...

    Was kann ich tun?

    DataGrid befüllen:

    VB.NET-Quellcode

    1. Public Sub GetSQL(ByVal SQL As String)
    2. Try
    3. Dim conn As New SqlCeConnection
    4. Dim cmd As New SqlCeCommand
    5. conn.ConnectionString = constring
    6. cmd.Connection = conn
    7. cmd.CommandText = SQL
    8. Dim da As New SqlCeDataAdapter(cmd)
    9. Dim dt As New DataTable
    10. conn.Open()
    11. da.Fill(dt)
    12. conn.Close()
    13. frm_main.DGV_Main.DataSource = dt
    14. Catch ex As Exception
    15. MessageBox.Show(ex.Message)
    16. End Try
    17. End Sub


    und das umbenen

    VB.NET-Quellcode

    1. Public Sub dgvheader()
    2. GetSQL("Select KdNr, KdVorname, KdNachname, KdeMail, KdTel from Kunden")
    3. With DGV_Main
    4. .ColumnCount = 5
    5. .Columns(0).HeaderText = "KundenNr"
    6. .Columns(1).HeaderText = "Vorname"
    7. .Columns(2).HeaderText = "Nachname"
    8. .Columns(3).HeaderText = "eMail"
    9. .Columns(4).HeaderText = "Telefon"
    10. End With
    11. End Sub
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    lässt sich leider nicht so ohne weiteres sagen, da der fehler nicht ganz ersichtlich ist, daher mal ins blaue. dgvheader sieht aber ok aus, auch wenn ich nicht weiß, warum du .columncount = 5 machst. die select liefert doch nur 5 spalten?

    1. stimmt der connectionstring?
    2. ist die db überhaupt dort vorhanden?


    Eine grundsätzliche Frage: Warum nutzt du SQLCE? Bei kleinen Anwendungen würde ich dir eher zu SQLite raten.
    Ich glaube CE wird auch gar nicht mehr weiterentwickelt, oder? Vielleicht auch mit dem Gedanken einer SQLServer-Express-Instanz spielen. (Aber nur so am Rand)

    rrobbyy schrieb:

    lässt sich leider nicht so ohne weiteres sagen, da der fehler nicht ganz ersichtlich ist


    Hallo

    Also zum einen habe ich den Fehler gefunden.
    Das .ColumCount 5 war die Ursache.
    Habe es nun so gelöst, was wunderbar klappt.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. conn.Open()
    2. dt.Clear()
    3. da.Fill(dt)
    4. frm_main.DGV_Main.DataSource = dt
    5. conn.Close()
    6. headlines(header) '<=== Hier wechsel ich nun per Select Case die Headlines.


    VB.NET-Quellcode

    1. 'Main Datagrid Überschriften
    2. Public Sub headlines(ByVal headers As String)
    3. Select Case headers
    4. Case "default"
    5. With frm_main.DGV_Main
    6. .Columns(0).HeaderText = "KundenNr"
    7. .Columns(1).HeaderText = "Vorname"
    8. .Columns(2).HeaderText = "Nachname"
    9. .Columns(3).HeaderText = "eMail"
    10. .Columns(4).HeaderText = "Telefon"
    11. End With
    12. Case "angebote"
    13. With frm_main.DGV_Main
    14. .Columns(0).HeaderText = "KundenNr"
    15. .Columns(1).HeaderText = "Vorname"
    16. .Columns(2).HeaderText = "Nachname"
    17. .Columns(3).HeaderText = "Datum"
    18. .Columns(4).HeaderText = "erledigt"
    19. End With
    20. Case "kundelong"
    21. 'ToDo
    22. '
    23. '
    24. End Select
    25. End Sub


    Aufruf:

    VB.NET-Quellcode

    1. Public Sub dgvheader()
    2. GetSQL("Select KdNr, KdVorname, KdNachname, KdeMail, KdTel from Kunden")
    3. headlines("angebote")
    4. 'ToDo Weitere abfragen welche per Button geschickt werden
    5. End Sub




    SQLCe oder SQLite?
    Nun ich habe das VS2012 und da ist das SQLCe mit drin und ich traue mich echt nicht hier am System noch etwas zu ändern.
    Beim letzten mal ging das schon in die Hose. Window7-64Bit habe mal mit VS 2017 versucht bekomme aber ständige Abstürze. ;(
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    SQL Update ???

    Hallo
    Beim versuche meine Tabelle upzudaten bekomme ich diesen Fehler. Hab nun schon etliches was ich bei goo&Co gefunden habe ausgetestet.

    Tabelle ist da, Spalte ist auch da und die Variable ist auch da und trotzdem kommt der Fehler mit der Spalte. Hmmmm????

    SQL-Abfrage

    1. SetSQL2("UPDATE Angebote SET erledigt = '@True' WHERE KUAG.ID_Angebote = '" & angebotid & "'")
    Bilder
    • sqlupdate.jpg

      263,12 kB, 1.085×579, 99 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    @ErfinderDesRades
    Ja die Strucktur ist links zu sehen.


    Keine Hilfe????
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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