Hallo zusammen,
ich bin gerade dabei einen kleinen Beleggenerator in Excel zu schreiben und mir gelingt es nicht die Charge an die Position zuu heften. Was mache ich falsch ? Anbei der Source aus dem Excel-Beispiel, der nicht klappt:
'Einzelne Rechnungspositionen dem Beleg hinzugefügen:
'Dies geschieht in einer Schleife, welche alle Excel-Zeilen von 14 bis 99 nach
'Einträgen für Artikel- und Textpositionen duchsucht
Private Function bSetPositionen() As Boolean
Dim nPosType As Integer
Dim sPos As String
Dim sPosText As String
Dim sArtikelnummer As String
Dim sCharge As String
Dim cEinzelpreis As Currency
Dim bManuellerPreis As Boolean
Dim cMenge As Currency
Dim i As Integer
Dim oCharge As ChargenEintrag
Dim oChargen As ChargenEintraege
Dim oLagerPos As clsAbfLagerPosition
Stop
For i = 13 To 20
sPos = CStr(oSheet.Cells(i, 1))
sPosText = CStr(oSheet.Cells(i, 2))
sCharge = CStr(oSheet.Cells(i, 5))
'ggf. Erzeugen der Positionen beenden
If (gbNull(sPos) And gbNull(sPosText)) Then
Exit For
End If
'Erzeugen und initialisieren eines neuen Positionsobjekts im Beleg
Set oPos = New AbfBelegPosition
bOk = oPos.bCreate(oBeleg)
If gbNull(sPos) Then
bOk = oPos.bInitialize(AbfPositionstyp.olText)
oPos.sLangText = sPosText
Else
sArtikelnummer = sPosText
bManuellerPreis = Not IsEmpty(oSheet.Cells(i, 3))
cEinzelpreis = gcCCur(oSheet.Cells(i, 3))
cMenge = gcCCur(oSheet.Cells(i, 4))
bOk = oPos.bInitialize(AbfPositionstyp.olArtikel)
oPos.sPosition = sPos
bOk = oPos.bSetArtikel(sArtikelnummer, 0)
oPos.cMenge = cMenge
If oPos.bChargenPflicht Then
Set oCharge = New ChargenEintrag
oCharge.Charge = gsCStr(sCharge)
' oCharge.lBestandsID = mlBestandID
oCharge.Menge = 1
oCharge.lBestandsID = 367124
Set oPos.colPrevChargen = New ChargenEintraege
oPos.colPrevChargen.Add oCharge
End If
If bManuellerPreis Then
'Wenn in der Excel Tabelle in Spalte 3 ein Preis eingetragen ist,
'ersetzt dieser den Artikelpreis und das Kennzeichen für manuellen Preis wird gesetzt
oPos.cEinzelpreis = cEinzelpreis
oPos.bEinzelpreisManuell = True
End If
End If
'Basismenge neu ermitteln
oPos.RefreshMengen True, 0
'Menge aus Basismenge neu ermitteln
oPos.RefreshMengen2 True, 0
'Neuberechnung der Position
oPos.Recalc
'Hinzufügen der oben definierten Position zum Beleg
oBeleg.oPositionen.oAdd oPos
Next i
bSetPositionen = bOk
End Function
ich bin gerade dabei einen kleinen Beleggenerator in Excel zu schreiben und mir gelingt es nicht die Charge an die Position zuu heften. Was mache ich falsch ? Anbei der Source aus dem Excel-Beispiel, der nicht klappt:
'Einzelne Rechnungspositionen dem Beleg hinzugefügen:
'Dies geschieht in einer Schleife, welche alle Excel-Zeilen von 14 bis 99 nach
'Einträgen für Artikel- und Textpositionen duchsucht
Private Function bSetPositionen() As Boolean
Dim nPosType As Integer
Dim sPos As String
Dim sPosText As String
Dim sArtikelnummer As String
Dim sCharge As String
Dim cEinzelpreis As Currency
Dim bManuellerPreis As Boolean
Dim cMenge As Currency
Dim i As Integer
Dim oCharge As ChargenEintrag
Dim oChargen As ChargenEintraege
Dim oLagerPos As clsAbfLagerPosition
Stop
For i = 13 To 20
sPos = CStr(oSheet.Cells(i, 1))
sPosText = CStr(oSheet.Cells(i, 2))
sCharge = CStr(oSheet.Cells(i, 5))
'ggf. Erzeugen der Positionen beenden
If (gbNull(sPos) And gbNull(sPosText)) Then
Exit For
End If
'Erzeugen und initialisieren eines neuen Positionsobjekts im Beleg
Set oPos = New AbfBelegPosition
bOk = oPos.bCreate(oBeleg)
If gbNull(sPos) Then
bOk = oPos.bInitialize(AbfPositionstyp.olText)
oPos.sLangText = sPosText
Else
sArtikelnummer = sPosText
bManuellerPreis = Not IsEmpty(oSheet.Cells(i, 3))
cEinzelpreis = gcCCur(oSheet.Cells(i, 3))
cMenge = gcCCur(oSheet.Cells(i, 4))
bOk = oPos.bInitialize(AbfPositionstyp.olArtikel)
oPos.sPosition = sPos
bOk = oPos.bSetArtikel(sArtikelnummer, 0)
oPos.cMenge = cMenge
If oPos.bChargenPflicht Then
Set oCharge = New ChargenEintrag
oCharge.Charge = gsCStr(sCharge)
' oCharge.lBestandsID = mlBestandID
oCharge.Menge = 1
oCharge.lBestandsID = 367124
Set oPos.colPrevChargen = New ChargenEintraege
oPos.colPrevChargen.Add oCharge
End If
If bManuellerPreis Then
'Wenn in der Excel Tabelle in Spalte 3 ein Preis eingetragen ist,
'ersetzt dieser den Artikelpreis und das Kennzeichen für manuellen Preis wird gesetzt
oPos.cEinzelpreis = cEinzelpreis
oPos.bEinzelpreisManuell = True
End If
End If
'Basismenge neu ermitteln
oPos.RefreshMengen True, 0
'Menge aus Basismenge neu ermitteln
oPos.RefreshMengen2 True, 0
'Neuberechnung der Position
oPos.Recalc
'Hinzufügen der oben definierten Position zum Beleg
oBeleg.oPositionen.oAdd oPos
Next i
bSetPositionen = bOk
End Function