Autor Thema: Error 4207: Function requires a valid ADT argument  (Gelesen 3956 mal)

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
hallo,

ich habe eine frage - warum liefert mir

Set NewDoc = Doc.CopyToDatabase(ZielDB)

einen fehler anstatt dem neuen document zurück?

kommt aus folgenden zusammenhang:

Function CopyAllDocs(qserver As String, qdb As String, zpath As String, qview As String) As Integer
   On Error Goto ErrHand
   '-1 = error
   '>0 = ok
   Dim QuellDB As NotesDatabase
   Dim QuellView As NotesView
   Dim ZielDB As NotesDatabase
   Dim Session As New NotesSession
   Dim vc As NotesViewEntryCollection
   Dim entry As NotesViewEntry   
   Dim Doc As NotesDocument
   Dim NewDoc As NotesDocument   
   Dim f As Long
   Dim ActDB As Integer
   
   
   CopyAllDocs = -1
   Set QuellDB = Session.GetDatabase(qserver, qdb, False )   
   QuellDB.FolderReferencesEnabled = True
   Set QuellView = QuellDB.GetView(qView)
   Set vc = quellview.AllEntries
   Set entry = vc.GetFirstEntry()
   Set Doc = entry.Document
   
   ActDB = 0
   Set ZielDB = Session.GetDatabase(qserver,Cstr(ActDB)+"_"+qdb, False)
   
   For f = 1 To vc.Count
      If f = DBSchnittmarken(ActDB) Then
         Call WriteLog("Wechsle zu Ziel-DB Nr: " & Cstr(ActDB), Info)
         Print "Wechsle zu Ziel-DB Nr: " & Cstr(ActDB)
         ActDB = ActDB + 1
         Set ZielDB = Session.GetDatabase(qserver,Cstr(ActDB)+"_"+qdb, False)
      End If      
      
      Set entry = vc.GetNthEntry(f)
      Set Doc = entry.Document
      Set NewDoc = Doc.CopyToDatabase(ZielDB)
      

      Forall ActFolder In doc.FolderReferences
         Call NewDoc.PutInFolder(ActFolder,True)         
      End Forall
      
   Next
   
   
   
   CopyAllDocs=1
   
   Exit Function
   
ErrHand:   
   Call ErrHandSub()
   Resume Next
