Syntaxfehler in der INSERT INTO-Anweisung

  • VB.NET

Es gibt 38 Antworten in diesem Thema. Der letzte Beitrag () ist von Westerwälder.

    Syntaxfehler in der INSERT INTO-Anweisung

    Hallo zusammen,

    stelle zur Zeit meine Datenverwaltung um. Arbeite mit einer Accsess-Datenbank. Nun bekomme ich beim Erstellen eines Kalenders den Fehler: Syntaxfehler in der INSERT INTO-Anweisung.

    VB.NET-Quellcode

    1. Private Osterdatum As Date
    2. Dim verbindung As OleDb.OleDbConnection
    3. Dim Builder As OleDb.OleDbCommandBuilder
    4. Dim da As OleDb.OleDbDataAdapter
    5. Dim dt As DataTable
    6. Dim I As Integer = 0
    7. Private Sub Kalendererstellen()
    8. verbindung = New OleDb.OleDbConnection
    9. verbindung.ConnectionString = Daten.ProviderZeile & "C:\Testdaten\MBSOFT.mdb"
    10. verbindung.Open()
    11. dt = New DataTable
    12. Dim dgv As New DataGridView
    13. Dim ds As New Dataset
    14. da = New OleDb.OleDbDataAdapter("SELECT * FROM Kalender", verbindung)
    15. Builder = New OleDb.OleDbCommandBuilder(da)
    16. da.Fill(dt)
    17. da.UpdateCommand = Builder.GetUpdateCommand
    18. da.InsertCommand = Builder.GetInsertCommand
    19. Dim Startdatum As Date = CDate("01.01.2008")
    20. Dim Stopdatum As Date = CDate("31.12.2115")
    21. Dim Laufdatum As Date = CDate("31.12.2007")
    22. Dim betrag As String = "0,00"
    23. Me.I = 0
    24. Do While Laufdatum < Stopdatum
    25. Laufdatum = Laufdatum.AddDays(1)
    26. Me.I += 1
    27. Dim workRow As DataRow = dt.NewRow
    28. workRow(0) = Me.I ' Primärschlüssel - Integer
    29. workRow(1) = Laufdatum.Year ' Jahreszahl - Integer
    30. workRow(2) = Laufdatum.DayOfYear ' Tag des Jahres - Integer
    31. workRow(3) = Laufdatum.Date ' Datum - Date (kurz)
    32. workRow(4) = Strings.Left(Laufdatum.Date.ToShortDateString, 5) ' Kurzdatum (23.09)
    33. workRow(5) = Wochentag(Laufdatum.Date) ' Wochentagname (Montag) - String
    34. workRow(6) = Feiertage(Laufdatum.Date) ' Feiertag (Tag der Arbeit) - String
    35. workRow(7) = Ereignistage(Laufdatum.Date) ' Ereignistag aber kein Feiertag (Nikolausabend) - String
    36. workRow(8) = False ' Wetterdaten aus Internet gelesen - Boolean
    37. workRow(9) = "#" ' Wetterdaten - String
    38. workRow(10) = 0 ' Wetterdaten (Max - Tagestemperatur) - Double
    39. workRow(11) = 0 ' Wetterdaten (Min - Tagestemperatur) - Double
    40. workRow(12) = betrag ' Tagespreis Benzin (zur Zeit als Text - Änderung in Währung vorgesehen) - String
    41. workRow(13) = betrag ' Tagespreis Heizöl (sonst wie Tagespreis Benzin)
    42. workRow(14) = betrag ' Tagespreis Holzpellets (sonst wie Tagespreis Benzin)
    43. dt.Rows.Add(workRow)
    44. Loop
    45. Me.Controls.Add(dgv)
    46. With dgv
    47. .Height = Me.Height - 55
    48. .Width = Me.Width
    49. End With
    50. dgv.DataSource = dt
    51. verbindung.Close()


    Fehler tritt hier auf:

    VB.NET-Quellcode

    1. Private Sub Kalendererstelllung_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. da.Update(dt)
    3. MsgBox("Gespeichert")
    4. Application.Exit()
    5. End Sub
    Gruß Markus
    Ja ok, zugegeben.

    So gehts:


    VB.NET-Quellcode

    1. da.InsertCommand.CommandText = "Insert into Kalender (ID, Jahr, Jahrestag, Datum, DatumKurz, Wochentag, Feiertag, Ereignistag, Wettergelesen, Wetterdaten," & _
    2. "Max_Temperatur, Min_Temperatur, Benzinpreis, Heizoelpreis, Pelletspreis)"


    Danke
    Gruß Markus
    Ist echt Neuland für mich: Versuche nun aus einer Datatable ein listview zu füllen-

    VB.NET-Quellcode

    1. verbindung = New OleDb.OleDbConnection
    2. verbindung.ConnectionString = Daten.ProviderZeile & "C:\Testdaten\MBSOFT.mdb"
    3. verbindung.Open()
    4. dt = New DataTable
    5. Dim dgv As New DataGridView
    6. da = New OleDb.OleDbDataAdapter("SELECT * FROM Kalender", verbindung)
    7. Builder = New OleDb.OleDbCommandBuilder(da)
    8. da.Fill(dt)
    9. verbindung.Close()
    10. Dim Kalenderzahl As Integer = 0
    11. Dim Startdatum As Date = CDate("31.12.2007")
    12. Dim Differenz As TimeSpan = Now.Subtract(Startdatum)
    13. Dim Von As Integer = Differenz.Days - 3
    14. Dim Bis As Integer = Differenz.Days + 10
    15. ' Der Kalender startet am 01.01.2008
    16. ' Nun möchte ich die Tage (drei Tage zurück und zehn Tage von heute) in einem Listview anzeigen.
    17. ' Die Spalte ID ist der Primärschlüssel und steht auf Autowert
    18. ' Wie selektiere ich das nun ?
    19. For Me.I = Von To Bis
    20. V.MeinListviewItem = New ListViewItem
    21. With V.MeinListviewItem
    22. Dim Zeile As DataRow = dt.Select(Me.I.ToString & "," & "= ID")
    23. .Text = Zeile(2).ToString
    24. End With
    25. Me.ListView_Kalenderansicht.Items.Add(V.MeinListviewItem)
    26. Next
    Gruß Markus
    Ja und Nein.
    Im Grunde ist es mein Terminkalender und soll mir beim Programmstart die Daten anzeigen. Der user (also ich) soll da nichts ändern können.


    Und ich finde für diese Aufgabe ein ListView einfach optisch stilvoller als ein DGV.
    Die Datenaufbereitung basiert in einer anderer Form, bzw. Abhängigkeit von Tabellen.
    Wenn es aus der Tabelle nicht gehen sollte, muss ich in alter Form auf die Datenbank zurückgreifen und die DataTable fallen lassen.
    Gruß Markus

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Westerwälder“ ()

    OK, ich möchte ja die Sache wirklich richtig lernen und verstehen. Im Grunde bin ich ein GW-Basic-Programmierer.

    Es ist nun der Terminkalender, es folgen ja mehr Sachen. Imobilien, Finanzen usw.
    Heisst das nun ListView verbannen und never?

    Frage nun nochmal:

    Kann man einen Select auf eine DataTable machen oder nicht?

    Bitte nicht falsch verstehen.
    Gruß Markus

    Westerwälder schrieb:

    Heisst das nun ListView verbannen und never?
    Ja.

    Westerwälder schrieb:

    Kann man einen Select auf eine DataTable machen oder nicht?
    Kann man, braucht man aber fast nie.
    Wobei unter Select nicht Sql verstanden werden darf, denn Sql ist eine DB-Sprache, ist nicht vb.net.
    In vb.net gibts Linq, damit kann man Selects formulieren.
    Wie gesagt: Braucht man fast nie, kümmer dich erstmal um die "konventionelle" Vorgehensweise - gugge vier Views-Videos
    Im Grunde stehe ich nun am Scheidepunkt. Schreibe nun das Programm in der vierten Version um.
    Es wird Winter und ich bin Frührentner - muss ja was zu tun haben. grins
    Sicher möchte ich mal eine Version haben, die dem Stand der Technik entspricht.

    Bin auch gerne mal bereit, jemanden von den Spezialisten hier im Forum eine Kopie der letzten Version zu senden, der mir dann sagen, dass ich total da neben liege.

    OK, denke dann schliesse das Thema.

    Bin anders dazu gekommem (EDV)

    Hauptschule, Handelsschule, Banklehre, Kraftwerksbauer. Also kein Informatiker oder Studierter.
    Angefangen mit einem ZX 81
    dann commedore 64 - da habe ich der bank schon kleine programme geschrieben
    dann gwbasic im kraftwerksbau

    naja

    war meine zeit.
    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()

    Vorschlag für einen Terminkalender mit Dataset?
    Es gibt millionen Möglichkeiten, Kalender darzustellen. Tages, Wochen, Monats, Jahres-Ansichten, und ich präferiere sogar eine fließende, scrollable Ansicht, die einfach so viel Zeit zeigt, wie in den verfügbaren Platz passt.
    Also wenn da Platz ist für 10 Tage, dann werden eben 10 Tage angezeigt, und man kann auch den Monats- oder Jahres-Übergang in den Focus der Betrachtung scrollen.

    Das Thema ist aber extrem anspruchsvoll, denn die Tage selbst sind berechnete Werte, die inne DB nix verloren haben. Also man zeigt etwas an, was so garnet gespeichert wird, sondern onTheFly auf User-Eingaben hin generiert.
    Databinding allein reicht da nicht aus.

    Willst du dir nicht lieber erstmal was einfachereres vorknöpfen?