Seite 1 von 1

Label und Felder/Variablen [ERLEDIGT]

Verfasst: Mo, 03. Aug 2020 18:43
von Manfred
ich hatte einen Report, der eigentlich schon fertig war. Dann habe ich versucht diesen report als Label zu erzeugen. Dabei ist mir aufgefallen, das dann überhaupt nicht mehr die übergebenden Felder und Variablen im Assistenten abgefragt werden. Muß man die Felder für den Inhalt, der gedruckt werden soll, anders übergeben bei Label als bei Listen?

Re: Label und Felder/Variablen

Verfasst: Mo, 03. Aug 2020 18:50
von Wolfgang Ciriack
Beim Label gibt es keine Felder, nur Variablen.

Re: Label und Felder/Variablen

Verfasst: Mo, 03. Aug 2020 19:10
von Manfred
und das heißt?

Re: Label und Felder/Variablen

Verfasst: Mo, 03. Aug 2020 21:58
von Wolfgang Ciriack
LLDefineVariable() statt LLDefineField() bei der Deklaration und die Druckschleife etwas anders.

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 13:46
von Manfred
ich verstehe es trotzdem nicht. Was ist anders? Und wo kann man das nachlesen? Ich habe nichts dazu gefunden.

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 14:10
von Tom
Jesus, Manfred - keine Ahnung, wie oft wir das hier schon diskutiert haben. Felder gibt es in L&L nur im Kontext von Tabellenobjekten (und Charts), also bei List-Projekten. Variable bilden sozusagen die Klammer und sind über das Druckprojekt hinweg (mindestens aber auf einer Druckseite) gleich, Felder iterieren. Bei Label-Projekten ist das auch so, nur dass das einzelne Etikett als Druckprojekt gilt, und es gibt keine Felder. Statt LlDefineField<Ext>() nimmt man hier (nur) LlDefineVariable<Ext>(), und ein LlPrintFields() gibt es auch nicht - die Druckroutine ist kompakter.

Edit: Ausführlichst diskutiert im von Dir initiierten Thread "L&L - Neueinstieg", z.B. hier:

viewtopic.php?f=39&t=11529&start=25#p133239

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 14:32
von Manfred
Hi Tom,
es wird sicherlich so sein, aber ihr wußtet immer wovon ihr geredet habt. Ich arbeite mich aber noch ein und weiß mit Sicherheit, ich bin nicht der einzige der das nicht versteht, aber der einizge sehr wahrscheinlich der sich traut zu fragen. :roll: :badgrin:

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 14:58
von Tom
Etikettenprojekte (Label) haben je Etikett (also quasi je Druckseite) nur Daten aus einem Datensatz. Oder, weil das nicht immer stimmt (tatsächlich können die Daten sonstwoher kommen): Die Inhalte eines Datums ändern sich innerhalb eines Labels nicht. Label-Projekte sind die einfacheren Projekte: Daten publizieren, Etikett drucken, nächste Daten publizieren, nächstes Etikett drucken. Bei List-Projekten gibt es auch einen solchen statischen Anteil (in Variablen), aber dann einen Teil, bei dem sich die Inhalte der Daten innerhalb einer Druckseite ändern. Das sind Listen mit/aus Feldern. In der ersten Zeile einer Liste enhält "NAME" z.B. "Manfred", in der zweiten Zeile "Tom" (ein Etikett enthält in "NAME" immer nur ENTWEDER "Manfred" ODER "Tom"). Um das zu realisieren, wird die Druckschleife für ein Label-Projekt prinzipiell um eine innere Iteration - eine Schleife in der Schleife - ergänzt, in der sich die beweglichen Daten ändern, nämlich zwischen "LlPrintFieldsStart" und "LlPrintFieldsEnd". Da aber nicht immer alle Listendaten auf eine Seite passen, kann das noch auf weiteren Seiten weitergehen.

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 15:16
von Manfred
also eigentlich ist mir das ja erstmal alles egal. Ich möchte eigentlich nur einen "Mehrzeiler", der auch nur so lang ist, wie Anzahl Zeilen. Das klappt nicht. Mache ich eine Liste, dann ist sie imer DIN-A4 groß. Deshalb habe ich es mit Label versucht. Da wird jetzt zwar der Ausdruck nur so lang wie ich haben möchte, aber die Inhalte der Variablen werden nicht angezeigt. Ich verstehe das ganze nicht. Ich habe es so gemacht wie bei der Liste, nur das ich statt

Code: Alles auswählen

nRet := LlPrintWithBoxStart(hJob, LL_PROJECT_LIST, sName, LL_PRINT_EXPORT, LL_BOXTYPE_STDWAIT, SetAppWindow():GetHWND(), "Preview")

Code: Alles auswählen

nRet := LlPrintWithBoxStart(hJob, LL_PROJECT_LABEL, sName, LL_PRINT_EXPORT, LL_BOXTYPE_STDWAIT, SetAppWindow():GetHWND(), "Preview")
genommen habe. Aber entweder wurden mir die Variablen im Designer zur Auswahl nicht angezeigt, oder sie waren leer.
Was mache ich falsch?

Code: Alles auswählen

hJob  := LlJobOpen(-1)
          IF hJob >= 0
             nRet := LlSetOptionString(hJob, LL_OPTIONSTR_LICENSINGINFO, MyLicenseStringLL())
             nRet := LlDefineVariableStart(hJob)
