Mein Ziel ist es wenn, ich auf Kündigung drücke und das Datum geringer ist als das heutige dann Leere die Felder Lauf_Beginn und Lauf_Ende.
Dim iKuend
iKuend = ShowInputBox("Enddatum des Abonnements eingeben:",Date)
Const sView = "FakturaAbonnement"
Dim oProject, oListViewConfigs
Set oProject = cRM.CurrentProject
Set oListViewConfigs = oProject.ViewConfigs
Dim oViewConfig
Set oViewConfig = oListViewConfigs.ItemByName(CStr(sView))
Dim oRecordSet
Set oRecordSet = oViewConfig.CreateRecordSet
Dim oRecord
Set oRecord = oRecordSet.NewRecord
Dim datum
datum = date
If cDate(iKuend) < cDate(datum) Then
oRecord.SetContentsByName "Lauf_Beginn", " "
oRecord.SetContentsByName "Lauf_Ende", " "
End If
'Ansicht aktualisieren
cRM.CurrentProject.ActiveViews.ActiveView.Update
Ich kenne einfach die ganzen Befehle nicht auswendig von Vbs und bin mir eigentlich sicher das es daran liegt das ich die Felder nicht „finde“.
Ich habe es zwar geschafft das keine Fehlermeldung kommt, aber es passiert nichts.
Der Code ist nicht vollständig. Ich hoffe das ist nicht schlimm.
Wenn ich den Screenshot richtig interpretiere, benutzen Sie die cosmolink Business Solution. Angesichts des Nutzens (Zeitersparnis und Fehlervermeidung), den Ihnen Ihr Script bescheren wird, möchte ich Ihnen empfehlen, sich an @Frank_Wietzel von cosmolink zu wenden, ob sie Ihnen das erforderliche Script kurz bauen.
Ich denke das ist wirtschaftlich sinnvoller, als sich selber bei so einem speziellen Bereich warmzuturnen. Denn es könnte vor allem es ja auch sein, dass es noch mehr Businesslogik braucht, um ein Abonnement korrekt zu „kündigen“, als nur die beiden „Lauf_…“ Felder zu löschen.
Zu Ihrer eigentlichen Frage mit dem Fokus auf das Script (und nicht die Businesslogik, die es für das eigentliche Ziel noch braucht): in Ihrem Script ist der Knackpunkt, dass Sie nicht auf dem aktuell sichtbaren Record arbeiten, sondern ein neuen anlegen (NewRecord) - außerdem Speichern Sie die gemachten Änderungen nicht (.Save), sondern aktualisieren lediglich die Ansicht.
Die Abfolge müsste GROB sein:
Set oRecord = cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSet.CurrentRecord
oRecord.Lock
oRecord.SetContentsByNameToNull "Field1"
oRecord.SetContentsByNameToNull "Field2"
oRecord.Save
oRecord.Unlock
cRM.CurrentProject.ActiveViews.ActiveView.Update
Set oRecord = nothing
Bei den Feldnamen muss es sich übrigens um die physikalischen Feldnamen handeln, nicht um die visuellen Aliasnamen. Die ganzen physikalischen Feldnamen finden Sie im Ansichteneigenschaft-Dialog der Ansicht auf der Lasche „Felder“.
Außerdem müssen hier unbedingt noch Fehlerabfragen jeweils eingebaut werden: Klappte Lock? (kann fehlschlagen bei mangelnden Datensatzrechten oder anderen fehlenden Benutzerrechten) Klappte SetContents…? (kann fehlschlagen bei fehlenden Feldrechten) Klappte Save? etc.