Autor Thema: Function requires a valid ADT argument  (Gelesen 5353 mal)

Offline JanHoener

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • auf der Suche...
Function requires a valid ADT argument
« am: 30.04.05 - 19:07:09 »
hallo zusammen.
ich habe folgendes Script:
Sub Initialize
   Dim s As New notessession
   Dim db As notesdatabase
   Dim col As notesdocumentcollection
   Dim docLoop As notesdocument
   Dim docWork As notesdocument
   Set db=s.currentdatabase
   Set col=db.alldocuments
   Set doc=col.getfirstdocument
   While Not doc Is Nothing
      Set docWork=docLoop
      Set docLoop=col.getnextdocument(docWork)
      If docWork.form(0)={Album} Then
         docWork.AltInterpretSort=Metaphon(docWork.Interpret(0))
         Call docWork.save(True,True)
      End If
   Wend
End Sub

Dies ist angepasst und von http://www.sns1.de/partner/flamme/wflamme.nsf/Shortcut/Klangfarben?OpenDocument&ExpandSection=2#_Section2 übernommen.
Meine Anpassungen: ich möchte auf die Maske "Album" zugreifen, das zu Prüfende Feld heißt "Interpret" und geschrieben wird in das Feld "AltInterpretSort".

Was mache ich falsch?

Marinero Atlántico

  • Gast
Re: Function requires a valid ADT argument
« Antwort #1 am: 30.04.05 - 19:17:26 »
Kein Errorhandling.
Dann könntest du nämlich sehen in welcher Zeile dieser Fehler auftritt:
Probier das mal:
Code
Sub Initialize
on Error goto ABJETZTBENUTZEICHIMMERERRORHANDLING
   Dim s As New notessession
   Dim db As notesdatabase
   Dim col As notesdocumentcollection
   Dim docLoop As notesdocument
   Dim docWork As notesdocument
   Set db=s.currentdatabase
   Set col=db.alldocuments
   Set doc=col.getfirstdocument
   While Not doc Is Nothing
      Set docWork=docLoop
      Set docLoop=col.getnextdocument(docWork)
      If docWork.form(0)={Album} Then
         docWork.AltInterpretSort=Metaphon(docWork.Interpret(0))
         Call docWork.save(True,True)
      End If
   Wend
exit sub
ABJETZTBENUTZEICHIMMERERRORHANDLING:
print |Fehler in --Name-- | & Error$ & "(" & Cstr(Err) & ") in Zeile:" & Cstr(Erl)
exit sub
End Sub

Offline JanHoener

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • auf der Suche...
Re: Function requires a valid ADT argument
« Antwort #2 am: 30.04.05 - 19:21:07 »
er sagt mir fehler in zeile 13...und nun?

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Function requires a valid ADT argument
« Antwort #3 am: 30.04.05 - 19:34:58 »
docLoop ist hier wohl "Nothing".
Die doc - Variable hast Du gar nicht deklariert.

Auf den ersten Blick musst Du mal Deine Variablen-Bezeichnungen checken.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Function requires a valid ADT argument
« Antwort #4 am: 30.04.05 - 19:38:54 »
Und mit Option Declare wäre das nicht passiert ...

Marinero Atlántico

  • Gast
Re: Function requires a valid ADT argument
« Antwort #5 am: 30.04.05 - 19:47:43 »
er sagt mir fehler in zeile 13...und nun?
Das hättest du auf die entsprechende Zeile mappen können.
So mußte Mathias die Zeilen durchzählen.
Ist jetzt nicht persönlich gemeint, aber wenn du das Ergebnis dieses Threads ernst nimmst, hast du eine Menge gelernt.
Viel wichtiger als ein enzyklypodisches Wissen über die Bedeutung jeder Fehlermeldung ist eine entsprechende Arbeitsmethodik. Meine Kunden kapieren das auch nicht, aber die Anzahl der Fehlermeldungen aus einer Computerplattform ist größer als das menschliche Gedächtnisvermögen.
Was kostet Zeit: Einen Fehler zu lokalisieren oder einen Fehler zu beheben?
Einen Fehler zu lokalisieren.
Wie kannst du den Fehler lokalisieren?
Durch die Zeile, die ich gepostet habe.

Aus deinem Code direkt ging der Fehler unbedingt gar nicht hervor. Man mußte die Nebenannahme machen, dass du in die Option-Sektion des Skripts kein Option Declare geschrieben hast, was die meisten machen und eine best practice ist.

Gruß Axel

