21. März 2006 10:25
Hallo zusammen
Ich habe ein Problem. Ich will beim drucken eines Verkaufsbeleges (Auftragsbestätigung, Lieferschein, ...) nur genau die markierte Zeile ausdrucken. Das heisst, hat ein Verkaufsauftrag mehrere Verkaufszeilen muss ich die nicht markierten ignorieren.
Die einzige Möglichkeit die ich bis jetzt gefunden habe ist den DataItemTableView auf der Verkaufszeile leer lassen. Dann könnte man die Zeilennummer manuell eingeben. Diese Lösung finde ich aber nicht so praktisch.
Kann mir jemand helfen?
Gruss
mada
21. März 2006 10:49
Hallo Manda,
leider kenne ich mich in der NAVI 4 DB nicht so aus, aber was meinst Du mit Markiert?
Den Befehl MARK und MARKEDONLY?
Gruß Mikka
21. März 2006 10:55
Hallo Mada
Due musst im Report nur eine neue Funktion (z.B.) Def(SalesLine) erzeugen.
Dann übergibst Du den Record mit den markierten Zeilen als Parameter.
In der Def Funktion musst Du diesen Record einer globalen Variable mit Copy zuweisen.
SalesLine2.Copy(Salesline) //Copy übernimmt Filter und Markierungen
Danach musst Du im OnPreDataItem der SalesLine diesen globalen Record dem DataItem wieder mit Copy zuweisen.
Klar? (Ich hoffe)
Gruss
Martin
21. März 2006 11:13
@mikka
Mit markierte Zeile meinte ich. Die Zeile im Verkaufsauftrag die auf der rechten Seite das "dreieck" hat.
@martinst
Ich habe alles gemacht. Jetzt habe ich nur noch ein Problem. Vielleicht eine blöde Frage aber wie rufe ich den Report jetzt auf.
21. März 2006 11:30
Mada
Fast wie normal
Du musst den Report als Variable definieren.
- Code:
....
Report.SetTableView(SalesHeader)
Report.Def(SalesLine) !!!
Report.Runodal
....
Good luck
21. März 2006 11:49
martinst
ich habe immer noch einen knopf. Ich habe alles gemacht. Aber nach dem Aufruf des Reports mit:
Report.PrintRow(SalesHeader)
passiert nicht. Muss ich in der Funktion noch was anpassen?
und wie finde ich heraus welche Zeile markiert ist?
danke
mada
21. März 2006 12:22
Mada
Ich habe Dir Quick&Dirty ein FOB mit einem Lösungsansatz erstellt.
Form 42, Menubutton Drucken, neues Item "AB markierte Zeilen"
Form 46, Funktion PrintMarkSalesLine implementiert
Report 205, Funktion Def eingebaut, Änderungen in Sales Line-OnPreDataItem
Lies mal das FOB in eine neutrale CH-DB ein.
Du musst die Zeilen nicht mit CTRL+F1 markieren, sondern mit der Maus "anmalen".
Gruss
21. März 2006 15:25
@martinst
Danke vielmals. Jetzt habe ich nur noch das Problem das es mir gar keine Positionen druckt. Ich bin schon ne weile am testen aber ich finde den Fehler nicht.
Bei deinem Beispiel druckt es die Positionen auch nicht. Hätest du vielleicht nochmals ein Tip
Danke
mada
21. März 2006 15:35
Hallo Mada
Doch in meinem Beispiel druckt es die Zeilen.
Sieh Dir einmal den Code der Funktion PrintMarkSalesLine() in Form 46 an.
Dort findest Du folgende Zeile
CurrForm.SETSELECTIONFILTER(Rec2);
Das heisst, es werden alle mit der Maus markierten Datensätze gedruckt. Die markierten heisst hier aber nicht die Satzmarkierten .Mark(TRUE), sondern die angemalten.
Wenn Du willst, dass wirklich die Satzmarkierten (Ctrl+F1) gedruckt werden, musst Du nur die Zeile auskommentieren.
//CurrForm.SETSELECTIONFILTER(Rec2);
Das wars
Gruss
21. März 2006 17:08
@martinst
Danke nochmals für die Hilfe. Hat mir enorm geholfen.
Klappt alles wunderbar.
Den Code:
CurrForm.SETSELECTIONFILTER(Rec2);
habe ich nicht gefunden aber man kann ja mal was selber machen
Aber noch ne letzte Frage:
Es ist schon so das ich am Schluss nach dem Befehl
OrderConfirmation.RUNMODAL;
noch ein
Rec.RESET;
mache. Um den Filter zurückzusetzten
Gruss
mada
21. März 2006 17:13
Hallo Mada
Wieso Reset?
Wenn Du meinen Code anschaust, verwende ich in Form 46 ja als Variable Rec2, eben aus genau diesem Grund, dass die Filter nicht auf den OriginalRecord angewendet werden.
P.S.
Aus welcher Ecke der Schweiz kommst Du eigentlich?
21. März 2006 17:28
Jetzt bin ich ein bisschen durcheinander:
Das ist der Code im Form 46 den ich von Dir habe. Das "Fette" habe ich hinzugefügt.
- Code:
PrintMarkSalesLine()
//**
CLEAR(OrderConfirmation);
[b]CurrForm.SETSELECTIONFILTER(rec);[/b]
SalesHeader2.GET("Document Type", "Document No.");
SalesHeader2.SETRECFILTER;
SalesHeader2.FIND('-');
OrderConfirmation.Def(Rec);
OrderConfirmation.SETTABLEVIEW(SalesHeader2);
OrderConfirmation.RUNMODAL;
[b]rec.reset;[/b]
//**
Ich komme aus der nähe SG und du?
Gruss
mada
21. März 2006 17:37
Hallo Mada
Aha, jetzt ist es klar
Definiere eine neue lokale Var Rec2 SalesLine
Dann schreibst du statt
CurrForm.SETSELECTIONFILTER(rec);
CurrForm.SETSELECTIONFILTER(Rec2);
Dann kannst Du Dir das Reset sparen.
Ich komme aus Langenthal. Du aus SG, dann Alpha?
21. März 2006 17:55
Danke.
Nein ich arbeite nicht bei der ALPHA.
Gruss
mada
21. März 2006 17:57
Sondern???
22. März 2006 09:13
Du bist aber neugierig. schau in dein postfach
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.