Seite 1 von 1

returned exit code 0 / script wird abgebrochen

Verfasst: Donnerstag 4. September 2008, 13:43
von beginner_
Bin ein wenig am ausprobieren und habe folgendes Test Skript:

Code: Alles auswählen

from win32com.client import GetActiveObject
cfapp = GetActiveObject("ChemFinder11.Application")
cfdoc = cfapp.ActiveDocument
cfrset = cfdoc.Recordset
cfmol = cfdoc.Fields("Structure")
cfid = cfdoc.Fields("Mol_ID")
current_MolID = cfrset.Value(cfid.index)
print current_MolID
#Path = "C:/Joos/temp.cdx"
#mol.Write(Path)
while not cfrset.EOF:
    mol = cfrset.Value(cfmol.index)
    print "Mol_ID: " + str(cfrset.Value(cfid.index))
    print "Atom Count: " + str(mol.Atoms.Count)
    cfrset.MoveNext() 
#hier wir das skript abgebrochen mit exid code 0.   
cfrset.MoveFirst
while cfrset.Value(cfid.index) < current_MolID:
    mol = cfrset.Value(cfmol.index)
    print "Mol_ID: " + str(cfrset.Value(cfid.index))
    print "Atom Count: " + str(mol.Atoms.Count)
    cfrset.MoveNext()

cfrset = 0
cfdoc = 0
cfapp = 0
mol = 0
Wie egsagt, der Sinn ist begrenzt ist nur zum ausprobieren, was möglich ist. Ich Frage mich jetzt aber wieso das Skript abgerochen wird an der genannten stelle?

Verfasst: Donnerstag 4. September 2008, 14:16
von BlackJack
Woher weisst Du, dass das Skript an der Stelle abgebrochen wird? Kann es nicht auch sein, dass die Bedingung der ``while``-Schleife gleich beim ersten mal schon `False` ist und das Skript ganz normal zum Ende durch läuft?

Verfasst: Freitag 5. September 2008, 05:51
von beginner_
BlackJack hat geschrieben:Woher weisst Du, dass das Skript an der Stelle abgebrochen wird? Kann es nicht auch sein, dass die Bedingung der ``while``-Schleife gleich beim ersten mal schon `False` ist und das Skript ganz normal zum Ende durch läuft?

Das Skript bedingt ja das diese Applikation Chemfinder geöffnet ist. Wenn ich im Skript ein MoveNext mache, sehe ich das in der Applikation, also im formular wird dann der nächste Datensatz angezeigt.

Und am ende des Skripts bin ich immer beim letzten datensatz. Die Idee wäre ja aber wieder beim gleichen wie zu beginn zu sein.
(Mol_ID = primary key/laufende nummer ohne lücken).

MoveFirst wird also nie ausgeführt, die while schlaufe vorher aber schon. Deshalb wird das Skript meiner Meinung nach da abgebrochen.

EDIT:
omg. Fehler gefunden.
cfrset.MoveFirst()
Die fehlenden Klammern waren die Ursache.