tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
14279
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Angelika_25 Angelika_25 ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    93
    Hallo und zwar habe ich folgendes Problem. Ich hab gerade angefangen mich mit Visual Basic 2005 und Datenbankprogrammierung zu beschäftigen. Habe mir auch schon ein Buch darüber gekauft und mehr als einmal gegoogelt!! Also, ich habe zwei Access Tabellen und ich möchte in einem Formular Datensätze in eine Tabelle hinzufügen. In meinem Formular steht:

    ID eingeben:
    Benutzer eingeben: (ComboBox)

    Die Access-Tabelle, in die es hinzugefügt werden soll heißt Benutzer hat folgende Werte:

    Nr (AutoWert)
    ID
    Benutzer

    In dem vb-Formular gibt es noch einen OK-Button und wenn der gedrückt wird, dann sollten die Werte in der Access Tabelle übernommen werden (der AutoWert Nr sollte automatisch um eins erhöht werden------>im Hintergrund.

    Meine Datenbank ist schon eine Datenquelle des Formulars.
    Ich weiß einfach nicht wie ich das hinbekommen soll und vor allem weiß ich nicht was für einen Code ich da brauche.
    Bitte helft mir, ich bin echt am Verweifeln!!

    Liebe Grüße
     

  2. #2
    Tarik_BS Tarik_BS ist offline Rookie
    Registriert seit
    Dec 2007
    Beiträge
    5
    Hi,

    Hinter dem Button würde ich versuchen einen Private Sub mit ADO-Code zu hinterlegen, da kannst Du die Tabelle über recordset ansprechen, also in Deinem Fall:

    Private Sub btnOK_Click

    Dim conn As ADODB.Connection
    Dim rst As New ADODB.Recordset

    Set conn = CurrentProject.Connection

    rst.Open "tbl_Benutzer", conn, adOpenKeyset, adLockOptimistic

    rst.Fields(0).Value = forms![Dein Formular]!ID
    rst.Fields(1).Value =forms![Dein Formular]!Benutzer

    rst.update
    rst.Close
    Set rst = Nothing
    Set conn = Nothing
    End Sub

    Den AutoWert wird im Hintergrund automatisch hochgesetzt, wenn Du es bei den Feldeigenschaften (Datentyp) für Nr. definiert hast.

    Höffentlich, das funktioniert

    Grüße aus Braunschweig
     

  3. #3
    Angelika_25 Angelika_25 ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    93
    Also als erstes danke für die Antwort und ein frohes neues Jahr!! Bin nämlich immernoch nicht weiter...........Ich hab das jetzt mal eingefügt, aber es kommen folgende Fehler:

    "ADODB.Connection" wird blau unterstrichen und als nicht definiert gesehen, das gleiche mit "ADODB.Recordset", "CurrentProject.Connection", "adOpenKeyset" und "adLockOptimistic".

    Danach kommt ja:

    rst.Fields(0).Value = forms![Dein Formular]!ID

    Wenn ich da "Form2" (so heißt mein Formular) eingebe, dann geht das auch nicht, dann wird "forms" blau unterstrichen und als nicht definiert gesehen.

    Was muss ich jetzt machen Bitte helft mir
     

  4. #4
    Avatar von ronaldo84
    ronaldo84 ronaldo84 ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Berlin / Rudow
    Beiträge
    453
    Die Lösung von Tarik_BS ist für das einfügen eines Datensatzes aus Access heraus, also per VBA. Da du aber von VB 2005 (VB.NET) sprichst mußt du zuerst deine Tablle als Datenquelle zu deinem Projekt hinzufügen. Dies machst du über Daten->Neue Datenquelle hinzufügen. Da öffnet sich ein Assistent. Dann wählst du aus Datenbank -> Weiter-> Neue Verbindung erstellen. Dann wählst du die DB aus, gibst ggf. Anmeldedaten ein und testen dann die Verbindung. Dann die Tabellen auswählen die du dem Projekt hinzufügen willst. Danach den Assistenten fertig stellen. Hat alles geklappt, sollten eigentlich die Datenquellen angzeigt werden, wenn nicht blende diese ein. Jetzt kannst dir die einzelnen Tabellenfelder einfach per Drag & Drop auf dein Formular ziehen. Mit den DropDown neben den Tabellenspalten kannst du auswählen ob diese als Textbos, Combobox etc. auf der Form dargestellt werden sollen.

    Du hast nun ein DataSet, in diesem Daten aus deiner Tabelle gespeichert sind. Über
    Code :
    1
    
    Me.NamedesDatasetz.TableAdapter
    Kannst du nun auf verschiedene Abfragen zugreifen, entweder vordefinierte oder auf welche die du selbst geschrieben hast. Am eifnachsten kann man Abfragen selber schreiben, indem du auf die *.xsd-Datei in deinem Projektmappen-Explorer gehst. Dort kommst du zu einer grafischen oberfläche, die die Tabellen deines Datsets darstellen. Die Tabellen werden in Attibute und Abfragen unterteilt. Um eine neue Abfrage hinzuzufügen machst du einfach einen Rchtsklick auf eien vorhandene Abfrage uns sagst neue Abfrage erstellen. Dann einfach wider dem Assistenten folgen.

    Anmerkung: Natürlich kannst du das DataSet auch per VB-Code-Eingabe erstelltn, so übernimmt das der Assistent für dich.

    Anmerkung 2: Wenn du eine Abfrage mit einer Parameterübergabe machen willst mußt du beachten das bei Access-Datenbanken das ? als Parameter gilt, nicht wie beim MSSQL Server @Parametername.
     
    Bitte alle erledigten Themen abschliessen.

  5. #5
    Angelika_25 Angelika_25 ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    93
    Also ich habe jetzt folgenden Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    
    Imports System.Data.OleDb
    Public Class Form3
     
        Private Sub btn_OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OK.Click
            If txt_Programm_eingeben.Text = "" Then
                MsgBox("Bitte geben Sie ein Programm-Namen ein!", vbInformation)
                Me.ActiveControl = txt_Programm_eingeben
     
            Else
                If txt_Anzahl_Lizenzen.Text = "" Then
                    MsgBox("Bitte geben Sie die Anzahl der verfügbaren Lizenzen dieses Programmes ein!", vbInformation)
                    Me.ActiveControl = txt_Anzahl_Lizenzen
                Else
                    If IsNumeric(txt_Anzahl_Lizenzen.Text) = False Then
                        MsgBox("Bitte geben Sie ausschließlich Zahlen bei den Lizenzen ein!", vbInformation)
                        txt_Anzahl_Lizenzen.Focus()
                        txt_Anzahl_Lizenzen.SelectAll()
                    Else
                        Try
                            Dim cmd As New OleDbCommand("INSERT INTO Programm (Programm, insgLizenz) VALUES(" & txt_Programm_eingeben.Text & ", '" & txt_Anzahl_Lizenzen.Text & "')", Con)
                            Con.Open()
                            cmd.ExecuteNonQuery()
                            txt_Programm_eingeben.Text = ""
                            txt_Anzahl_Lizenzen.Text = ""
                            MsgBox("Das Programm wurde hinzugefügt!")
     
     
                        Catch ex As Exception
                            MsgBox(ex.Message)
                        Finally
                            Con.Close()
                        End Try
                        txt_Programm_eingeben.Text = ""
                        txt_Anzahl_Lizenzen.Text = ""
                        Form1.Show()
                        Me.Hide()
     
                    End If
                End If
            End If
     
     
     
     
     
        End Sub

    Das ist das gleiche wie der erste Code (im großen und Ganzen).........Was ist an diesem Code denn falsch?
    Jedesmal wenn ich auf den "OK" Button klicke kommt: "Für mindestens einen erforderlichen Paramter wurde kein Wert angegeben".
    Ich habe in der Tabelle Programm: "ID" (AutoWert), "Programm" und "InsgLizenz".
    Wenn ich den Code mit den Textfeldern umwandeln würde, dann würde er doch auch direkt auf den andern passen, deswegen versteh ich nicht, warum da jetzt sowas kommt.

    ?
     

  6. #6
    Avatar von ronaldo84
    ronaldo84 ronaldo84 ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Berlin / Rudow
    Beiträge
    453
    Wo hast du denn Code jetzt her?

    Bei deinem SQL-String fehlen bei dem Paramter für Programm die ''
    Code :
    1
    
    Dim cmd As New OleDbCommand("INSERT INTO Programm (Programm, insgLizenz) VALUES([COLOR=red]'[/COLOR]" & txt_Programm_eingeben.Text & "[COLOR=red]'[/COLOR], '" & txt_Anzahl_Lizenzen.Text & "')", Con)
    Ausser das Programm aus einem Integer besteht.
     
    Bitte alle erledigten Themen abschliessen.

  7. #7
    Angelika_25 Angelika_25 ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    93
    Ah ok .................ich habe einen Freund von mir angerufen und der hat mir das kurz erklärt, aber das war am Telefon und diese Person hatte auch nicht allzu viel Zeit .........
    Aber ich habe jetzt trotzdem noch eine Frage:
    Also die veränderte Datei funktioniert jetzt super, aber nur eins versteh ich jetzt nicht. Ich habe das Office 2007 vor ein paar Tagen bekommen und habe nun ein paar mehr Funktionen in Access und wenn ich jetzt in meine Tabelle gehe (Benutzer) und dann auf das kleine +-Zeichen klicke bei der Nr, dann sehe ich das Programm, dass die Nr hat (AutoWert), dabei sollte ich ja das Programm sehen, dass die ID-Nr hat. Wisst ihr was ich meine?
    Ich habe ja extra zwei Tabellen gemacht, wegen den Wiederholungsfeldern.
    Schwer zu erklären
     

  8. #8
    Tarik_BS Tarik_BS ist offline Rookie
    Registriert seit
    Dec 2007
    Beiträge
    5
    Hallo,

    Auch Dir ein frohes und gesundes Neujahr!

    Sorry, ich habe es irgendwie übersehen, dass Du VB.Net meintest
    Natürlich, galt meine Lösung dem alten guten VBA .
    Freue mich, dass trotzdem alles geklärt werden könnte.

    Als Info für Datenbankzugriff über ADO.Net würde ich den folgenden Link empfehlen:
    http://www.galileocomputing.de/openb...b35540b9ef6273

    Wenn Du ein anderes DBMS als MS SQL Server benutzt, sollte man darauf achten, dass ein richtiger Datenprovider eingesetzt wird (OleDB oder ODBC statt SqlClient).

    Grüße aus Braunschweig
     

Ähnliche Themen

  1. Datensatz zwischen Bestehenden einfügen
    Von Registrierer im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.05.10, 17:44
  2. Datensatz dazwischen einfügen
    Von beckersbesters im Forum PHP
    Antworten: 3
    Letzter Beitrag: 14.01.09, 09:49
  3. Datensatz einfügen mit PHPMYADMIN
    Von phPimp im Forum PHP
    Antworten: 5
    Letzter Beitrag: 07.12.05, 07:17
  4. Neuen Datensatz einfügen
    Von Jerinca im Forum ASP
    Antworten: 2
    Letzter Beitrag: 25.10.04, 13:28
  5. Datensatz aus windows formular in Tabelle einfügen
    Von mariemueller im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 27.07.04, 17:31