[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/privacyprotection/cron/task/anonymize_ip.php on line 83: A non-numeric value encountered
Inoffizielles deutsches Xbase-Forum • L&L Neueinstieg - Seite 2
Seite 2 von 4

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 8:27
von Manfred
Wobei ich jetzt nichts gegen Marcus Klasse habe. Ich/Wir möchten nur von Grund auf lernen, wie es funktioniert. Wie man die Daten für einen Report aufbereiten muß und übergibt. Wie man mit dem Reportgenerator Reporte erstellt, ihn evtl. ins Programm einbindet und dem Kunden zur Verfügung stellt.

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 8:32
von Marcus Herz
Moin

Jetzt weiß ich, was du mit Listbox meintest:
du musst eine ListLabel Design Datei auswählen, wahrscheinlich auch die einzige Datei, die du siehst:
für Listen mit Endung *.LST
für Karten *.CRd
und Etiketten *.lbl
wenn du eine ausgewählt hast, dann kannst preview oder design starten

- Was erwartest du, wenn du sagst, du willst LL verstehen, es gibt nur die Funktionen zu verstehen, aber wie LL intern dann die Reporte generiert, ist Black Box.
Und die Funktionen dienen mehr oder weniger nur dazu, Einstellungen oder zu druckende Werte zu übergeben

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 8:36
von Manfred
HI Marcus,
was ich meine ist: Wie übergibt man welche DAten und wie werden sie dann in das jeweilige Formular ünbernommen. Ist aber jetzt an dieser Stelle erstmal egal. Wenn wir soweit sind, dann stellen wir schon entsprechende Fragen.
Und was meinst Du mit LST Datei auswählen? Wie mache ist das an der Stelle, oder vorher?

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 8:56
von Marcus Herz
- du startest z.B. simple.exe
- dann siehst du die App mit Buttons -design / preview/ export und Checkbox Debug output
- gehst auf preview
- wählst article.lbl aus
- Hoppla, jetzt solltest du das Preview sehen

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:02
von Manfred
und jetzt kommt meine ganz große Gegenfrage. Hast Du das selbst schonmal versucht, oder ist das hier jetzt nur reine vermutete Theorie?

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:06
von ramses
Habt Ihr gesehen dass es eine super gute Anleitung zum Einstieg gibt.
Programmier-Referenz.pdf im Ordner Dokumentation.
Kapitel 1.3 Wichtige Konzepte, 1.3.1 Prinzipieller Aufbau und folgende..... 2.2 Erste Schritte

Bei den Sprachspezischen Kapiteln ist C/C++ das passende.

Ein echt gutes Handbuch. Sogar in Deutscher Sprache.
und jetzt kommt meine ganz große Gegenfrage. Hast Du das selbst schonmal versucht, oder ist das hier jetzt nur reine vermutete Theorie?
Ja, es ist wirklich genau so wie Marcus schreibt. Heute erneut versucht.

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:27
von Manfred
Nein, dem ist nicht so. Oder ich habe hier total andere Beispiel vorliegen.
simple1.PNG
simple1.PNG (47.45 KiB) 11044 mal betrachtet
invoice2.PNG
invoice2.PNG (51.6 KiB) 11044 mal betrachtet
invoice1.PNG
invoice1.PNG (48 KiB) 11044 mal betrachtet

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:30
von Marcus Herz
Wow LL Version 14 !
Warum sagst du das nicht gleich.

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:32
von Manfred
naja, es sind halt die Beispiele die ich habe. Wo bekomme ich aktuellere her? das grundprinzip sollte doch gleich sein, oder?

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:33
von Marcus Herz
hol dir eine Trial von Version 25 !

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:34
von Manfred
das Problem ist, die aktuellen sind alle mit Deiner Klasse. Damit möchte ich aber im Moment nicht anfangen.....

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:40
von HaPe
Hallo Manfred !

Was bedeutet die 14 im Fenster-Titel?
Probiert Ihr gerade mit LL 14 :roll:

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:41
von Marcus Herz
Hat jemand noch LL 22. da waren es noch die alten Samples?

Wenn du in dsListLabel die Methode _printTable suchst, weiter unten ist eine Schleife: (etwas gekürzt)

do while !eval(bEof, nSelect) .and. nError <> LL_ERR_USER_ABORTED
::datalink(0, ,nRek )
do while (nError := LlPrintFields(::hJob)) == LL_WRN_REPEAT_DATA
do while LlPrint(::hJob) == LL_WRN_REPEAT_DATA
enddo
enddo
eval( ::_bSkipBlock, self, nSelect)
enddo
Die Methode ::datalink ruft für jede Tabelle dann ::_datalink auf

Dort werden dann die Feldwerte an LL übergeben, für jedes Feld
bei Listen
LlDefineFieldExt(::hJob, <feldname>, <feldinhalt als string>, <LL Konstante, welche den Original Type beschreibt>, 0 )
und bei Karten oder Etiketten
LlDefineVariableExt(::hJob, <feldname>, <feldinhalt als string>, <LL Konstante, welche den Original Type beschreibt>, 0 )

Das ist das Geheimnis.

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:44
von Manfred
nochmal, es sind die Beispiele von LL14, aber ich habe hier (noch) LL23 laufen. Das waren die einzigen, die ich PUR gefunden habe.

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 9:47
von Tom
Ich hab doch irgendwann mal ein Beispiel für eine einfache Druckroutine gebaut, das müsste noch funktionieren, sogar mit den alten Includes - man muss nur das DLLLoad() anpassen.

Du musst die Templates für die DLL-Routinen einbinden (CMBTL25.PRG für das Drucksystem, CMBTLL25.PRG für das Storagesystem, falls Du es verwenden willst), außerdem die Includes für die Konstanten (gleiche Dateinamen, nur mit .CH) - beides findest Du im Ordner "Beispiele" -> "Alaska Xbase++". Dann brauchst Du eine Druckroutine, die ist ganz simpel und kann aus meinem alten Beispiel genommen werden, wenn Du nicht mit der Klasse von DS-DataSoft arbeiten willst. Sie besteht aus zwei Komponenten - einer Druckschleife, in der auch das Formular angemeldet wird usw., und einer Funktion, die zeilenweise Daten publiziert ("DefineData" hieß das meiner Erinnerung nach).

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 18:26
von Manfred
was uns auch sehr interessieren würde, wo kann man eigentlich die Rückgabenummern der LL FUnktionen nachschauen? Was nutzt es eine Zahl zu bekommen und nicht zu wissen, was ich damit anfangen kann/soll?
hat sich gerade erledigt, steht alles in combit List&Label VCL Hilfe.

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 18:49
von ramses
Hallo Manfred

du könntest dir die Fehlermeldung mit folgender Funktion auch direkt anzeigen lassen. Du kannst den Rückgabewert der Funktion übergeben, ist es ein Fehler zeigt es dir den Text an.
Die Funktion ist in LLCommon.prg aus den Beispielen

Code: Alles auswählen

// D: LL Fehlermeldung anzeigen
Procedure LLErrorMessage(nErrCode)
Local cErrMsg := Replicate(chr(0),400)
If .not. empty(nErrCode)
  LlGetErrortext(nErrCode, @cErrMsg, 390)

  ConfirmBox( , "#"+AllTrim(Str(nErrCode))+" "+cErrMsg,;
                "L&L error", ;
                XBPMB_OK , XBPMB_QUESTION+XBPMB_APPMODAL+XBPMB_MOVEABLE )
EndIf
Return

Re: L&L Neueinstieg

Verfasst: Fr, 03. Apr 2020 19:16
von Manfred
alles albern, es geht mit DebWin4 eigentlich total genial. Wir haben das Ding jetzt am LAufen und Spass in den Backen wie doof.
Unser Fehler war, bei DefineData(nJob,"Name",field->name,.F.,.F.) <- der erste logische Parameter mußte bei uns auf .F. und er stand anfänglich auf .T. Keine Ahnung was es bedeutet Felder oder Variable. Felder war falsch Variable war richtig. Jetzt jeht et och wigger.

Re: L&L Neueinstieg

Verfasst: Sa, 04. Apr 2020 8:32
von Wolfgang Ciriack
Felder benötigst du für Listen-Projekte, Variablen für Label-Projekte.

Re: L&L Neueinstieg

Verfasst: Sa, 04. Apr 2020 8:36
von Manfred
bist Du sicher? Wir haben ein invoice.lst eingeladen und da habe ich Variablen benutzt.
Allerdings wundert es mich jetzt, das entweder nie jemand etwas zu den Beispielen gesagt hat, oder sie nie einer probiert hat. Die klappen nicht so, wie programmiert. Wir haben einiges anpassen müssen.

Re: L&L Neueinstieg

Verfasst: Sa, 04. Apr 2020 9:50
von Tom
Ein Feld iteriert, eine Variable ist zumindest statisch gedacht. Also, ja, Listenprojekte leben davon, dass Feldinhalte/Felder so lange abermals bestückt und über "LLPrintFields" die Liste (also die Tabelle in einem LIST-Projekt) verlängern, wie es entsprechende Dateninhalte gibt (bis zum LLPrintFieldsEnd). Aber man kann natürlich auch Variableninhalte austauschen, zwischen zwei LLPrintFields-Anweisungen, dann wechseln auch diese Inhalte. Gedacht sind Variablen aber eher für den statischen oder überwiegend statischen Anteil (Projektköpfe, Adressen, solche Sachen). Wir verwenden sie aber z.B. auch als Schalter oder Flags, oder für Inhalte, seitenbezogen wechseln (wofür außerdem Benutzer- und Summenvariablen im Projekt sehr gut geeignet sind). Stell Dir Felder (LLDefineField/LLDefineFieldExt) einfach wie Tabellenspalten (also Felder in DBFs oder ähnlichen) vor, und Variablen sind eben Variablen - sie markieren nur kein Element eines Recordsets, sie können alles mögliche machen, je nachdem, wo sie publiziert bzw. neu bestückt werden.
Die Ergänzung Ext (LLDefineVariable/LLDefineField+Ext) ermöglicht Dir die Typisierung des Ergebnisses (Text, Num, Bool, RTF usw.), ohne das macht L&L das selbst.

Re: L&L Neueinstieg

Verfasst: Sa, 04. Apr 2020 10:06
von ramses
Auch wenn ich mich wiederhole:
Die Programmierreferenz beschreibt es eigentlich ganz gut.
siehe: 2.3.2 Variablen, Felder und Datentypen

Re: L&L Neueinstieg

Verfasst: Sa, 04. Apr 2020 10:27
von Tom
Und das sind nur die Basics. So richtig intensiv wird das Vergnügen erst mit Verkettungen, Kreuztabellen, Charts, eingebetteten Fremddaten und all dem anderen Pipafurz. Ich nutze L&L seit Version 11, und es gibt keine Anschaffung, die ich weniger bereuen könnte als diese.

Re: L&L Neueinstieg

Verfasst: Sa, 04. Apr 2020 10:54
von ramses
Tom hat geschrieben: Sa, 04. Apr 2020 10:27 .... und es gibt keine Anschaffung, die ich weniger bereuen könnte als diese.
Dieser Aussage kann ich mich ohne wenn und aber nur anschliessen!

Re: L&L Neueinstieg

Verfasst: Sa, 04. Apr 2020 11:17
von Manfred
das hier klappt
DefineData(hJob,"NAME",invoice->name,.F.,.F.)
DefineData(hJob,"STREET",invoice->street,.F.,.F.)
DefineData(hJob,"CITY",invoice->city,.F.,.F.)
DefineData(hJob,"DATE",invoice->date,.F.,.F.)
das hier klappt nicht
DefineData(hJob,"NAME","Test1",.T.,.F.)
DefineData(hJob,"STREET","Test2",.T.,.F.)
DefineData(hJob,"CITY","Test3",.T.,.F.)
DefineData(hJob,"DATE","Test4",.T.,.F.)
würde aber meinem Verständnis von Toms Erklärung gleich kommen. Einmal übergebe ich Felder mit .F. und einmal etwas statisches und dann mit .T.