End Function
« Letzte Änderung: 21.06.04 - 17:40:06 von HipSlu »
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Error 4207: Function requires a valid ADT argument
« Antwort #1 am: 21.06.04 - 17:41:46 »
Liefert denn
Set Doc = entry.Document
noch ein NotesDocument zurück ? Die Fehlermeldung weist darauf hin, dass da nix mehr zu holen war (gleiches kommt ja zum Bleistift auch, wenn man ein
Call doc.Remove mit anschliessendem
Set doc = view.getNextDocument (doc)
macht.

Bernhard

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Error 4207: Function requires a valid ADT argument
« Antwort #2 am: 21.06.04 - 17:43:09 »
ja - ausser der debugger hat mich belogen  ;D
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

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:Error 4207: Function requires a valid ADT argument
« Antwort #3 am: 21.06.04 - 18:22:30 »
ich vermute, dass mit der ZielDB was nicht stimmt.
steckt das was drin?
Thomas

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

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Error 4207: Function requires a valid ADT argument
« Antwort #4 am: 21.06.04 - 19:37:56 »
ich vermute, dass mit der ZielDB was nicht stimmt.

hm, glaub ich weniger; ich bin dabei ein script zu basteln, welches eine mail-db in x cd-taugliche happen zerteilt - siehe
http://www.atnotes.de/index.php?board=3;action=display;threadid=16167;start=0

d.h. die zieldbs sind neue leere kopien; ich denke mal, die sind ok

steckt das was drin?
?
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

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:Error 4207: Function requires a valid ADT argument
« Antwort #5 am: 21.06.04 - 19:49:44 »
steckt das was drin?
?

ich meine, ist ZielDB ein Objekt in der Zeile, in der der Fehler auftritt?
Thomas

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

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Error 4207: Function requires a valid ADT argument
« Antwort #6 am: 21.06.04 - 19:54:33 »
ok, jetzt blamier ich mich wohl ziemlich sicher; aber ich versteh nicht, was du meinst  :-[ sorry
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

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:Error 4207: Function requires a valid ADT argument
« Antwort #7 am: 21.06.04 - 20:28:49 »
kein Problem

wenn du mal diese Änderung machst

   For f = 1 To vc.Count
      If f = DBSchnittmarken(ActDB) Then
         Call WriteLog("Wechsle zu Ziel-DB Nr: " & Cstr(ActDB), Info)
         Print "Wechsle zu Ziel-DB Nr: " & Cstr(ActDB)
         ActDB = ActDB + 1
         Set ZielDB = Session.GetDatabase(qserver,Cstr(ActDB)+"_"+qdb, False)
          If ZielDB is Nothing Then
               Messagebox "Kein Databaseobjekt"
            End if

      End If  

kommt dann die Messagebox?
Grundsätzlich ist es ratsam nicht immer davon auszugehen, dass eine Variable nach einer Zuweisung immer auf ein Objekt zeigt.
Thomas

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

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Error 4207: Function requires a valid ADT argument
« Antwort #8 am: 21.06.04 - 20:34:58 »
ah, ok - nein, er springt nicht in die if-schleife.

auch hier nicht:

Set entry = vc.GetNthEntry(f)
Set Doc = entry.Document
if Doc is Nothing Then
        Messagebox "Kein Documentobjekt"
End if


Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

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:Error 4207: Function requires a valid ADT argument
« Antwort #9 am: 21.06.04 - 20:54:47 »
d.h. du hast vorher schon n Ziel-Datenbanken im Notes Client erstellt?
Thomas

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

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Error 4207: Function requires a valid ADT argument
« Antwort #10 am: 21.06.04 - 21:04:57 »
das ist nur eine function eines längeren scripts;
- ich gehe alle docs der quell-db durch, zähle doc.size hoch und merke mir in einem array bei erreichen einer vorher def. max. größe die "schnittmarke".
- dann erstelle ich mittels db.createcopy n kopien der db (ohne docs)
- mit dieser geposteten function wollte ich dann ansich die quell-db nochmals durchgehen, und lt. schnittmarken die documente in die zieldb's aufteilen sowie die zugehörigkeit zu den ordnern wiederherstellen.

zuvor hatte ich schon ein funktionierendes script, jedoch war es elendlich langsam: dort habe ich mittles "filecopy" komplette kopien der db erstellt und dann die "überschüssigen" docs herausgelöscht. wie gesagt: funktioniert, aber man wird alt.

auch diese jetzige vorgehensweise ist dumm bin ich endlich draufgekommen - wozu vorher alle dokumente durchgehen und "schnittmarken" erheben, und dann in einem 2ten schritt nochmals alle durchgehen und kopieren? naja, das muss ich dann noch ändern - aber zuvor frage ich mich, wieso das hier nicht funktioniert....
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

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:Error 4207: Function requires a valid ADT argument
« Antwort #11 am: 21.06.04 - 21:10:20 »
also der Fehler tritt definitiv dann auf, wenn die Zieldatenbank nicht existiert.
aber du sagst, sie existiert.
ich bin mir ziemlich sicher, dass der Fehler an der Variablen ZielDB liegt, oder irgendwie mit ihr zusammenhängt.
einen anderen Fehler kann ich nicht erkennen.
Thomas

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

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Error 4207: Function requires a valid ADT argument
« Antwort #12 am: 21.06.04 - 21:12:21 »
hm - naja auf jeden fall vielen dank für deine zeit; ich werde mich mal weiter spielen. danke!
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz