Wenn du die Daten aus einem Excel importierst, dann ist das doch kein Problem! Dann kannst du ja gleich beim Import den richtigen Datentyp setzen...
Beiträge von Patrick
-
-
@Brane: Dann setztst du wohl im Backend einen falschen Datentyp, welcher im Frontend, nach deinem Save von Notes automatisch korrigiert wird.
Zur Fehlersuche in einem solchen Fall könnte man ja auch anfangs ein einziges Feld nehmen und dann den Query immer erweitern, bis man auf das "falsche" Feld stösst.
Wir sehen hier leider, weder deinen Code, noch deinen Debugger...
-
Ah...na dann...es geht nichts über sprechenden Code...
:orakel: -
...ich wusste gar nicht, dass man mit einem NotesUIDocument direkt auf die Feldwerte zugreifen kann. Ich dachte immer das müsse per uidoc.Document.Feldname(0) geschehen...
-
taurec: Ich hatte es bei mir getestet. Es scheint tatsächlich nicht zu gehen mit dem ArrayAppend, obwohl im Feld eine Zahlenliste steht und mit einer Zahl Array-appended wird...
Im Debugger hat der Variant auch eine Zahlenliste angezeigt. Ich kann mir auch nicht erklären weshalb dieser Fehler kommt...Detti: Tipp: benutz doch die Code Funktion, um Code darzustellen...
Das "Redim Preserve" kannst du dir eigentlich sparen, wenn du es so wie in meinem Beispiel machst. Du kennst ja am Anfang den Wert, in welchem das Array dimensioniert ist. Bei deiner Variante muss er bei jedem Loop im Speicher den Wert wieder anpassen... (Performance) -
-
Poste doch 'mal den Code. Wie hast du das bis jetzt realisiert?
-
Nein, das gibt es leider nicht. Aber ich habe jetzt bemerkt, dass ich sowieso das falsche Feld hole!
Ich muss nämlich den memberOf haben, nicht den member. Und mit dem memberOf kann man dann durchloopen. (Der member war glaub ich sowieso leer, bei meinen Usern. Der ist nur bei Gruppen-Objekten vorhanden, und ich hole die User-Objekte) :roll:
Für alle die's interessiert, hier der Loop durch die Gruppen:
CodeCall ws.CurrentDocument.FieldAppendText("Userdata","MEMBER: ") vMemberOf=objRecordset.Fields("memberOf").Value If Isarray(vMemberOf) Then Forall Group In vMemberOf Call ws.CurrentDocument.FieldAppendText("Userdata", Group) Call ws.CurrentDocument.FieldAppendText("Userdata", LSEnter) End Forall End If
-
Wieso definierst du das Richtext Item als Variant?
Versuch's doch mit
Von wem wird das ganze ausgelöst? User oder Agent? Eventuell musst du die ECL beachten. Bei Agenten den Runtime Security Level. Das ExtractFile ist eine restricted Methode.
-
Hallo taurec
Das hab ich von einem Beispiel im Netz, welches ich gefunden habe...
Aber auch ein
nützt nichts. Da verlangt er einen String.
Ein CStr() darum herum bringt auch nichts. Ebenfalls
Da sagt er "Wrong number of arguments for automation object" -
-
Hallo allerseits
Ich bin gerade daran ein Script zu schreiben um Active Directory Daten auszulesen. Hab' es dabei mit ADODB versucht und stehe nun mit einem Mehrfachwert-Feld des externen Objektes an.
Folgender Code (testeshalber schreibe ich alles mal in ein Textfeld auf dem Formular):
CodeDim objConnection As Variant Set objConnection=CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" Dim ojbCommand As Variant Set objCommand=CreateObject("ADODB.Command") Set objCommand.ActiveConnection=objConnection objCommand.CommandText= "<LDAP://dc=firma,dc=ch>;(objectCategory=User);distinguishedName,name,member;subtree" Dim objRecordSet As Variant Set objRecordSet=objCommand.Execute Dim ws As New NotesUIWorkspace While Not objRecordSet.EOF Call ws.CurrentDocument.FieldAppendText("Userdata", "USER: " & objRecordSet.Fields("Name").Value) Call ws.CurrentDocument.FieldAppendText("Userdata", LSEnter) Call ws.CurrentDocument.FieldAppendText("Userdata",objRecordSet.Fields("distinguishedName").Value) Call ws.CurrentDocument.FieldAppendText("Userdata", LSEnter) Call ws.CurrentDocument.FieldAppendText("Userdata","MEMBER: ") Call ws.CurrentDocument.FieldAppendText("Userdata", LSEnter & LSEnter) objRecordSet.MoveNext Wend objConnection.Close
Das Problem liegt nun beim objRecordSet.Fields("member"). Dies ist ein Multivalue Feld.
Eine Zuweisung wieschlägt fehl. Und durch das Objekt kann ich nicht durchloopen, weil LS es nicht als Array "erkennt".
Wenn ich den Wert einer Variable (Variant) zuweise, dann hat die Variable nachher den Wert NULL.
Auch eine Zuweisung in der Artbringt nichts.
Schlussendlich müsste es eigentlich einen Loop im Sinne von
CodeForall element In objRecordSet.Fields("member") Call ws.CurrentDocument.FieldAppendText("Userdata", element) End Forall
gebenKann mir jemand weiterhelfen?
-
Als Ergänzung, das Statement von IBM:
http://www-1.ibm.com/support/docview.wss?uid=swg21113895 -
Hmm...also ich kann da nicht ganz folgen. Wie mach ich denn in LS keine Ableitung, sondern referenziere nur aufs übergeordnete??
Ich hab glaub ich das ganze noch nicht ganz begriffen... :-?
-
Ja, also OO Technisch wird das nicht korrekt sein, was ich mache hab ich in der Zwischenzeit bemerkt. Ich müsste nämlich eine Utility Klasse machen für meine "getMessage" Funktion, und dann diese Utility Klasse instanzieren.
Aber deine Aussage muss ich entkräften, ein Methoden Aufruf einer Übergeordneten Klasse kann ich mit Klassenname..Funktionsaufruf machen. Hab ich auch in entsprechenden OO Beispiel-Datenbanken so gesehen. ...oder du meinst etwas anderes.
Ich kann ihn natürlich auch mit Me.Funktionsaufruf machen, oder mit Funktionsaufruf. Das steht mir alles frei. Ich machs eigentlich nur mit Klassenname..Funktionsaufruf weil ich damit einen besseren Überblick habe wo die Funktion herkommt. Aber eigentlich von der Klassen-Logik her wäre es wohl besser ein Me.Funktionsaufruf zu machen.
Aber die Erfahrung kommt halt erst durch die Anwendung. -
taurec: Nein, ich hab Option Declare eingeschaltet, und der Compiler "meckert" da gar nichts rum.
leth: Das hab ich ja geschrieben, dass es mit "Me.Title" geht. Die Frage ist, weshalb es mit "ProUIMultiLanguage..Title" nicht funktioniert. Diese Syntax passt mir nämlich besser, da ich dann auf einen Blick sehe welche Klasse ich verändere/aufrufe. Grundsätzlich könnte ich sogar Title="" schreiben, das funktioniert auch. Aber die Pflegbarkeit der Klasse leidet dann arg darunter.
Bei anderen Klassen hab auch immer mit "ProUIMultiLanguage..Title" gearbeitet, und es hat immer funktioniert, eben ausser jetzt, wenn ich das in einem ForAll Loop drin mache, da verliert er irgendwie den Fokus...
-
Okay, stark vereinfacht:
ScriptLibrary ProUIMultiLanguage:
CodePublic Class ProUIMultiLanguage Private cTitle As String Private cPrompt As String Property Set Title As String Me.cTitle=Title End Property Property Set Prompt As String Me.cPrompt=Prompt End Property Public Function getMessage() As Integer getMessage=Msgbox(Me.cPrompt,,Me.cTitle) End Function End Clas
ScriptLibrary ProUIForm, vererbt von MultiLanguage:
CodeClass ProUIForm As ProUIMultiLanguage Sub new(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant) On Event queryReCalc From Source Call queryReCalc End Sub Private Sub queryReCalc(Source As Notesuidocument, Continue As Variant) Dim arrFields(1) As String arrFields(0)="Feld1" arrFields(1)="Feld2" Forall Element In arrFields 'Me.Title="Feldnamen" 'Me.Prompt="Feld Name: " & Element 'Call Me.getMessage() ProUIMultiLanguage..Title="Feldnamen" ProUIMultiLanguage..Prompt="Feld Name: " & Element Call ProUIMultiLanguage..getMessage() End Forall End SubEnd Class
Dann hab ich ein Form.
Im Options Teil:Im Declarations:
Im QueryOpen:
Nun, wenn ich die Properties und den Auftruf mit "ProUIMultiLanguage.." dann verliert er "Element", wenn ich (wie mein remark) den auftruf mit Me.Title etc mache, dann funzt es.
-
Hallo zusammen
Ich habe folgende Klassen:
UIMultiLanguage
mit Property Set und Get Title
und Property Set und Get PromptDann eine Methode getMessage(), bei welcher eigentlich eine Messagebox mit den Properties angezeigt wird.
Nun habe ich eine Klasse UIForm, bei welcher UIMultiLanguage vererbt wird. Dort will ich nun die Methode getMessage() aufrufen.
Ich verändere dazu erst:
UIMultiLanguage..Title="Titel"
UIMultiLanguage..Prompt="Text zum Anzeigen"und dann rufe ich die mit:
Call UIMultiLanguage..getMessage()
die Funktion auf.Nun mache ich das ganze noch in einem:
Forall Element in ArrrayField
drin.Sobald er den Titel von UIMultiLanguage setzt, verliere ich in UIForm "Element"? Kann mir jemand weiterhelfen?
Ist das überhaupt OO Konform wie ich das mache? Oder müsste ich UIMultiLanguage instanzieren und die Methode so ausführen (Dann funktionerts übrigens).
Greets
Nachtrag: Wenn ich in UIForm mit:
Titel="Titel"
Prompt="Text zum Anzeigen"
Call getMessage()
arbeite, dann funktionierts :-? -
Um was geht's denn? Wenn die Regel versteckt irgendwas ausführen muss, wieso machst du dann nicht einen Agenten "After new Mail has arrived"?
Greets
-
Benutz doch die Dir Fuktion:
To determine whether a particular file exists, use an exact file name for the file_spec argument to Dir or Dir$. The return value is either the file name or, if the file does not exist, the empty string ("").
Greets
Patrick