Offline JanHoener

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • auf der Suche...
Re: Function requires a valid ADT argument
« Antwort #6 am: 30.04.05 - 19:49:26 »
Was meint ihr mit Option Declare?

Offline DaWutz

  • Senior Mitglied
  • ****
  • Beiträge: 253
  • Geschlecht: Männlich
Re: Function requires a valid ADT argument
« Antwort #7 am: 30.04.05 - 19:51:18 »
Schreib das vor dein Script, und Du wirst von Notes GEZWUNGEN alle Variablen ordentlich zu deklarieren. Gibt am Anfang sicherlich viel Mecker, aber wenn man sich dran gewöhnt hat, vergisst man auch nichts zu deklarieren und bekommt keine Fehlermeldungen mehr in diese Richtung!
Grüße aus Bonn,

Daniel!

Domino 6.5.3 auf Win2k
Clients ab 6.01 CF2

>>... es ist mir scheißegal wer Dein Vater ist! Solange ich hier angele, wird NICHT über´s Wasser gelaufen!! <<

Offline JanHoener

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • auf der Suche...
Re: Function requires a valid ADT argument
« Antwort #8 am: 30.04.05 - 19:57:08 »
habe jetzt noch Dim doc As notesdocument eingefügt. Meiner MEinung ist alles deklariert. Aber er meckert immer noch über den gleichen Fehler.
Versteh ich einfach nicht!

Offline DaWutz

  • Senior Mitglied
  • ****
  • Beiträge: 253
  • Geschlecht: Männlich
Re: Function requires a valid ADT argument
« Antwort #9 am: 30.04.05 - 20:01:55 »
Also wenn ich das richtig sehe, dann ist dies
Code
Set docWork=docLoop
      Set docLoop=col.getnextdocument(docWork)
in der falschen Reihenfolge.

Zuerst sagst Du ihm er soll docWork mit dem docLoop befüllen, und im nächsten Schritt füllst du erst docLoop - wie soll das gehen?

Vor allem füllst Du docLoop mit einem Element aus einer Collection die auf docWork beruht - da beisst sich die Katze doch irgendwie in den Schwanz, oder? Setz vor der Schleife dein docLoop mal auf einen Wert und schau was passiert!
« Letzte Änderung: 30.04.05 - 20:05:02 von DaWutz »
Grüße aus Bonn,

Daniel!

Domino 6.5.3 auf Win2k
Clients ab 6.01 CF2

>>... es ist mir scheißegal wer Dein Vater ist! Solange ich hier angele, wird NICHT über´s Wasser gelaufen!! <<

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Function requires a valid ADT argument
« Antwort #10 am: 30.04.05 - 20:03:44 »
Jan,

bitte nicht einfach Code kopieren und anpassen, ohne zu wissen, was da passiert.
Siehe oben meine 1. Antwort. docLoop is Nothing. Du nutzt das NotesDocumentCollection Object, und holst Dir dort über docLoop bzw. dann docWork das nächste Dokument.
Aber Du hast nicht definiert, was das docLoop-Objekt überhaupt enthält. Du hast nur zugeordnet: docLoop = irgend ein NotesDocument (über Dim). Erstmal ist das also leer. Du musst aber jetzt docLoop ein physisches Dokument zuordnen.

Tipp: Geh Zeile für Zeile durch. Wenn Du eine Zeile nicht verstehst: poste hier, wir erklären gerne.

Was meint ihr mit Option Declare?
Benutz bitte auch die Designer-Hilfe. Im Designer: F1 drücken. Dort wird Option Declare auch erklärt.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Marinero Atlántico

  • Gast
Re: Function requires a valid ADT argument
« Antwort #11 am: 30.04.05 - 20:06:53 »
in Zeitlupe:
Code
Dim s As New notessession
   Dim db As notesdatabase
   Dim col As notesdocumentcollection
   Dim docLoop As notesdocument
   Dim docWork As notesdocument
   Set db=s.currentdatabase
   Set col=db.alldocuments
   Set doc=col.getfirstdocument
   While Not doc Is Nothing
      Set docWork=docLoop : docLoop ist Nothing. DocWork ist auch Nothing
      Set docLoop=col.getnextdocument(docWork) : docWork ist nothing deshalb fehler. 

Warum brauchst du eigentlich 3 NotesDocument Objekte (doc, docWork und docLoop).
Das ist mindestens 1 zuviel.
Durch die unökonomische Verwendung von Variablennamen wird dein Code unübersichtlich.

