Update via DI ?
Andreas Schlingmann
Hallo,entweder ich habe ein :bang: oder es geht nicht. Ich dachte immer, man könne im Skrip über das DI ein Update durchführen. Finde aber weder ein Beispiel, noch bin ich kreativ genug, es irgendwie hinzubekommen.
Hintergrund : Beim Drucken eines Beleges möchte ich ein Benutzerfeld (wenn irgend möglich [u]nicht [/u]über SQL / UPDATE ORDR SET U_USERFIELD='D' WHERE ....) ändern.
"Ihr" macht das ja auch (mit dem Staus des Belegs - auf gedruckt setzen). Danke für jeden Tipp !
Andreas
Andreas Schlingmann
Wer lange sucht... findet auch wieder. Leider klappt es nicht, ich bekomme einen FehlerAngedachte Lösung :
Generate Script :
If Engine.IsDoublePass Then
AddHandler LayoutHelper.LD.AfterPrint,AddressOf LD_AfterPrint
End If
Common-Script :
Private Sub LD_AfterPrint(company As SAPbobsCOM.Company ,sendToPrintDriver As Boolean)
If GetData("LD.Par.Preview")="N" And GetData("LD.Par.PrintMode")="N" And GetData("LD.Par.AddMode") <> "Y" Then
Dim rdr As SAPbobsCOM.Documents
rdr=company.GetBusinessObject(17)
If rdr.GetByKey(Document("DocNum")) = True Then
rdr.UserFields.fields.item("U_UNI_DKZ").value="1"
Dim i As Integer = rdr.Update
If i <> 0 Then
System.Windows.Forms.MessageBox.Show("Fehler " & i & " Text " & company.GetLastErrorDescription(), "Fehler")
End If
End If
End If
End Sub
Das ist wohl nur eine Frage für Philipp : Woran liegt es ? Ich hänge mal die (nichtssagende) Fehlermeldung an. Im übrigen habe ich mit MSGBOX'en herausgefunden, das er beim GetBusinessObject abstürzt....
Danke !!
Andreas Schlingmann
Mit Philipp's Unterstützung hier die Lösung :Private Sub LD_AfterPrint(company As SAPbobsCOM.Company ,sendToPrintDriver As Boolean)
If GetData("LD.Par.Preview")="N" And GetData("LD.Par.PrintMode")="N" And GetData("LD.Par.AddMode") <> "Y" Then
Dim rdr As SAPbobsCOM.Documents
rdr=company.GetBusinessObject(SAPBobsCOM.BoObjectTypes.oOrders)
If rdr.GetByKey(Document("DocNum")) = True Then
rdr.UserFields.fields.item("U_UNI_DKZ").value="1"
Dim i As Integer = rdr.Update
If i <> 0 Then
System.Windows.Forms.MessageBox.Show("Fehler " & i & " Text " & company.GetLastErrorDescription(), "Fehler")
End If
End If
End If
End Sub
Manuel Marhold
Hi Andreas,musst du nicht bei getByKey die DocEntry nehmen???
Andreas Schlingmann
Das mag sein... mittlerweile läuft es. Eventuell habe ich das Skript noch einmal auf DocEntry geändert.Danke für den Hinweis!
Andreas Schlingmann
[u][color=#ff0000]ACHTUNG: Ich hatte dasselbe Problem wieder, und die Lösung lag daran: EINMAL DAS %TEMP% - Verzeichnis löschen, dann klappt es ![/color][/u]
0
Please sign in to leave a comment.
Comments
0 comments