Autor Beitrag
Ritzeratze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Do 22.05.14 15:44 
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.

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ausblenden 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.ä.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 ;)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 02.06.14 12:42 
Welchen Typ hat die Spalte?

Wenn das kein numerischer Wert ist, müssen einfache Anführungszeichen drum.
goodandwealth
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 02.06.14 21:37 
user profile iconRitzeratze hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden 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:
ausblenden 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 user profile iconTh69: Code-Tags hinzugefügt