tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
705
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ahnungsloser8000 Ahnungsloser8000 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    45
    Hi,
    ich habe folgendes Problem.
    Ich möchte eine bestimmte Zeile aus einer Access-Tabelle löschen. Dazu bekomme ich über eine Textbox und eine Combobox 2 Werte. Nach diesen Werten soll die Tabelle durchsucht werden und die entsprechende Zeile gelöscht werden.

    Ich habe das Ganze mal folgendermaßen versucht :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Dim deleteCommand As New OleDb.OleDbCommand("delete from Verteilung_SW where Kennziffer = combobox2.SelectedIndex + 1  and  Rechner_Nr = Textbox2.text", OleDbConnection1)
            Try
                OleDbConnection1.Open()
                deleteCommand.ExecuteNonQuery()
            Catch err As OleDb.OleDbException
                MessageBox.Show(err.ToString)
            Finally
                OleDbConnection1.Close()
            End Try

    Ich gehe davon aus das mein SQL Befehl nicht stimmt, ich habe aber über die Suche nur Beispiele für insert-Befehle gefunden, konnte es also nicht selbst überprüfen.
    Das Programm meldet mir als Fehler das es entweder die Tabelle oder die Abfrage "Verteilung_SW" nicht findet.

    Hoffe mir kann jemand weiterhelfen.

    Gruß
    Ahnungsloser8000
     

  2. #2
    Avatar von JensG
    JensG JensG ist offline Mitglied Platin
    Registriert seit
    Jun 2004
    Ort
    Gera (Thüringen)
    Beiträge
    517
    Hallo Ahnungsloser,

    versuche es mal so.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
     
     Dim deleteCommand As New OleDb.OleDbCommand("delete from Verteilung_SW where Kennziffer = " & combobox2.SelectedIndex + 1 & " and  Rechner_Nr = " &  cint(Textbox2.text) , OleDbConnection1)
     
    Try
         OleDbConnection1.Open()
         deleteCommand.ExecuteNonQuery()
    Catch err As OleDb.OleDbException
         MessageBox.Show(err.ToString)
    Finally
         OleDbConnection1.Close()
    End Try

    ist aber ungtestet.

    Jens
     

  3. #3
    Ahnungsloser8000 Ahnungsloser8000 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    45
    Hi erst mal Danke für die Hilfe.

    Also das Feld Rechnernummer muss ein String bleiben, da die Rechnernummern folgendemaßen aufgebaut sind W2KW7777. Die letzten 4 Ziffern sind jeweils eine durchlaufende Nummer. Der erste Teil bringt Infos zum Betriebssystem.

    Den Rest habe ich mal an deinen Vorschlag angepasst. Ich bekomme aber immer noch eine Fehlermeldung. Ich schreibe sie mal mit dazu, vielleicht hilft das jemandem den Fehler zu finden.

    System.Data.OleDb.OleDbException: Das Microsoft Jet-Datenbankmodul findet die Eingangstabelle oder Abfrage 'Verteilung_SW' nicht.
    Stellen Sie sicher, dass sie existiert und der Name richtig eingegeben wurde.
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult tagDBPARAMS dbParams, Object& executeResult)
    at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
    at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
    at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
    at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
    at DBTest5.Form1.Button5_Click(Object sender, EventArgs e) in D:\VS_Basic_Projekte\DBTest5\Form1.vb:line 936

    Ich hatte schon mal ein ähnliches Problem. Da wurde auch über eine nicht auffindbare Tabelle gesprochen, aber die Tabelle existiert definitiv und der Name ist ebenfalls richtig geschrieben. Ich weiß leider nicht wie ich damals den Fehler beheben konnte.
     

  4. #4
    Ahnungsloser8000 Ahnungsloser8000 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    45
    Anscheinend findet niemand eine Lösung zum genannten Problem. Aber vielleicht gibt es auch noch eine andere Möglichkeit.

    Kann ich die entsprechende Zeile vielleicht direkt im DataGrid suchen und dort löschen und dann anschließend ein Update auf die Datenbank machen?

    Oder hat noch jemand eine andere Idee?
     

  5. #5
    Avatar von JensG
    JensG JensG ist offline Mitglied Platin
    Registriert seit
    Jun 2004
    Ort
    Gera (Thüringen)
    Beiträge
    517
    Hallo,

    wenn das Feld Rechnungsnummer ein String ist dann muss das Delete Kommando so aussehen.

    Code :
    1
    2
    
     
    Dim deleteCommand As New OleDb.OleDbCommand("delete from Verteilung_SW where Kennziffer = ' " & combobox2.SelectedIndex + 1 & " ' and  Rechner_Nr = " &  cint(Textbox2.text) , OleDbConnection1)
     

  6. #6
    Ahnungsloser8000 Ahnungsloser8000 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    45
    @JensG
    Danke für deine Hilfe, ich habe das Ganze jetzt aber auf einem anderen Weg gelöst.

    Bin einen Umweg über das Datagrid gegangen.

    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
    
            Dim i As Integer
            Dim reihenanzahl As Integer
            reihenanzahl = DataSet11.Verteilung_SW.Count
            Dim gesReihe As Integer
            gesReihe = -1
     
            For i = 1 To reihenanzahl
                If DataGrid3.Item(i - 1, 1) = TextBox2.Text Then
                    If DataGrid3.Item(i - 1, 2) = ComboBox2.SelectedIndex + 1 Then
                        gesReihe = i - 1
                    End If
     
                End If
     
            Next
     
            If Not gesReihe = -1 Then
                DataSet11.Verteilung_SW(gesReihe).Delete()
                schalter2 = False
            Else
                MessageBox.Show("BlaBlaBla", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)
            End If
     
            OleDbDataAdapter3.Update(DataSet11, "Verteilung SW")

    Werde bei Gelegenheit trotzdem noch mal den anderen Weg versuchen.

    Gruß Ahnungsloser8000
     

Ähnliche Themen

  1. Daten aus einer Datenbank löschen
    Von port29 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 13.03.09, 01:48
  2. Datensätze aus Access Datenbank löschen
    Von skeleton5 im Forum .NET Datenverwaltung
    Antworten: 0
    Letzter Beitrag: 08.11.07, 19:18
  3. Antworten: 3
    Letzter Beitrag: 29.03.07, 13:17
  4. Suche in einer Access Datenbank
    Von Knuddel im Forum Visual Basic 6.0
    Antworten: 7
    Letzter Beitrag: 20.01.06, 17:16
  5. Access SQL Datenbank löschen
    Von cfl2si im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 24.03.05, 10:37