Eigentlich ist das, was in Java eine NullPointerException ist. Relativ schwer zu debuggen.
NullPointerExceptions sind oft Fehler, die schwer zu lokalisieren sind.

Offline JanHoener

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • auf der Suche...
Re: Function requires a valid ADT argument
« Antwort #12 am: 30.04.05 - 20:08:20 »
Naja, ansich dachte ich, dass der Agent wie angeboten laufen wird. Ist aber anscheinend nicht der Fall. Deswegen frage ich hier ja. Wenn ich alles kappieren würde, würd ich ja nicht fragen...

Wie gesagt, ich habe nichts selbst programmiert...lediglich copy & paste.
Wie sollte denn das Script aussehen?

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Function requires a valid ADT argument
« Antwort #13 am: 30.04.05 - 20:16:35 »
Copy & Paste schön und gut.
Tipp: trotzdem solltest Du immer verstehen, was Du da einsetzt.
Nutz doch die oben genannten Tipps als Chance, hierbei was zu lernen.
Man könnte Dir jetzt schnell die Lösung als Code komplett posten, aber was hast Du dann selbst für einen Nutzen davon?
Der Code ist eigentlich ein sehr schönes Beispiel, um was zu lernen. Du musst nur wollen.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline JanHoener

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • auf der Suche...
Re: Function requires a valid ADT argument
« Antwort #14 am: 30.04.05 - 20:19:50 »
glaub mir, ich würde wollen. Allerdings ist es das letzte, was mir noch zur vollständigen Datenbank fehlt und Abgabe ist in 40Min. Also ist es recht dringend!
Könntet ihr dieses mal nochmal ne Ausnahme machen?
Alles andere läuft schon.
Vielen Dank.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Function requires a valid ADT argument
« Antwort #15 am: 30.04.05 - 20:29:59 »
40 Minuten wirst Du IMHO so nicht einhalten können. Du weißt ja gar nicht, ob der Rest der Routine sauber funktioniert. Würde lieber um Verlängerung bitten oder das weglassen.

Wie auch immer:

<find>doc</find>
<replace_with>docLoop</replace_with>

Auf den ersten Blick sollte es das sein.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Function requires a valid ADT argument
« Antwort #16 am: 30.04.05 - 20:34:45 »
ersetze doc durch docLoop. Müsste reichen.
Der Agant wie er aud der Seite angeboten wird kann so nicht funktionieren.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline JanHoener

  • Junior Mitglied
  • **
  • Beiträge: 66
  • Geschlecht: Männlich
  • auf der Suche...
Re: Function requires a valid ADT argument
« Antwort #17 am: 30.04.05 - 20:52:00 »
vielen dank...jetzt läuft er...

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Function requires a valid ADT argument
« Antwort #18 am: 30.04.05 - 21:24:26 »
Danke, Thomas, das war die "lange" Schreibweise  :)

Eigentlich kann ich nicht nachvollziehen, wie man solch offensichtlich falschen Code auf einer Webseite publizieren kann. Zumindest einem erfahrenen Notes-Programmierer darf das eigentlich nicht passieren. Zumal das auch nicht ein Tippfehler ist (siehe Option Declare).

Weiteres Beispiel: http://www.11tmr.com/11tmr.nsf/d6plinks/MWHE-6AVMHV
« Letzte Änderung: 30.04.05 - 21:27:41 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Function requires a valid ADT argument
« Antwort #19 am: 30.04.05 - 23:46:20 »
Ich verstehe es nicht. Absolut nicht.
Was jemand im Web veröffentlicht, ist sein Vergnügen. Wenn er wegen Schusslichkeit in einen Code einen Fehler 'reinbringt (muss ja bei Wolfgang Flamme so gewesen sein, denn der Code hat ja bestimmt irgendwann vorher bei ihm funktioniert), so kann man das beklagen, aber nicht verklagen - der Code ist ja für lau. Wenn Wolfgang Flamme den Code unnötig verkompliziert (wozu zwei NotesDocument objects?), ist das ebenfalls nur beklagbar, aber auch nicht verklagbar.
Wenn aber jemand in einer wissenschaftlichen Arbeit etwas unbesehen und vollkommen unverstanden übernimmt - sorry, dafür habe ich keinerlei Verständnis. Derartige Arbeiten wurden während meines Studiums haarklein von den Prüfern auseinandergenommen - spätestens bei der mündlichen Abnahme / Prüfung der Arbeit, wir wären gar nicht auf die Idee gekommen, da irgendwas einzubauen, was wir nicht verstanden oder selber gemacht hätten.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz