Hi,
scheinbar ist das Problem ja gelöst, mit dem set doc = dc.GetNextDocument(doc).
Ich verstehe aber noch immer nicht was deine Funktion nun mit "nicht backend" zu tun hat.
Nur weil Du dein erstelltes Dokument einmal UI aufmachst, UI.Save() und zu machst ist das noch lange nicht "Frontend" -
Normalerweise kann man ja davon ausgehen, dass dies genügt,
aber Du hast die DB ja so beschrieben:
würde ich gern - aber das programmierproject der DB von der fremdfirma weist fehler und performanceprobleme auf und wenn ich per backend daten importier entfällt der support und damit ich firmenanweisung frontend
lg claudia
Und wenn sie so toll ist, kannst du sicher davon ausgehen, dass es hier irgendwelche Aktionen wie
- Daten eintragen, wenn das Dokument über eine Schaltfläche erzeugt wird,
- Daten verarbeiten, wenn das Dokument über eine Schaltfläche geschlossen wird,
- Feldvalidierungen und umsetzungen in z.B. Exiting()
...
und für sowas reicht ein UIDoc = WS.Edit + UIDoc.Save noch lange nicht aus.
Den Knaller hierzu habe ich neulich in einer DB gesehen:
im Exiting() von mehreren Feldern: ein db.search(), ob der eingegebene Wert eindeutig in der db ist....
(Ich dachte zuerst mir schläft das Gesicht ein
, als ich ausversehen in das Feld geklickt habe und dann zum nächsten wollte!)
jetzt bin ich auch abgeschweift.... sorry
Also zum Thema:
Damit bekommst Du GARANTIERT ein Laufzeitproblem
While Not(doc Is Nothing)
Set doc2 = db.GetDocumentByUNID(doc.UniversalID)
Set uidoc = ws.EditDocument(True, doc2)
Set doc2 = Nothing
Call uidoc.Save
Call uidoc.Close(True)
set doc = dc.GetNextDocument(doc)
Wend
uidoc.Close(imidiate) ist auch nicht wirklich sofort
und Du stolperst über es selbst selbst backend und frontend, da Dir anfänglich ja noch das
set doc = dc.GetNextDocument(doc)
fehlte!
Das UIDoc war trotzt Call uidoc.Close(True) zum zeitpunkt des nächsten
Set uidoc = ws.EditDocument(True, doc2) noch nicht zu!
Und wo / wie schreibst Du denn die Daten rein ? (Ist ja wohl backend!)
Ein doc.ComputeWithForm() ergibt eingentlich (fast) das selbe her,
ansonsten gäbe es noch
@Command( [ToolsRefreshSelectedDocs] )
bzw.
@Command( [ToolsRefreshAllDocs] )
die an deine Vorgehensweise auch herankommen!
Und wenn Du solche oder ähnliche Aktionen wie ich oben beschrieben habe in der DB hast,
Dann hast Du auch mit Deiner Aktion keine Chance!
-> am besten nachsehen, welche Aktionen da in der DB vorgehen.
Oft reicht aber der Import mit "sauberem" Datenbefüllen
und dann ein doc.computewithForm aus.
oder noch "simpler" eine saubere "Excelvorlage" als ".wk3/.wk4"
und ein Import mit "Lotus 123" sowie einem "Felder von Maske berechnen" beim importieren. (Ganz ohne Programmierung!)
Gruss, Pete(r)
PS: 23764273027282480476772824782236106480890947906260282406424809582554281
48 65 78 61 64 65 7A 69 6D 61 6C 20 67 65 68 74 73 20 61 62 65 72 20 64 61 6E 6E 20 6C 65 69 63 86 74 65 72 20 2D 20 64 61 6E 6B 20 54 6F 6F 6C 73 21