ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
407
407
EMPFEHLEN
-
30.06.10 08:21 #1airmexx Tutorials.de Gastzugang
Hallo,
ich hab da ein problem, ich habe ein listenfeld, dies ist auch mit daten gefüllt, wenn ich jetzt auf meinen löschen-button drücke löscht er den obersten(ersten) datensatz und nicht den markierten.
meine listenbox fülle so: ich schreibe mit hilfe von 'insert into' daten in eine tabelle und lese sie dann mit hilfe einer unterabfrage wieder aus, die unterabfrage ist in der listenbox.
die listenbox und die eingabe der daten befinden sich auf zwei unterschiedlichen formularen.kann komischerweise auf dem eingabe formular nicht auf die liste zugreifen...sonst wurde ich 'additem' anwenden, und nicht über die tabellen gehen...
kann mir jemand sagen wie ich vllt auf 'additem' zugreifen kann oder wie ich es schaffe die daten aus der tabelle so zu löschen('delete from'), das nur der markierte datensatz verschwindet.
danke!
-
30.06.10 08:26 #2
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Also für gewöhnlich kannst du durch Formname.Listenname.Eigenschaft auch auf Elemente in einem anderen Formular zugreifen.
Warum es bei dir nicht geht ist aber schwer zu sagen so lange man nicht ein bisschen vom Quellcode sieht und genauer weiß womit du arbeitest.
Gruß ThomasSollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
30.06.10 08:39 #3dieter m Tutorials.de Gastzugang
so das ist der quellcode von der form wo die daten in die tabelle geschrieben werden
der obere abschnitt ist erstmal uninteressant.
Private Sub cmd_eintragen_Click()
Dim txtvon As String
Dim txtbis As String
Dim vonzahl, dzahl As Long
Dim biszahl As Long
Dim datumvon As String
Dim datumbis As String
Dim dnow As String
Dim prueferdatum, prueferfeiertag As Boolean
Dim UserName2 As String
Dim sql As String
Dim rec As DAO.Recordset
Dim sql2 As String
Dim rec2 As DAO.Recordset
Dim Username3, msg As String
Dim i, vardatum As Date
Dim j_minus, j_plus, urlaubstage, n, y, i2, n2, y2 As Long
Dim zaehler As Integer
prueferfeiertag = True
prueferdatum = True
'die dnow bekommt das datum von heute zugewiesen
dnow = Date
intj_minusahr = Year(Date)
txtvon = dnow
'txtvon bekommt den wert der in von angeklickt wurde
txtvon = Me.dtp_datum_von.value
txtbis = Me.dtp_datum_bis.value
vonzahl = CDbl(CDate(txtvon))
biszahl = CDbl(CDate(txtbis))
dzahl = CDbl(CDate(dnow))
'man darf nur datentypen vom typ datum angeben
If vonzahl < dzahl Then
MsgBox "Das ist leider nicht machbar"
prueferdatum = False
End If
If vonzahl > biszahl Then
MsgBox "Das ist leider nicht machbar"
prueferdatum = False
End If
'sql befehl um den gespeicherten namen auszurufen
sql = "SELECT * FROM tbl_zwischegespeicherter_name"
Set rec = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)
UserName2 = rec.Fields("Gespeicherter_name")
'j_minusetzt bekommt den name seiner dazugehörigen ID
sql2 = "SELECT * FROM tbl_Azubi WHERE Personalnummer = '" & UserName2 & "'"
Set rec2 = CurrentDb.OpenRecordset(sql2, dbOpenSnapshot)
Username3 = rec2.Fields("ID_Azubi")
mod_Datum.FeiertagDatum (intj_minusahr)
'mod_Datum.Ostern
'mod_Datum.Arbeitstag
'mod_Datum.ArbeitsTage
'Wochenenden berechnen und vom zähler subtrahieren
'zählt vom von datum bis zum bis datum
For i = vonzahl To biszahl
prueferfeiertag = True
' hier wird das aktuelle datum in eine zahle umgewandelt(die tag zahl bis zu dem tag von 1.1.1900)
i2 = CDbl(CDate(i))
'n2 bekommt den wert 7
n2 = 7
'diese schleife zählt von 7 hoch bis zum bis datum(ca. 40353(24.06.2010))
For n = 1 To biszahl
n2 = n2 + 7
'vergleicht ob der i tag ein samstag ist
If i2 = n2 Then
prueferfeiertag = False
End If
Next n
y2 = 8
'diese schleife zählt von 8 hoch bis zum bis datum(ca. 40353(24.06.2010))
For y = 1 To biszahl
y2 = y2 + 7
'vergleicht ob der i tag ein sonntag ist
If i2 = y2 Then
prueferfeiertag = False
End If
Next y
' vergleichen ob der heutige tag ein beweglicherfeiertag ist
If i = CDate("01.01." & intj_minusahr) Then
prueferfeiertag = False
End If
If i = CDate("01.05." & intj_minusahr) Then
prueferfeiertag = False
End If
If i = CDate("03.10." & intj_minusahr) Then
prueferfeiertag = False
End If
If i = CDate("24.12." & intj_minusahr) Then
prueferfeiertag = False
End If
If i = CDate("25.12." & intj_minusahr) Then
prueferfeiertag = False
End If
'der variablen FeiertagDatum bekommt das heutige jahr zu gewiesen
vardatum = FeiertagDatum(Format(Date, "yyyy"))
'der variablen FeiertagDatum wird ein tag dazu addiert
'ostermonntag
vardatum = DateAdd("d", 1, vardatum)
If i = vardatum Then
prueferfeiertag = False
End If
'karfreitag
vardatum = FeiertagDatum(Format(Date, "yyyy"))
vardatum = DateAdd("d", -1, vardatum)
If i = vardatum Then
prueferfeiertag = False
End If
'Christi Himmelfahrt
vardatum = FeiertagDatum(Format(Date, "yyyy"))
vardatum = DateAdd("d", 39, vardatum)
If i = vardatum Then
prueferfeiertag = False
End If
'Pfingstmontag
vardatum = FeiertagDatum(Format(Date, "yyyy"))
vardatum = DateAdd("d", 50, vardatum)
If i = vardatum Then
prueferfeiertag = False
End If
If prueferfeiertag = False Then
j_minus = j_minus + 1
End If
j_plus = j_plus + 1
urlaubstage = j_plus - j_minus
Next i
AB HIER:
Set ctl = Me.lst_vorl_Urlaubsantraege
If prueferdatum = True Then
'hier werden die daten in die tabelle geschrieben
DoCmd.RunSQL ("INSERT INTO tbl_vorl_Urlaubsantraege (ID_Azubi, Start_Urlaub, End_Urlaub, gen_Urlaubstage, Bemerkungen, genehmigt) " & _
"VALUES ('" & Username3 & "' , '" & txtvon & "' , '" & txtbis & "' , '" & urlaubstage & "', '" & " " & "' , '" & " " & "')")
End If
'messagebox ob man noch was hinzufügen möchte
msg = MsgBox("Möchten Sie noch einen Eintrag vornehmen?", vbYesNo)
If msg = vbNo Then
DoCmd.Close acForm, Me.name
End If
If msg = vbYes Then
End If
End Sub
und das ist jetzt die form wo der datensatz gelöscht werden soll
Private Sub cmd_loeschen_Click()
DoCmd.SetWarnings False
Dim ctlListe As Control, varElement As Variant
Dim msg As String
'Control-Objektvariable, die auf das Listenfeld zeigt, zurückgeben.
Dim frm As Form, ctl As Control
Dim varElem As Variant, intI As Integer
Dim urlaubstage As Integer
Dim sql_statement As Variant
'ctl wird nun der wert der liste lst_azubi übergeben
Set ctl = Me.lst_vorl_Urlaubsantraege
'abfrage ob der datensatz gelöscht werden soll
msg = MsgBox("Wollen Sie den Datensatz wirklich löschen?", vbYesNo)
'if schleife datensatz wird nur gelöscht wenn ja geklickt wird
If msg = vbNo Then
End If
If msg = vbYes Then
DoCmd.RunSQL ("DELETE FROM tbl_vorl_Urlaubsantraege WHERE (ID_vorl_pruefung = " & ctl.Column(7, varElem) & ")")
End If
Me.lst_vorl_Urlaubsantraege.RowSource = "qry_unterabfrage_vorl_Uralubsantraege"
End Sub
-
Kannst du ihn bitte formatiert in [VB]dein Code[/VB] schreiben? Dann ist er auch lesbar. (ja, diese Tags gehen auch für Gäste!)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
30.06.10 08:50 #5dieter Tutorials.de Gastzugang
So hoffe, dass das jetzt besser ist.
Code vb: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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
Private Sub cmd_eintragen_Click() Dim txtvon As String Dim txtbis As String Dim vonzahl, dzahl As Long Dim biszahl As Long Dim datumvon As String Dim datumbis As String Dim dnow As String Dim prueferdatum, prueferfeiertag As Boolean Dim UserName2 As String Dim sql As String Dim rec As DAO.Recordset Dim sql2 As String Dim rec2 As DAO.Recordset Dim Username3, msg As String Dim i, vardatum As Date Dim j_minus, j_plus, urlaubstage, n, y, i2, n2, y2 As Long Dim zaehler As Integer prueferfeiertag = True prueferdatum = True 'die dnow bekommt das datum von heute zugewiesen dnow = Date intj_minusahr = Year(Date) txtvon = dnow 'txtvon bekommt den wert der in von angeklickt wurde txtvon = Me.dtp_datum_von.value txtbis = Me.dtp_datum_bis.value vonzahl = CDbl(CDate(txtvon)) biszahl = CDbl(CDate(txtbis)) dzahl = CDbl(CDate(dnow)) 'man darf nur datentypen vom typ datum angeben If vonzahl < dzahl Then MsgBox "Das ist leider nicht machbar" prueferdatum = False End If If vonzahl > biszahl Then MsgBox "Das ist leider nicht machbar" prueferdatum = False End If 'sql befehl um den gespeicherten namen auszurufen sql = "SELECT * FROM tbl_zwischegespeicherter_name" Set rec = CurrentDb.OpenRecordset(sql, dbOpenSnapshot) UserName2 = rec.Fields("Gespeicherter_name") 'j_minusetzt bekommt den name seiner dazugehörigen ID sql2 = "SELECT * FROM tbl_Azubi WHERE Personalnummer = '" & UserName2 & "'" Set rec2 = CurrentDb.OpenRecordset(sql2, dbOpenSnapshot) Username3 = rec2.Fields("ID_Azubi") mod_Datum.FeiertagDatum (intj_minusahr) 'mod_Datum.Ostern 'mod_Datum.Arbeitstag 'mod_Datum.ArbeitsTage 'Wochenenden berechnen und vom zähler subtrahieren 'zählt vom von datum bis zum bis datum For i = vonzahl To biszahl prueferfeiertag = True ' hier wird das aktuelle datum in eine zahle umgewandelt(die tag zahl bis zu dem tag von 1.1.1900) i2 = CDbl(CDate(i)) 'n2 bekommt den wert 7 n2 = 7 'diese schleife zählt von 7 hoch bis zum bis datum(ca. 40353(24.06.2010)) For n = 1 To biszahl n2 = n2 + 7 'vergleicht ob der i tag ein samstag ist If i2 = n2 Then prueferfeiertag = False End If Next n y2 = 8 'diese schleife zählt von 8 hoch bis zum bis datum(ca. 40353(24.06.2010)) For y = 1 To biszahl y2 = y2 + 7 'vergleicht ob der i tag ein sonntag ist If i2 = y2 Then prueferfeiertag = False End If Next y ' vergleichen ob der heutige tag ein beweglicherfeiertag ist If i = CDate("01.01." & intj_minusahr) Then prueferfeiertag = False End If If i = CDate("01.05." & intj_minusahr) Then prueferfeiertag = False End If If i = CDate("03.10." & intj_minusahr) Then prueferfeiertag = False End If If i = CDate("24.12." & intj_minusahr) Then prueferfeiertag = False End If If i = CDate("25.12." & intj_minusahr) Then prueferfeiertag = False End If 'der variablen FeiertagDatum bekommt das heutige jahr zu gewiesen vardatum = FeiertagDatum(Format(Date, "yyyy")) 'der variablen FeiertagDatum wird ein tag dazu addiert 'ostermonntag vardatum = DateAdd("d", 1, vardatum) If i = vardatum Then prueferfeiertag = False End If 'karfreitag vardatum = FeiertagDatum(Format(Date, "yyyy")) vardatum = DateAdd("d", -1, vardatum) If i = vardatum Then prueferfeiertag = False End If 'Christi Himmelfahrt vardatum = FeiertagDatum(Format(Date, "yyyy")) vardatum = DateAdd("d", 39, vardatum) If i = vardatum Then prueferfeiertag = False End If 'Pfingstmontag vardatum = FeiertagDatum(Format(Date, "yyyy")) vardatum = DateAdd("d", 50, vardatum) If i = vardatum Then prueferfeiertag = False End If If prueferfeiertag = False Then j_minus = j_minus + 1 End If j_plus = j_plus + 1 urlaubstage = j_plus - j_minus Next i Set ctl = Me.lst_vorl_Urlaubsantraege If prueferdatum = True Then DoCmd.RunSQL ("INSERT INTO tbl_vorl_Urlaubsantraege (ID_Azubi, Start_Urlaub, End_Urlaub, gen_Urlaubstage, Bemerkungen, genehmigt) " & _ "VALUES ('" & Username3 & "' , '" & txtvon & "' , '" & txtbis & "' , '" & urlaubstage & "', '" & " " & "' , '" & " " & "')") End If 'messagebox ob man noch was hinzufügen möchte msg = MsgBox("Möchten Sie noch einen Eintrag vornehmen?", vbYesNo) If msg = vbNo Then DoCmd.Close acForm, Me.name End If If msg = vbYes Then End If End Sub
Code vb: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
Private Sub cmd_loeschen_Click() DoCmd.SetWarnings False Dim ctlListe As Control, varElement As Variant Dim msg As String 'Control-Objektvariable, die auf das Listenfeld zeigt, zurückgeben. Dim frm As Form, ctl As Control Dim varElem As Variant, intI As Integer Dim urlaubstage As Integer Dim sql_statement As Variant 'ctl wird nun der wert der liste lst_azubi übergeben Set ctl = Me.lst_vorl_Urlaubsantraege 'abfrage ob der datensatz gelöscht werden soll msg = MsgBox("Wollen Sie den Datensatz wirklich löschen?", vbYesNo) 'if schleife datensatz wird nur gelöscht wenn ja geklickt wird If msg = vbNo Then End If If msg = vbYes Then DoCmd.RunSQL ("DELETE FROM tbl_vorl_Urlaubsantraege WHERE (ID_vorl_pruefung = " & ctl.Column(7, varElem) & ")") End If Me.lst_vorl_Urlaubsantraege.RowSource = "qry_unterabfrage_vorl_Uralubsantraege" End Sub
-
30.06.10 09:03 #6
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Nur mal so ein Schuß ins Blaue:
Code vb:1
DoCmd.RunSQL ("DELETE FROM tbl_vorl_Urlaubsantraege WHERE (ID_vorl_pruefung = " & ctl.Column(7, ctl.ListIndex) & ")")
Kann es sein das die Variable "varElem" nicht oder falsch definiert ist Wenn du den ListIndex Wert des markierten Eintrages nimmst, sollte der richtige Datensatz gelöscht werden (zumindest wenn der Spaltenwert 7 den richtigen Wert liefert).Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
varElem ist die Zeile die du ausliest (Zeile varElem, Spalte 8).Code vb:
1 2 3
Dim varElem As Variant ... ... ctl.Column(7, varElem) ...
1) du definierst varElem nirgens. Ergo nimmt er die erste Zeile
2) um die selektionierte Zeile auszuwählen, kannst du diesen optionalen Parameter einfach weglassen
Code vb:1
... ctl.Column(7) ...
Edit:
1:0 für tombe.... du warst schneller *g*---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
30.06.10 09:16 #8dieter Tutorials.de Gastzugang
Unglaublich...danke!
einfach varElem weglassen und dann gehts...danke hab seit montag gesucht wo der fehler ist...
Ähnliche Themen
-
StyledText - Markierten Text nicht löschen lassen
Von Prengepower im Forum JavaAntworten: 0Letzter Beitrag: 26.11.09, 12:11 -
Datensatz löschen?
Von Reverent im Forum .NET DatenverwaltungAntworten: 3Letzter Beitrag: 25.03.06, 18:07 -
datensatz löschen
Von hikeda_ya im Forum PHPAntworten: 17Letzter Beitrag: 13.01.06, 19:22 -
Datensatz aus TXT löschen
Von MajorWindbeutel im Forum PHPAntworten: 13Letzter Beitrag: 03.02.04, 20:03 -
Datensatz aus DB löschen
Von Subwoover im Forum PHPAntworten: 7Letzter Beitrag: 20.02.02, 16:52





Zitieren


Login





