Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: 2Consultants am 01.02.10 - 17:06:32

Titel: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: 2Consultants am 01.02.10 - 17:06:32
Hallo,
mir ist etwas passiert was ich in 19 Jahren Notes noch nicht erlebet habe.
Mit einem @Setfield wurde ein Feld gefüllt und dabei enthielt der Feldname im Setfield vesehentlich ein Steuerzeichen, genauer ein TAB. In den Dokumenteigenschaften erscheint das Feld mit Feldname[] in NotesPeek mit Feldname\t. Ich bekomme das Feld nicht mehr gelöscht, leider stellt es sich in den Weg bei allen Funktionen wo es um das richtige Feld geht. Es existiert also zweimal im Dokument, mit und ohne Sonderzeichen. Hat jemand eine Idee wie ich das faslsche Item löschen kann? @DeleteField löscht zum Beispiel das Feld ohne Sonderzeichen selbst wenn ich das mit angebe.

Gruß
Christian
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: m3 am 01.02.10 - 17:10:20
LOL. Schräg. Über die Note-ID ist auch nix zu machen?
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: 2Consultants am 01.02.10 - 17:19:31
Hm, ja danke für das Mitgefühl  :'(
Es sind leider 19.000 Dokumente die jetzt diesen Schaden haben.
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: it898ur am 02.02.10 - 07:47:03
Wie wäre es durch alle Items des Dokumentes zu iterieren und beim "falschen" ein item.remove auszuführen ?

Gruß

André
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: ata am 02.02.10 - 09:48:42
... du benötigst bei 2 Feldern des gleichen namens 2 @DeleteField-Aufrufe...

Toni
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: Thomas Schulte am 02.02.10 - 10:30:58
Anton, ich vermute einmal ,das er im Originalfeld Werte hat die er nicht unbedingt auch noch wegwerfen will.

Alternativ ist das in Script ein Agent mit 25 Zeilen. Andres Tip funktioniert.
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: ata am 02.02.10 - 10:34:53
... die Inhalte kann er doch vor dem Wegwerfen in eine Variable nehmen und dann neu zuweisen. Solange es nicht RichText-Felder sind, dürfte es keine Probleme machen...
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: 2Consultants am 02.02.10 - 10:36:27
Moin und Danke für die Tipps.
Die Werte in dem Feld brauche ich nicht mehr, ist immer der gleiche bei allen 19.000 Adressen. Mit @DeleteField läßt sich das "illegale" Feld nicht löschen. Man kann so etwas mit @Setfield zwar erzeugen aber danach ist es nicht mehr greifbar. Das mit den zwei @DeleteField hatte ich auch schon probiert.
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: m3 am 02.02.10 - 10:41:21
PMR? Was meint IBM dazu?
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: 2Consultants am 02.02.10 - 10:51:16
An die IBM habe ich das noch nicht gemeldet...

Läßt sich übrigens schön reproduzieren:
@SetField("FeldnameTAB-TASTE";"Text")
Das Item ist dann nicht mehr greifbar  ???
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: ata am 02.02.10 - 10:54:05
hast du es schon mit LS versucht?

Toni
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: Thomas Schulte am 02.02.10 - 10:56:57
Code
Declarations

Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

Dim removed As boolean


Sub Initialize()
	Set session = New NotesSession
	Set db = session.currentdatabase
	Set dc = db.Unprocesseddocuments
	
	Removed = False
	
	If dc.count > 0 Then
		Set doc = dc.getfirstdocument
		Do While Not doc Is Nothing
			ForAll v In doc.Items
				If v.name = "fldSometext	" Then
					Print "Hab ich dich erwischt ... Du hast folgenden Wert " + v.text + " und jetzt bist du weg"
					Call v.remove
					Removed = true
				End If
			End ForAll
			If Removed = True Then
				Call doc.save(True,False)
				removed = false
			End If
			Set doc = dc.getnextdocument(doc)
		Loop
	End If
End Sub

Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: 2Consultants am 02.02.10 - 11:20:03
Danke an Thomas, das Script funktioniert in meiner Test-DB. Ob es in der Adress-DB funktioniert wird sich zeigen. Da wird das Item nämlich nicht als "Feldname " angezeigt sondern als "Feldname[]". ALso nicht wirklich die eckigen Klammern sondern das Kästchensymbol.
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: ata am 02.02.10 - 11:22:28
... er wird funktionieren...

Toni  ;D
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: 2Consultants am 02.02.10 - 11:38:10
Setzt aber voraus das das Steuerzeichen wirkjlich ein TAB ist. Ansonsten muß ich im Script genau das Steuerzeichen im Feldnamen einfügen welches im Itemnamen vorkommt.
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: Thomas Schulte am 02.02.10 - 11:41:32
Da nimmst du dir das Tool ScanEZ von Ytria und kopierst den Feldnamen da raus und in dein Script rein. Dann funktioniert das.
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: FriFra am 06.02.10 - 08:09:35
Du kannst mit @SetField auch @DeleteField zuweisen ;D

Code
@SetField("Feldname"+@Char(9);@DeleteField)
Titel: Re: Feldname bzw. Item mit Steuerzeichen erzeugt - Wie wieder loswerden?
Beitrag von: Pyewacket am 06.02.10 - 09:33:30
Der Code von Thomas passt prinzipiell, nur den Feldnamen musst du dir selber zusammenbauen.

If v.name = "Feldname"+Chr(9) Then

Den falschen Feldnamen per cut and paste in das Script zu kopieren dürfte nicht gehen da der Editor
das Tab gleich interpretiert.