Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Datensatz löschen
Ritzeratze - Do 22.05.14 15:44
Titel: Datensatz löschen
Hallo,
In einer Tabelle tbl_BK_User befinden sich 3 Felder. (IDBKUser, IDUser,Berechtigungsstufe)
in einem Formular frm_BK_User_Zuordnung habe ich ein ungebundenens Feld eingefügt. Dieses heißt tbLoeschID.
Wenn ich in dem Feld tbLoeschID einen Wert eingebe möchte ich aus der Tabelle tbl_BK_User den entsprechenden Satz löschen.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Private Sub cmdLöschenAlteUser_Click() Dim rs As Recordset Dim Antwort Antwort = MsgBox("Soll wirklich gelöscht werden???", vbQuestion + vbYesNo) If Antwort = vbYes Then DoCmd.RunSQL "DELETE FROM tbl_BK_User WHERE idBKUser = tbLoeschID" End If
End Sub |
Leider bekomme ich immer den Fehler ungültiger Spaltenname tbLoeschID.
Wie lautet der korrekte syntaktische Befehl für das ungebundenen Feld tbLoeschID?
Gruss Ritze
Christian S. - Do 22.05.14 17:03
Du willst ja auch nicht den Text "tbLoeschID" im String haben, sondern den in der Textbox enthaltenen Wert. ;-)
Also eher sowas wie
Quelltext
1:
| DoCmd.RunSQL "DELETE FROM tbl_BK_User WHERE idBKUser = "+tbLoeschID.Text |
wobei Du vorher *unbedingt* sicherstellen musst, dass der entsprechende Text auch nur eine Zahl und nichts anderes enthält, willst Du nicht SQL-Injections Tür und Tor öffnen. Besser ist eh ein Prepared Statement o.ä.
Ritzeratze - Fr 23.05.14 08:46
Hallo Christian,
wenn ich das so umsetze, dann bekomme ist einen Laufzeitfehler 2185. Auf Eigenschaften oder Methoden des Steuerelements kann nur zugegriffen werden wenn es den Fokus hat.
Den Wert gebe ich aber im Textfeld ein und starte das Makro mit einer Schaltfläche.
Ich weiß da momentan nicht weiter. Noch eine Idee ?
Gruß
Ritze
Christian S. - Fr 23.05.14 09:31
:gruebel: Okay, irgendwie dachte ich, Du hättest da eine normale WinForms-Anwendung. Vielleicht solltest Du nochmal beschreiben, was Du da wirklich hast ;)
Palladin007 - Mo 02.06.14 12:42
Welchen Typ hat die Spalte?
Wenn das kein numerischer Wert ist, müssen einfache Anführungszeichen drum.
goodandwealth - Mo 02.06.14 21:37
Ritzeratze hat folgendes geschrieben : |
Hallo Christian,
wenn ich das so umsetze, dann bekomme ist einen Laufzeitfehler 2185. Auf Eigenschaften oder Methoden des Steuerelements kann nur zugegriffen werden wenn es den Fokus hat.
Den Wert gebe ich aber im Textfeld ein und starte das Makro mit einer Schaltfläche.
Ich weiß da momentan nicht weiter. Noch eine Idee ?
Gruß
Ritze |
Hi,
sieht für mich nach Ms-Access aus (wegen docmd.runsql)
In dem fall sollte es so sein:
Quelltext
1:
| DoCmd.RunSQL "DELETE FROM tbl_BK_User WHERE idBKUser ='" + Me.tbLoeschID.Text + "'" |
Bei der Gelegenheit, dieses Docmd scheint zwar immer noch verfügbar, aber es ist zu empfeheln es so zu machen:
Quelltext
1: 2: 3: 4: 5:
| Dim db as Database() Set db = CurrentDb ' meint immer die aktuell geöffnete Datenbank Dim strSQL as String = "DELETE FROM tbl_BK_User WHERE idBKUser ='" + Me.tbLoeschID.Text + "'" "DELETE FROM tbl_BK_User WHERE idBKUser ='" + Me.tbLoeschID.Text + "'" db.execute strSQL, dbFailOnError ' , dbFailOnError sogt dafür dass du auch errormessage bekommst |
Ist schon etwas länger her, dass ich damit zu tun hatte, deshalb noch dieser hinweis: unter access muss wahrscheinlich statt "=" ein "like" stehen, egal ob der string mit wildcard arbeit soll oder nicht.
Moderiert von
Th69: Code-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!