//             nRet := LlDefineFieldStart(hJob)
             ::DefineData(hJob,"Anrede"  ,"",.F.)
             ::DefineData(hJob,"Email"   ,"",.F.)
             ::DefineData(hJob,"Name"    ,"",.F.)
             ::DefineData(hJob,"Ort"     ,"",.F.)
             ::DefineData(hJob,"Plz"     ,"",.F.)
             ::DefineData(hJob,"Strasse" ,"",.F.)
             ::DefineData(hJob,"Telefax" ,"",.F.)
             ::DefineData(hJob,"Telefon" ,"",.F.)
             ::DefineData(hJob,"Vorname" ,"",.F.)
             ::DefineData(hJob,"Webseite","",.F.)
             IF FILE(oSysPara:doParaWs:ausfuehrung + "\lldesigner.txt")
                nRet := LlDefineLayout(hJob, SetAppWindow():GetHWND(),"Designer",LL_PROJECT_LABEL)
                //nRet := LlDefineLayout(hJob, SetAppWindow():GetHWND(),"Designer",LL_PROJECT_LIST)
             ELSE
                IF Upper(cVorgang) == "DRUCK_FUSS"
                ELSEIF Upper(cVorgang) == "DRUCK_KOPF"
                   sName := oSysPara:doParaWs:reporte + "kopf.lbl"
                   LlSetPrinterDefaultsDir(hJob, oSysPara:doParaWs:temp)
                   nRet := LlPrintWithBoxStart(hJob, LL_PROJECT_LABEL, sName, LL_PRINT_EXPORT, LL_BOXTYPE_STDWAIT, SetAppWindow():GetHWND(), "Preview")
                   nRet := LlSetOptionString(hJob,LL_OPTIONSTR_EXPORTS_ALLOWED,"PRN;PRV;PICTURE_BMP;PICTURE_JPEG")
                   nRet := LlPrintOptionsDialog(hJob, oSysPara:oHauptdialog:GetHWND(), "Ausgabeziel wählen", "Zum Beispiel printer, PDF, XPS, HTML, JPEG,...")
                   IF nRet == LL_ERR_USER_ABORTED
                      lAbbruch := .T.
                   ENDIF
                   nRet := LLSetOption(hJob,LL_OPTION_ESC_CLOSES_PREVIEW, 1)
                   nRet := LlPreviewSetTempPath(hJob,oSysPara:doParaWs:temp)
                   IF ! lAbbruch
                      ::DefineData(hJob,"Anrede"  ,Trim((objekt:nArea)->anrede)  ,.F.)
                      ::DefineData(hJob,"Email"   ,Trim((objekt:nArea)->email)   ,.F.)
                      ::DefineData(hJob,"Name"    ,Trim((objekt:nArea)->name)    ,.F.)
                      ::DefineData(hJob,"Ort"     ,Trim((objekt:nArea)->ort)     ,.F.)
                      ::DefineData(hJob,"Plz"     ,Trim((objekt:nArea)->plz)     ,.F.)
                      ::DefineData(hJob,"Strasse" ,Trim((objekt:nArea)->strasse) ,.F.)
                      ::DefineData(hJob,"Telefax" ,Trim((objekt:nArea)->telefax) ,.F.)
                      ::DefineData(hJob,"Telefon" ,Trim((objekt:nArea)->telefon) ,.F.)
                      ::DefineData(hJob,"Vorname" ,Trim((objekt:nArea)->vorname) ,.F.)
                      ::DefineData(hJob,"Webseite",Trim((objekt:nArea)->webseite),.F.)
                      nRet := LlPrint(hJob)
                   ENDIF
                ENDIF
             ENDIF
             nRet := LlPrintEnd(hJob,0)
             LlPreviewDeleteFiles(hJob, sName,oSysPara:doParaWs:temp)
          ENDIF
          hJob := NIL

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 20:27
von ramses
Hallo Manfred

der Sinn und Zweck von L&L ist ja ein Ausdruck auf Papier zu erstellen. Dieser wird immer so gross wie das gewählte / verfügbare Papier.
Wenn du einen keineren Ausdruck willst musst du für dein Projekt eine kleinere Seite als A4 wählen oder in Windows -> Drucker -> Druckservereinstellungen ein kleineres "Benutzerdefiniertes" Papierformat anlegen welches du nachher für dein Ausdruck wählst. (z.B. 50x100 mm)

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 20:47
von Manfred
Aha,
hm, das ist nicht im Sinne des Erfinders. Ich möchte das aus der Anwendung heraus bestimmen könne und somit dem User den Vorgang abnehmen. Der wird nur nervös wenn er zu viel einstellen muß.
Aber trotzem gut zu wissen.

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 20:58
von Tom
Es gibt irgendeinen Modus, bei dem tatsächlich dynamisch gedruckt werden kann, meine ich zu erinnern. Für Endlospapier oder so. Ich habe vorhin schon gesucht, aber noch nichts gefunden. Ich schaue morgen nochmal. Aber grundsätzlich hat Carlo recht. Die Basis für alles, was L&L macht, ist die Fläche, die ein Ausgabegerät zur Verfügung stellt. Und das ist bei Druckern nun einmal das Papierformat.

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 21:17
von ramses
Genau: 8 x 12 Zoll Endlospapier, das ist einige mm länger als A4 oder 8 x 16 Zoll Endlospapier lässt sich im Endlosdrucker nur mit den erwähnten Einstellungen (Benutzerdefiniertes Format) bedrucken.

Re: Label und Felder/Variablen

Verfasst: Di, 04. Aug 2020 21:20
von Manfred
womit wir dann aber wieder bei Label wären!?