Supportnet / Forum / Datenbanken
Update oder delete Methode?
Frage
Hallo Liebe Leute,
Ich habe Folgendes Problem:
Ich habe eine Datenbank geschrieben,indem es 2 Tabellen gibt.Erstens Eine Tabelle namens Gruppe und eine Tabelle namens Mitarbeiter.Diese beiden sind miteinanderverknüpft(1:n Beziehung).Zu Jeder Gruppe gibt es Mitrbeiter.Nun möchte ich eine Loeschfunktion programmieren,da gibt es aber einen Hacken:Wenn ich eine Gruppe Loesche,dann bleiben die dazugehörige Mitarbeiter suzusagen "in der Luft hängen".Ich möchte,dass die Mitarbeiter,die zu den gelöschten Gruppen Gehörten,zu einer anderen,übergeordneten Gruppe Hinzugefügt werden und da fängt schon meine Probleme an .Ich habe schon mit einer Update Abfrage versucht:"UPDATE tablleMitarbeiter SET TabelleMitarbeiter.GruppeID = *neueID* WHERE TabelleMityarbeiterGruppeID = *alteID*
DELETE FROM Gruppe WHERE GruppeID = *alteID".Das funzt nich so ganz.Wie kann ich das anderes machen?oder stimmt mit meiner Update Abfrage nicht?
Ich würde mich auf eure Tipps freuen!!
MfG
Rizky R
Antwort 1 von Armin
hi,
problem klar (denke ich wenigstens)
bei interesse kann ich dir ein vba makro schicken,
gruesse armin
problem klar (denke ich wenigstens)
bei interesse kann ich dir ein vba makro schicken,
gruesse armin
Antwort 2 von Rizky R
Hallo,
Das wäre echt klasse,wenn du mir die vb makro schickst.Das würde mir weiterhelfen!
MfG
Rizky R
Das wäre echt klasse,wenn du mir die vb makro schickst.Das würde mir weiterhelfen!
MfG
Rizky R
Antwort 3 von Armin
hi
habe Dir eben zwei vba makros gemailt.
melde dich wenn io or nio
gruesse armin
habe Dir eben zwei vba makros gemailt.
melde dich wenn io or nio
gruesse armin
Antwort 4 von Rizky R
Hallo Armin,
Danke Vielmals für deine Super Makros,das hat mich sehr weit gebracht!Nun habe ich aber ein Problem.Bei einer Stelle des Codes meckert MS Access!Hier der Folgende Code-Abschnitt:
....
Do
rstEntity.Seek Array(Me.tbxCityID.Value)
If Not (rstEntity.EOF) Then
rstEntity.Fields("CityID").Value = Null
rstEntity.Update
End If
Loop While Not (rstEntity.EOF)
rstEntity.Close
Bei der Stelle "Seek" sagt Access,dass das Argument nicht Optional ist.Ich habe in der Online Hilfe über die Seek Methode nachgeschaut,aber die Hilfestellungen haben mir nicht geholfen.Trotzdem werde ich weiter recherchieren.Falls du eine Idee hast woran das liegen könnte,warum es nicht funzt, dann würde ich mich auf deine Vorschläge freuen!
MfG
Rizky R
Danke Vielmals für deine Super Makros,das hat mich sehr weit gebracht!Nun habe ich aber ein Problem.Bei einer Stelle des Codes meckert MS Access!Hier der Folgende Code-Abschnitt:
....
Do
rstEntity.Seek Array(Me.tbxCityID.Value)
If Not (rstEntity.EOF) Then
rstEntity.Fields("CityID").Value = Null
rstEntity.Update
End If
Loop While Not (rstEntity.EOF)
rstEntity.Close
Bei der Stelle "Seek" sagt Access,dass das Argument nicht Optional ist.Ich habe in der Online Hilfe über die Seek Methode nachgeschaut,aber die Hilfestellungen haben mir nicht geholfen.Trotzdem werde ich weiter recherchieren.Falls du eine Idee hast woran das liegen könnte,warum es nicht funzt, dann würde ich mich auf deine Vorschläge freuen!
MfG
Rizky R
Antwort 5 von Armin
Antwort 1:
Hi,
ich habe die Parameter einfach in der Form aus ""ACCESS 2000 - Das
Handbuch"
von Microsoft übernommen.
1. LockType:=adLockOptimistic, _
regelt den mehrfachen Zugriff (durch mehrere User) auf den Datensatz regelt.
Beim optimistischen Zugriff können im worst case mehrere User nacheinander
das Feld eines Records ändern.
nach meiner Erfahrung aber bei nicht sicherheitskritischen Sachen OK als
Zugriffsart (ist auch meistens die Default-Einstellung.)
2. CursorType:=adOpenKeyset, _
ist in der Online Hilfe beschrieben, habe leider die Bedeutung wieder
vergessen.
3. Options:=adCmdTableDirect
Dito, meine das der Zugriff auf eine gespeicherte (serialisierte) Tabelle im
Gegensatz zu einem Zugriff auf einen durch einen Abfrage definierten
Recordset
(wird erst während der Laufzeit der Abfrage erzeugt) gemeint ist.
4.ActiveConnection:=CurrentProject.Connection
ich denke, das es wirklich dem CurrentDb.Connection entspricht.
Wahrscheinlich geht die Abfrage auch einfacher, aber sobald die Abfrage
funzt,
höre ich auf zu Verstehen und zu basteln.
cu Armin
Hi,
ich habe die Parameter einfach in der Form aus ""ACCESS 2000 - Das
Handbuch"
von Microsoft übernommen.
1. LockType:=adLockOptimistic, _
regelt den mehrfachen Zugriff (durch mehrere User) auf den Datensatz regelt.
Beim optimistischen Zugriff können im worst case mehrere User nacheinander
das Feld eines Records ändern.
nach meiner Erfahrung aber bei nicht sicherheitskritischen Sachen OK als
Zugriffsart (ist auch meistens die Default-Einstellung.)
2. CursorType:=adOpenKeyset, _
ist in der Online Hilfe beschrieben, habe leider die Bedeutung wieder
vergessen.
3. Options:=adCmdTableDirect
Dito, meine das der Zugriff auf eine gespeicherte (serialisierte) Tabelle im
Gegensatz zu einem Zugriff auf einen durch einen Abfrage definierten
Recordset
(wird erst während der Laufzeit der Abfrage erzeugt) gemeint ist.
4.ActiveConnection:=CurrentProject.Connection
ich denke, das es wirklich dem CurrentDb.Connection entspricht.
Wahrscheinlich geht die Abfrage auch einfacher, aber sobald die Abfrage
funzt,
höre ich auf zu Verstehen und zu basteln.
cu Armin
Antwort 6 von Armin
Hi
Muss ich checken.
ich glaube das es irgendeinen Grund gab, warum ich den Wert des Feldes Me.tbxCityID (ein long integer, der ein Index ist in der Tabelle tblCITY - wichtig für "Seek") in ein Array umgewandelt habe. Das ist ein Kombofeld mit 2 Spalten (der ID und dem Namen der Stadt als String) wobei die erste Spalte gebunden ist.
Gruesse Armin
Muss ich checken.
ich glaube das es irgendeinen Grund gab, warum ich den Wert des Feldes Me.tbxCityID (ein long integer, der ein Index ist in der Tabelle tblCITY - wichtig für "Seek") in ein Array umgewandelt habe. Das ist ein Kombofeld mit 2 Spalten (der ID und dem Namen der Stadt als String) wobei die erste Spalte gebunden ist.
Gruesse Armin

