Basisrefernz via LD.QueryData pro Zeile
Rolf Mettler
Hallo zusammenWer kann mir den Knopf lösen.
Ich versuche in der Redchnung pro Zeile die Basisreferenznummer des Kundenauftrages zurückzugeben.
txtBaseDocument.Value = LD.QueryData("SELECT distinct T0.DocNum FROM ORDR T0 inner join RDR1 T1 On t0.DocEntry=t1.docentry inner join DLN1 T2 On t1.TrgetEntry=T2.docentry inner join RDN1 T3 On t2.TrgetEntry=T3.docentry inner join ORDN T4 On t3.DocEntry=t4.docentry WHERE T1.TargetType = 15 AND T2.TargetType = 16 AND T4.DocNum=" & GetData("LD.Par.DocNum"))
Leider bekomme ich so keinen Wert zurück.
Wie muss ich die Query anpassen, dass ich pro INV1 Zeile jeweils die Dokumentennummer des Auftrages bekomme.
DANKE und Gruss
Rolf
Manuel Marhold
Hi Rolf,in deiner Query gehst du davon aus, dass der Artikel von dem Auftrag (RDR1) in einen Lieferscehin (DLN1) und dann in eine Retoure (RDN1) umgewandelt wurde. Danach kann es keinen weiteren Verweis auf die Rechnung geben.
Wenn du immer den Ablauf Auftrag-Lieferschein-Rechnung hast, würde ich die Query wir folgt aufbauen:
txtBaseDocument.Value = LD.QueryData("SELECT DISTINCT AK.DocNum FROM ORDR AK INNER JOIN RDR1 AL ON AK.DocEntry=AL.DocEntry WHERE AL.DocEntry=" & GetData("LD.Par.DocEntry"))
Gruß
Manuel
Rolf Mettler
Hallo ManuelDanke für deinen Beitrag. Habe dann gemerkt, dass ich fälschlicherweise auf die ORDN ging anstelle auf die OINV.
Das mir deine Lösung das gleiche Resultat zurück gibt wundert mich zwar aber ist natürlich toll (viel einfacher).
Wieso bekomme ich jetzt auf allen Basisbezügen die Auftragsnummer der ersten Artikelzeile?
Gruss und DANKE
Rolf
Manuel Marhold
Hi Rolf,das liegt daran, dass der Zeilenbezug fehlt.
txtBaseDocument.Value = LD.QueryData("SELECT AK.DocNum FROM ORDR AK INNER JOIN RDR1 AL ON AK.DocEntry=AL.DocEntry WHERE AL.DocEntry=" & GetData("LD.Par.DocEntry") & " AND AL.LineNum=" & GetData("LD.Par.DocLine"))
Hier kann dann auch das DISTINCT raus, da wird nur einen Datensatz zurückbekommen, eine Zeile kann ja nicht zweimal in einem Dokument auftauchen..
Gruß
Manuel
Manuel Grenacher
Hallo RolfDu musst du LineNum noch mit einbauen.
Ich habe Dir hier eine neue Query geschrieben.
Die LineNum musst du aus dem DatenBand nehmen!
Achtung, Query aus dem Kopf geschrieben, bitte vorher testen...
txtBaseDocument.Value = LD.QueryData("SELECT T3.DocNum FROM INV1 T0
INNER JOIN DLN1 T1 ON T0.BaseEntry = T1.DocEntry AND T0.BaseLine = T1.LineNum
INNER JOIN RDR1 T2 ON T1.BaseEntry = T2.DocEntry AND T1.BaseLine = T2.LineNum
INNER JOIN ORDR T3 ON T2.DocEntry = T3.DocEntry
WHERE T0.DocEntry =" + Document("DocEntry") + " AND T0.LineNum = "+DocumentRow("LineNum"))
Philipp Knecht
Hi RolfFüge am Schluss der existierenden LD.QueryDatas (im generateScript) folgendes Statement hinzu:
'Spezialfall Rechnung
If GetData("LD.Par.FormType")="133" Then
txtBaseDocument.Value = GetData("LD.Txt.T0000073") + " " + LD.QueryData("SELECT DISTINCT CAST(T3.DocNum AS NVARCHAR) + ' ' + CONVERT(NVARCHAR(10),T3.DocDate,104) + ' ' + ISNULL(T3.NumAtCard,'') FROM INV1 T0 INNER JOIN DLN1 T1 On T0.BaseEntry = T1.DocEntry And T0.BaseLine = T1.LineNum And T0.BaseType = 15 INNER JOIN RDR1 T2 On T1.BaseEntry = T2.DocEntry And T1.BaseLine = T2.LineNum And T1.BaseType = 17 INNER JOIN ORDR T3 On T2.DocEntry = T3.DocEntry WHERE T0.DocEntry = " & GetData("LD.Par.DocEntry") & " And T0.LineNum = " & DocumentRow("LineNum"))
End If
hth
Markus Klees
Ich weiß das der Code von 2007 ist. Aber ich brauche genau das gleiche. Nur leider scheint der Code nicht mehr zu funktionieren. Gibt es da einen neuen? Ich brauche dringend in der Rechnung die Auftragsnummer (auch wenn es mehrere Aufträge sind). Am besten zusätzlich zu der Anzeige der Lieferscheinnummern.
0
Please sign in to leave a comment.
Comments
0 comments