+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 15 von 18

Daten von VB.NET in Access Datenbank schreiben

Diskussion über Daten von VB.NET in Access Datenbank schreiben in .NET der Kategorie Programmierung; Guten Morgen zusammen! Ich verzweifle und hoffe das ihr mir helfen könnt Und zwar habe ich eine Windows Form in ...

  1. #1
    Reg.-Benutzer
    Reg.-Datum
    28.04.2009
    Beiträge
    32

    Standard Daten von VB.NET in Access Datenbank schreiben

    Guten Morgen zusammen!

    Ich verzweifle und hoffe das ihr mir helfen könnt

    Und zwar habe ich eine Windows Form in VB.NET (Visual Studio 2010) in die ich verschiedene Daten schreibe (Textbox, Checkbox und RichTextBox).
    Diese Daten sollten daraufhin in eine Access 2010 Datenbank geschrieben werden.

    Habe nun schon mehrere Befehle zum befüllen der Datenbank ausprobiert aber habe immer die gleichen Fehler, komme jedoch nicht auf die Lösung des Problems:

    Fehlermeldung:
    Invalid SQL statement; expected 'Delete', 'Insert', 'Procedure', 'Selet', or 'Update'.


    1. Versuch:
    Code:
    Dim conn As New OleDbConnection("Provider =" & "Microsoft.ACE.OLEDB.12.0;Data Source = P:\garantien.accdb")
                Dim sqlString As String = "INSERT INTO Erfassung (Bearbeiter, Fehlerbeschreibung, Erledigt)" & "VALUES ('" & Me.txtZeichen.Text & "', '" & Me.rtxFehlerbeschreibung.Text & "', '" & Me.chxErledigt.Checked = True & "')"
                Dim cmd As New OleDbCommand(sqlString, conn)
    
                Try
                    conn.Open()
                    cmd.ExecuteNonQuery()
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
                conn.Close()
                MessageBox.Show("Neuer Datensatz eingetragen")

    2. Versuch:
    Code:
    Dim con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=P:\garantien.accdb")
                Dim cmd As New OleDb.OleDbCommand
                cmd.Connection = con
                cmd.CommandText = "INSERT INTO Erfassung (Bearbeiter, Fehlerbeschreibung, Erledigt) VALUES ('" & Me.txtZeichen.Text & "', '" & Me.rtxFehlerbeschreibung.Text & "', '" & Me.chxErledigt.Checked = True & "')"
    
    
                Dim data As New OleDb.OleDbDataAdapter(cmd)
                Dim ds As New DataSet
    
                data.Fill(ds)
    
                MsgBox("Gespeichert")
                Me.Close()
    Zuoberst habe ich noch folgende Imports durchgeführt:
    Code:
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    Imports System.Data
    Ich hoffe echt ihr könnt mir helfen. Es wird sicher nur wieder ein kleiner Fehler sein aber ich seh ihn


    EDIT:
    Uups hab grad gesehen das es hier in eigenes Forum für .NET gibt. Kann man das noch dahin verschieben?
    Geändert von Chlochou (16.01.2012 um 09:09 Uhr)

  2. #2
    Reg.-Benutzer Avatar von trollr
    Reg.-Datum
    27.01.2011
    Beiträge
    174

    Standard

    Was spricht dagegen ein Access Formular zu verwenden? Ansonsten kann ich nur davon abraten Access zu nutzen.

    Wenn du es in .Net machen willst nimm eine ordentliche Datenbank (MySQL, MSSQL, Postgres, Oracle) oder falls es eine Single-User Anwendung ist nimm eine embedded DB.

  3. #3
    Reg.-Benutzer
    Reg.-Datum
    28.04.2009
    Beiträge
    32

    Standard

    Hm dagegen? Es sollte so gemacht werden damit ich was lerne und damit ich etwas zu programmieren habe

    Es ist einfach so das es eine interne Applikation werden sollte worauf ca. 4 Leute Zugriff haben (lokal installiert). Mit der Software kann man neue Garantien von Geräten eintragen, Garantiefälle auslösen, Suchen und ähnliches.

    Das komische ist eben das ich den genau gleichen Code in einem anderen Projekt verwendet habe (Einfach andere Übergabe Texte) und es da funktioniert hat
    Die Verbindung zur Datenbank funktioniert.

  4. #4
    biu
    biu ist offline
    Reg.-Benutzer
    Reg.-Datum
    26.07.2011
    Beiträge
    25

    Standard

    er sagt dir doch das der SQL-string falsch ist. den kannst ja beim debuggen einfach mal rauskopieren und in Access einfügen

  5. #5
    Reg.-Benutzer
    Reg.-Datum
    28.04.2009
    Beiträge
    32

    Standard

    inwiefern in Access reinkopieren? steh wohl auf dem Schlauch^^

  6. #6
    Reg.-Benutzer Avatar von trollr
    Reg.-Datum
    27.01.2011
    Beiträge
    174

    Standard

    Natürlich habe ich nichts dagegen. Für das Szenario ist Access allerdings trotzdem ungünstig, da es eine Single-User Datenbank ist (vllt haben sie es bei 2010 endlich geändert - aber ich bezweifel es). Sprich: Greift jemand drauf zu ist es für die anderen gesperrt. Bei 4 Leuten wohl vernachlässigbar aber sollte man trotzdem beachten.

    Zum lernen gehört aber nicht nur das programmieren, sondern auch das konzipieren. Meines Erachtens sogar der wichtigere Part.

    Lass dir das erstellte Statement aus der Variable komplett ausgeben. Kopier es in den Access SQL Editor und er sollte dir eine genauere Fehlermeldung geben. Ansonsten gib uns das generierte Statement. Im Code finde ich keinen Fehler. Könnte höchstens an '' oder "" liegen.

  7. #7
    Reg.-Benutzer
    Reg.-Datum
    28.04.2009
    Beiträge
    32

    Standard

    Hm klar. Es ist eben so das theoretisch wirklich nur jmd drauf sein sollte. Ist es denn möglich es auch relativ simpel mit MySQL oder so zu lösen? Mit MySQL hab ich noch recht wenig Erfahrung, kann da nur eben Datenbanken erfassen etc.

    Und die Verbindung ist da auch wieder so "kompliziert"?

  8. #8
    Reg.-Benutzer Avatar von trollr
    Reg.-Datum
    27.01.2011
    Beiträge
    174

    Standard

    Code:
    Imports MySql
    Imports MySql.Data
    Imports MySql.Data.MySqlClient
    
    '...
    
    Dim conn As New MySqlConnection
    Dim myConnectionString As String
    myConnectionString = "server=host;uid=user;pwd=pw;database=db; "
    conn.ConnectionString = myConnectionString
    Try
    conn.Open()
    Catch ex As Exception
    MessageBox.Show(ex.Message)
    End Try
    conn.close
    Quelle: http://www.vb-paradise.de/allgemeine...vb2005-vb2008/

    Würde fast sagen es ist leichter als zu einer Access DB. Das arbeiten mit MySQL ist ähnlich wie bei Access, da die "Datenbanksprache" bei allen gängigen Datenbank fast identisch ist.
    Geändert von trollr (16.01.2012 um 15:21 Uhr)

  9. #9
    Reg.-Benutzer
    Reg.-Datum
    28.04.2009
    Beiträge
    32

    Standard

    Okay ich versuch das mal Danke

    Und zum anderen Problem weisst du sonst nichts?

  10. #10
    Reg.-Benutzer Avatar von trollr
    Reg.-Datum
    27.01.2011
    Beiträge
    174

    Standard

    Lass dir mal aus Bsp. 1. sqlString ausgeben und poste das Ergebnis.

  11. #11
    Reg.-Benutzer
    Reg.-Datum
    28.04.2009
    Beiträge
    32

    Standard

    okay.. jetzt schäm ich mich grad ein wenig vor euch

    Mein Fehler liegt bei der Checkbox..
    Hab jetzt alles nur mit textbox und RichTextBox getestet -> Wunderbare Daten in meiner DB.. Also muss wohl was an meiner Checkbox nicht passen

    Tut mir echt verdammt Leid das ich euch damit belästigt hab.



    Aber kannst du mir noch dabei helfen? Ich hab ne normale Checkbox die bei mir chxErledigt heisst. In der Access Datenbank hab ich Wahr oder Falsch genommen. Wenn die Checkbox angehäckelt ist, dann ist der Fall erledigt, sonst eben nicht. Hab mal zur Übersicht die Textboxen etc. rausgenommen..

    Nun mach ich den Insert so:
    Code:
    Dim sqlString As String = "INSERT INTO Erfassung (Erledigt)" & "VALUES ('" & chxErledigt.Checked & "')"
    Dann kommt die Fehlermeldung:
    Data type mismatch in criteria expression

  12. #12
    Reg.-Benutzer Avatar von streffin
    Reg.-Datum
    23.06.2009
    Beiträge
    293

    Standard

    Code:
     Me.chxErledigt.Checked = True
    und
    Code:
    Me.chxErledigt.Checked
    sollte eigentlich beides den selben Bool Wert ergeben.

    Das erste ist ne Expression, aber Wert ist der gleiche.
    Ich würd jetzt mal ungesehen, ungestestet, raten (educated guess) dass der OLEDB Treiber das nicht sauber zu Access Boolean übersetzt. In Access wäre checkbox.checked ein -1 statt einer 1...

    Offen gesagt, bevor ich freiwillig Access verwend, parse und schreib ich mir XML.... selbst das ist imo besser als Access.


    Ps.: Schäm dich nich, wirklich nich. Da gabs schon GANZ andere Fragen.

    Gruß
    Sven
    Geändert von streffin (16.01.2012 um 19:37 Uhr)
    "Es geht nicht" ist keine adequate Fehlerbeschreibung !

  13. #13
    Reg.-Benutzer
    Reg.-Datum
    28.04.2009
    Beiträge
    32

    Standard

    Zitat Zitat von streffin Beitrag anzeigen
    Code:
     
    Me.chxErledigt.Checked = True
    Also wenn ich das nehme kommt wieder folgender Fehler:
    Invalid SQL statement; expected Delete, insert, procedure, select or update

    und
    Zitat Zitat von streffin Beitrag anzeigen
    Code:
    Me.chxErledigt.Checked
    Und hier bekomme ich wieder den Fehler:
    Data type mismatch in criteria expression

  14. #14
    Reg.-Benutzer
    Reg.-Datum
    04.05.2001
    Ort
    Neuburg / Donau
    Beiträge
    451

    Standard

    Hallo

    so wie es aussieht weißt du deinem Boolean in der Access- DB einen String zu

    Dein Code
    Code:
    Dim sqlString As String = "INSERT INTO Erfassung (Erledigt)" & "VALUES ('" & chxErledigt.Checked & "')"
    So denke ich sollte es gehen Code
    Code:
    Dim sqlString As String = "INSERT INTO Erfassung (Erledigt)" & "VALUES (" & chxErledigt.Checked & ")"
    Und schämen braucht man sich nie, man sieht ja, dass du dir schon vorab deine gedanken gemacht hast, HILFE bekommt man in diesem Fall hier eigentlich immer.

    Gruß Hans-Jörg
    Glaube nie einer Zeit, die dein Computerprogramm selbst gestoppt hat.

  15. #15
    Reg.-Benutzer
    Reg.-Datum
    28.04.2009
    Beiträge
    32

    Standard

    Wooow danke viel viel mals!! Es funktioniert nun endlich
    Was so ein doofes Hochkomma nicht alles anrichten kann

    Da ist bei mir noch eine Frage aufgetaucht.
    Und zwar sind das ja eig. SQL Statements, oder?
    Jetzt wäre es doch möglich eig. den Code zu "kopieren" und einfach statt Insert into eine Suche daraus zu generieren (Select * from..)?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. C# daten in access db schreiben
    Von zerberos im Forum .NET
    Antworten: 14
    Letzter Beitrag: 16.09.2007, 17:20
  2. Daten online in Datenbank schreiben
    Von sheyder im Forum Datenbanken
    Antworten: 8
    Letzter Beitrag: 18.05.2005, 17:29
  3. daten von einer textdatei in die datenbank schreiben
    Von azubi-tigerente im Forum Datenbanken
    Antworten: 4
    Letzter Beitrag: 02.12.2004, 12:21
  4. Daten aus einer Datenbank in eine Listbox schreiben
    Von Cleo im Forum C++: Compiler, IDEs, APIs
    Antworten: 4
    Letzter Beitrag: 01.03.2002, 08:46
  5. XML Daten in Datenbank schreiben
    Von MK im Forum Datenbanken
    Antworten: 0
    Letzter Beitrag: 29.09.2000, 11:52

Die häufigsten Suchbegriffe für diese Seite:

access 2010 datenbank

visual basic 2010 in Access datenbank schreiben