Autor Thema: Inhalt eines Datumfelds loeschen per LS  (Gelesen 1933 mal)

Offline lnfan

  • Frischling
  • *
  • Beiträge: 39
  • Ich liebe dieses Forum!
Inhalt eines Datumfelds loeschen per LS
« am: 06.04.07 - 15:28:27 »
Hallo,
habe ein Datumsfeld vom Type mm.yyyy

Möchte per LS Agenten den INHALT des Feldes löschen. Hatte laienhaft mit einem simplen Modify probiert und als Ziel einen Leerstring (keine Eingabe) verwendet, aber bei einem Datumsfeld kam da nichts Verfünftiges bei raus.

Wie lautet der Befehl zum Löschen des Inhaltes aus einem Datumsfeld?

Gruss, Manfred

PS: Wenn ich nach dem Datumsfeld kategorisiere (nach meinem Modify-Versuch) dann wird aus dem Kategorienamen "5.****" anstatt "not categorized".

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Inhalt eines Datumfelds loeschen per LS
« Antwort #1 am: 06.04.07 - 16:14:37 »
Ein wenig Code wäre jetzt nicht schlecht. Dann könnte man auch sehen, ob Deine Bemühungen im Front- oder Backend erfolgen.

Backend:
NotesDocument.DeinDatumsFeld = ""
oder
Set NotesItem = NotesDocument.GetItem ("DeinDatumsFeld")
Call NotesItem.Remove

Frontend: Kommt drauf an... Mehr Input, mehr Output.

Bernhard

Offline lnfan

  • Frischling
  • *
  • Beiträge: 39
  • Ich liebe dieses Forum!
Re: Inhalt eines Datumfelds loeschen per LS
« Antwort #2 am: 06.04.07 - 17:28:09 »
Hallo nochmal,
ich hätte Input geliefert, wenn ich welchen hätte. Habe ich etwa zu einfach gedacht? Ich brauche doch sicherlich nicht zeilenweise von Code. Einfach nur Löschen.

Dann werde ich mit deinen Tipps mal recherchieren und probieren. Danke.

Gruss, Manfred

Ergänzung:

Der Rumpf kann doch weiterverwendet werden. Nur anstatt der Zuweisung eines neuen Datums soll eine Löschung des Feldinhaltes erfolgen.

'if no documents have been selected then exit routine
   If collection.Count = 0 Then Exit Sub
   
   msg = collection.Count & " documents have been selected for mass update. Please enter a new date."
   response = ws.Prompt (PROMPT_OKCANCELEDIT, _
   "Change Date...", msg, "06.2006")
   If response = "" Then Exit Sub
   strTempDate = "01." & response
   
   Set doc = collection.GetFirstDocument
   While Not (doc Is Nothing)
          'Here the field will be changed per doc with the value selected in the prompt
      doc.ASD_Depl_Date = Cdat(strTempDate)
      doc.Header_UpdName = nam.Abbreviated
      doc.Header_UpdCreated = Now()
          'Save the current document
      Call doc.Save(True, False)
      
      Set doc = collection.GetNextDocument(doc)


Gruss, Manfred
« Letzte Änderung: 06.04.07 - 17:56:48 von lnfan »

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Inhalt eines Datumfelds loeschen per LS
« Antwort #3 am: 06.04.07 - 18:47:53 »
Und wie das geht hat Bernhard doch geschrieben. Bei der Variante doc.Feld = "" kannst du auch ein collection.stampAll("Feld","") verwenden, das ist dann wesentlich weniger Code.

Offline lnfan

  • Frischling
  • *
  • Beiträge: 39
  • Ich liebe dieses Forum!
Re: Inhalt eines Datumfelds loeschen per LS
« Antwort #4 am: 07.04.07 - 09:18:09 »
Hallo nochmal,
habe mal den Vorschlag von Bernhard eingebaut (beide Statements IN die Schleife?). Syntaktisch ist der Code korrekt. Beim Aufruf des Agenten aus der View kommt dann nach meiner Hinweisbox die Notes-Meldung "Variant does not contain an object".

Fehlt da noch eine Initialisierung? Danke für einen Hinweis.

Gruss, Manfred


Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   
   Dim ws As New NotesUIWorkspace
   Dim nam As NotesName
   Dim msg As String
   Dim response As Variant
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set nam = session.CreateName(session.UserName)
   
   'if no documents have been selected then exit routine
   If collection.Count = 0 Then Exit Sub
   
   msg = collection.Count & " documents have been selected for deletion of the deployment dates . Do you want to proceed?"
   response = ws.Prompt (PROMPT_YESNO, "Clear Deployment Date...", msg)
   If response = 0 Then Exit Sub
   
   Set doc = collection.GetFirstDocument
   While Not (doc Is Nothing)
          'Here the fields will be changed per doc      
      Set NotesItem = NotesDocument.GetItem (ASD_Depl_Date)
      Call NotesItem.Remove
      
      doc.Header_UpdName = nam.Abbreviated
      doc.Header_UpdCreated = Now()
          'Save the current document
      Call doc.Save(True, False)
      
      Set doc = collection.GetNextDocument(doc)
   Wend
End Sub

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Inhalt eines Datumfelds loeschen per LS
« Antwort #5 am: 07.04.07 - 11:20:39 »
Wie bekommst du diesen Code eigentlich gespeichert ? Entwickelst du mit einem anderen Instrument als dem Notes-Designer ?

Die GetItem-Methoide gibt es bei mir nur im Zusammenhang mit den NotesDOM-Objekten. Im Zusammenhang mit einem NotesDocument gibt es nur GetFirstItem als Methode - und bei mir meckert an so einer Stelle immer bereits der Designer beim Versuch, fehlerhaften Code abzuspeichern (wenn er weiß, daß doc ein NotesDocument ist - was einmal mehr belegt, daß man viel Zeit spart, wenn man Option Declare verwendet und alle Objekte deklarieren muß).

While Not (doc Is Nothing)
          'Here the fields will be changed per doc
      If doc.HasItem("ASD_Depl_Date") Then
           Call doc.RemoveItem("ASD_Depl_Date")
           doc.Header_UpdName = nam.Abbreviated
           doc.Header_UpdCreated = Now()
          'Save the current document
          Call doc.Save(True, False)
      End If
      Set doc = collection.GetNextDocument(doc)
Wend

Dabei ist die doc.RemoveItem-Methode eine der wenigen stabilen Methoden, die auch dann nicht meckern, wenn es gar nichts zu entfernen gibt.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline lnfan

  • Frischling
  • *
  • Beiträge: 39
  • Ich liebe dieses Forum!
Re: Inhalt eines Datumfelds loeschen per LS
« Antwort #6 am: 10.04.07 - 08:39:36 »
Hallo Norbert, Bernhard & Co,
melde mich wieder zurück aus der Osterpause und möchte bestätigen, dass der Code von Norbert einwandfrei funktioniert. Copy & Paste in meinen Body und geht - wow.

Vielen Dank.

In Kürze muss ich mich dann weiter um die Datums-Geschichte mit den internationalen Settings kümmern (siehe anderen Thread von mir).

Gruss, Manfred

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz