L&L erste Seite immer leer
Moderator: Moderatoren
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
L&L erste Seite immer leer
Hallo,
habe leider immer noch das Problem, daß bei mir die erste Seite leer ist. Habe schon alles versucht, aber ohne Erfolg. Hier mein Code:
if !L8ModuleInit()
return .f.
endif
hJob := LlJobOpen(-1)
CurDir( GetDataPath() )
LlDefineVariableStart(hJob)
LlDefineFieldStart(hJob)
LlSetOption(hJob, LL_OPTION_MULTIPLETABLELINES, 1)
AFields( aField, aType, aLen, aDec )
DefineData(.t., aField, aType, aLen, aDec)
*------------------------------------------------------------
LlDefineVariableExt(hJob,"VAR1", aInfo[1] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR2", aInfo[2] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR3", aInfo[3] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR4", aInfo[4] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR5", aInfo[5] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR6", aInfo[6] ,LL_TEXT)
*------------------------------------------------------------
nRet := LlPrint(hJob) // ???
LlSetPrinterDefaultsDir(hJob, MyGetTempPath())
nArt := if(lLabel,LL_PROJECT_LABEL,LL_PROJECT_LIST)
nRet := LlPrintWithBoxStart(hJob, ;
nArt, ;
sName, ;
LL_PRINT_PREVIEW, ;
LL_BOXTYPE_NORMALWAIT, ;
SetAppWindow():GetHWND(), ;
"Ausdruck...")
LlPreviewSetTempPath(hJob, MyGetTempPath())
nAkt := 1
nCount := lastrec()
do while (nCount > 0) .AND. (nRet = 0) .AND. (!EOF())
if eval(bFilter)
DefineData(.t., aField, aType, aLen, aDec)
nRet := LlPrintFields(hJob)
while nRet=LL_WRN_REPEAT_DATA
LlPrint(hJob)
nRet:=LlPrintFields(hJob)
enddo
endif
skip(1)
LlPrintSetBoxText(hJob, "Druck", ( (100*nAkt++)/nCount ))
end do
nRet:=LlPrintEnd(hJob)
LlPreviewDisplay(hJob, sName, myGetTempPath(), SetAppWindow():GetHWND())
LlPreviewDeleteFiles(hJob, sName, MyGetTempPath())
LlJobClose(hJob)
L8ModuleExit()
Grüsse
Rudolf
habe leider immer noch das Problem, daß bei mir die erste Seite leer ist. Habe schon alles versucht, aber ohne Erfolg. Hier mein Code:
if !L8ModuleInit()
return .f.
endif
hJob := LlJobOpen(-1)
CurDir( GetDataPath() )
LlDefineVariableStart(hJob)
LlDefineFieldStart(hJob)
LlSetOption(hJob, LL_OPTION_MULTIPLETABLELINES, 1)
AFields( aField, aType, aLen, aDec )
DefineData(.t., aField, aType, aLen, aDec)
*------------------------------------------------------------
LlDefineVariableExt(hJob,"VAR1", aInfo[1] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR2", aInfo[2] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR3", aInfo[3] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR4", aInfo[4] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR5", aInfo[5] ,LL_TEXT)
LlDefineVariableExt(hJob,"VAR6", aInfo[6] ,LL_TEXT)
*------------------------------------------------------------
nRet := LlPrint(hJob) // ???
LlSetPrinterDefaultsDir(hJob, MyGetTempPath())
nArt := if(lLabel,LL_PROJECT_LABEL,LL_PROJECT_LIST)
nRet := LlPrintWithBoxStart(hJob, ;
nArt, ;
sName, ;
LL_PRINT_PREVIEW, ;
LL_BOXTYPE_NORMALWAIT, ;
SetAppWindow():GetHWND(), ;
"Ausdruck...")
LlPreviewSetTempPath(hJob, MyGetTempPath())
nAkt := 1
nCount := lastrec()
do while (nCount > 0) .AND. (nRet = 0) .AND. (!EOF())
if eval(bFilter)
DefineData(.t., aField, aType, aLen, aDec)
nRet := LlPrintFields(hJob)
while nRet=LL_WRN_REPEAT_DATA
LlPrint(hJob)
nRet:=LlPrintFields(hJob)
enddo
endif
skip(1)
LlPrintSetBoxText(hJob, "Druck", ( (100*nAkt++)/nCount ))
end do
nRet:=LlPrintEnd(hJob)
LlPreviewDisplay(hJob, sName, myGetTempPath(), SetAppWindow():GetHWND())
LlPreviewDeleteFiles(hJob, sName, MyGetTempPath())
LlJobClose(hJob)
L8ModuleExit()
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo,
das entfernen vom LlPrint () hilft leider auch nichts, und die Variablen werden bereits mit LlDefineFieldExt() definiert. Auch völlig neue Reports zeigen den Effekt, also muss es was mit meinem Code zu tun haben.
Grüsse
Rudolf
Anbei noch mein DefineData(), kann mir aber nicht vorstellen, dass da was nicht stimmt.
//-------------------------------------------------------------------
static function DefineData(bAsField, aField, aType, aLen, aDec)
//-------------------------------------------------------------------
//GR: Wird vom Programm aufgerufen, um die Daten entsprechend dem
// neuen Datensatz zu definieren. In bAsField wird festgelegt,
// ob die Daten als Felder oder als Variable an List & Label
// uebergeben werden
LOCAL FldType, FldContent, DateBuffer, lExpr
//GR: Umwandlung von xbase ++ Feldtypen in List & Label Feldtypen
FOR i:=1 to len(aField)
DateBuffer = Replicate(chr(0), 255)
DO CASE
CASE aType == "N"
FldType=LL_NUMERIC
FldContent=Str( FieldGet(i) )
CASE aType == "D"
FldType=LL_DATE
FldContent=dtoc( FieldGet(i) )
//GR: In Julianisches Datum konvertieren
//GR: Ausdruck aufbauen
//lExpr = LlExprParse(hJob,"DateToJulian(DATE("+;
// chr(34)+DTOC(FieldGet (i) )+chr(34)+"))", .F.)
//GR: Ausdruck auswerten
LlExprEvaluate(hJob, lExpr, @DateBuffer, 255)
//GR: Ausdruck wieder freigeben
LlExprFree(hJob, lExpr)
FldContent = DateBuffer
CASE aType == "L"
FldType=LL_BOOLEAN
if FieldGet(i) = .F.
FldContent="JA"
else
FldContent="NEIN"
endif
CASE aType == "C"
FldType=LL_TEXT
FldContent=ascrepl(Trim(FieldGet(i)),2)
// GR: Fuer Artikelnummer: EAN128-Barcode anlegen
/*
if upper(aField) = "NUMMER"
DO CASE
// GR: Zwischen Feld- und Variablendefinition unterscheiden
CASE bAsField==.F.
LlDefineVariableExt(hJob, "ARTICLENO_EAN128",;
Trim(FieldGet(i)), LL_BARCODE_EAN128, 0 )
CASE bAsField==.T.
LlDefineFieldExt(hJob, "ARTICLENO_EAN128",;
Trim(FieldGet(i)), LL_BARCODE_EAN128, 0 )
ENDCASE
endif
*/
CASE aType == "M"
FldType=LL_TEXT
FldContent = FieldGet(i)
END CASE
//GR: Daten an List & Label geben
if bAsField==.F.
LlDefineVariableExt(hJob, aField, FldContent, FldType, 0 )
else
LlDefineFieldExt(hJob, aField, FldContent, FldType, 0 )
endif
NEXT I
RETURN NIL
das entfernen vom LlPrint () hilft leider auch nichts, und die Variablen werden bereits mit LlDefineFieldExt() definiert. Auch völlig neue Reports zeigen den Effekt, also muss es was mit meinem Code zu tun haben.
Grüsse
Rudolf
Anbei noch mein DefineData(), kann mir aber nicht vorstellen, dass da was nicht stimmt.
//-------------------------------------------------------------------
static function DefineData(bAsField, aField, aType, aLen, aDec)
//-------------------------------------------------------------------
//GR: Wird vom Programm aufgerufen, um die Daten entsprechend dem
// neuen Datensatz zu definieren. In bAsField wird festgelegt,
// ob die Daten als Felder oder als Variable an List & Label
// uebergeben werden
LOCAL FldType, FldContent, DateBuffer, lExpr
//GR: Umwandlung von xbase ++ Feldtypen in List & Label Feldtypen
FOR i:=1 to len(aField)
DateBuffer = Replicate(chr(0), 255)
DO CASE
CASE aType == "N"
FldType=LL_NUMERIC
FldContent=Str( FieldGet(i) )
CASE aType == "D"
FldType=LL_DATE
FldContent=dtoc( FieldGet(i) )
//GR: In Julianisches Datum konvertieren
//GR: Ausdruck aufbauen
//lExpr = LlExprParse(hJob,"DateToJulian(DATE("+;
// chr(34)+DTOC(FieldGet (i) )+chr(34)+"))", .F.)
//GR: Ausdruck auswerten
LlExprEvaluate(hJob, lExpr, @DateBuffer, 255)
//GR: Ausdruck wieder freigeben
LlExprFree(hJob, lExpr)
FldContent = DateBuffer
CASE aType == "L"
FldType=LL_BOOLEAN
if FieldGet(i) = .F.
FldContent="JA"
else
FldContent="NEIN"
endif
CASE aType == "C"
FldType=LL_TEXT
FldContent=ascrepl(Trim(FieldGet(i)),2)
// GR: Fuer Artikelnummer: EAN128-Barcode anlegen
/*
if upper(aField) = "NUMMER"
DO CASE
// GR: Zwischen Feld- und Variablendefinition unterscheiden
CASE bAsField==.F.
LlDefineVariableExt(hJob, "ARTICLENO_EAN128",;
Trim(FieldGet(i)), LL_BARCODE_EAN128, 0 )
CASE bAsField==.T.
LlDefineFieldExt(hJob, "ARTICLENO_EAN128",;
Trim(FieldGet(i)), LL_BARCODE_EAN128, 0 )
ENDCASE
endif
*/
CASE aType == "M"
FldType=LL_TEXT
FldContent = FieldGet(i)
END CASE
//GR: Daten an List & Label geben
if bAsField==.F.
LlDefineVariableExt(hJob, aField, FldContent, FldType, 0 )
else
LlDefineFieldExt(hJob, aField, FldContent, FldType, 0 )
endif
NEXT I
RETURN NIL
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Josef Stockinger
- UDF-Programmierer
- Beiträge: 53
- Registriert: So, 25. Sep 2005 18:06
- Wohnort: Nähe Regensburg
- Kontaktdaten:
Hallo Rudolf,
das LlPrint erscheint mir auch reichlich früh. Probier doch diese Reihenfolge, da hatte ich noch nie ein Problem. Ich vermute das eher in Deinem LL-Template wie Tom schon schreibt.
Beste Grüße
Josef
das LlPrint erscheint mir auch reichlich früh. Probier doch diese Reihenfolge, da hatte ich noch nie ein Problem. Ich vermute das eher in Deinem LL-Template wie Tom schon schreibt.
Code: Alles auswählen
if nModus = 2 // = drucken
aField := Array( FCount() )
aType := Array( FCount() )
aLen := Array( FCount() )
aDec := Array( FCount() )
go top
AFields( aField, aType, aLen, aDec )
L8MODULEInit()
hJob := LlJobOpen(0)
LlSetPrinterToDefault(hJob,LL_PROJECT_LABEL,sName)
DefineData(.F., aField, aType, aLen, aDec)
LlDefineVariable(hJob,"appname","sample")
LlSetPrinterDefaultsDir(hJob, MyGetTempPath())
nRet := LlPrintWithBoxStart(hJob, LL_PROJECT_LABEL, sName, LL_PRINT_PREVIEW, ;
LL_BOXTYPE_NORMALWAIT, oOwner:GetHWND(), cBoxText)
count to nCount
go top
nAkt := 0
LlPreviewSetTempPath(hJob, MyGetTempPath())
do while (nCount > 0) .AND. (nRet = 0) .AND. (!EOF())
DefineData(.F., aField, aType, aLen, aDec)
nRet := LlPrint(hJob)
nAkt := nAkt + 1
LlPrintSetBoxText(hJob, "Drucke ...", ( (100*nAkt)/nCount ))
skip
enddo
[color=red] nRet:=LlPrintFieldsEnd(hJob)
DO WHILE nRet=LL_WRN_REPEAT_DATA
nRet:=LlPrintFieldsEnd(hJob)
ENDDO [/color]
LlPrintEnd(hJob, 0)
LlPreviewDisplay(hJob, sName, MyGetTempPath(), oOwner:GetHWND())
LlPreviewDeleteFiles(hJob, sName, MyGetTempPath())
LlJobClose(hJob)
L8MODULEExit()
endif
Josef
Zuletzt geändert von Josef Stockinger am Do, 14. Sep 2006 17:07, insgesamt 1-mal geändert.
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Josef,
danke für das Beispiel, habe meines reduziert auf folgenden Code, aber ohne Erfolg. Auch das Projekt habe ich zur Sicherheit komplett neu erstellt. Trotzdem immer die erste Seite leer ohne Daten. Komischerweise ist im Designer die Vorschau für den Report in Ordnung.
Grüsse
Rudolf
if !L8ModuleInit()
return .f.
endif
hJob := LlJobOpen(-1)
CurDir( GetDataPath() )
AFields( aField, aType, aLen, aDec )
DefineData(.f., aField, aType, aLen, aDec)
LlSetPrinterDefaultsDir(hJob, MyGetTempPath())
nArt := if(lLabel,LL_PROJECT_LABEL,LL_PROJECT_LIST)
nRet := LlPrintWithBoxStart(hJob, ;
nArt, ;
sName, ;
LL_PRINT_PREVIEW, ;
LL_BOXTYPE_NORMALWAIT, ;
SetAppWindow():GetHWND(), ;
"Ausdruck...")
LlPreviewSetTempPath(hJob, MyGetTempPath())
nAkt := 1
nCount := lastrec()
do while (nCount > 0) .AND. (nRet = 0) .AND. (!EOF())
if eval(bFilter)
DefineData(.f., aField, aType, aLen, aDec)
nRet := LlPrintFields(hJob)
LlPrint(hJob)
endif
dc_DBSkip(1)
nAkt++
LlPrintSetBoxText(hJob, "Druck", ( (100*nAkt)/nCount ))
end do
nRet:=LlPrintEnd(hJob)
LlPreviewDisplay(hJob, sName, myGetTempPath(), SetAppWindow():GetHWND())
LlPreviewDeleteFiles(hJob, sName, MyGetTempPath())
LlJobClose(hJob)
L8ModuleExit()
danke für das Beispiel, habe meines reduziert auf folgenden Code, aber ohne Erfolg. Auch das Projekt habe ich zur Sicherheit komplett neu erstellt. Trotzdem immer die erste Seite leer ohne Daten. Komischerweise ist im Designer die Vorschau für den Report in Ordnung.
Grüsse
Rudolf
if !L8ModuleInit()
return .f.
endif
hJob := LlJobOpen(-1)
CurDir( GetDataPath() )
AFields( aField, aType, aLen, aDec )
DefineData(.f., aField, aType, aLen, aDec)
LlSetPrinterDefaultsDir(hJob, MyGetTempPath())
nArt := if(lLabel,LL_PROJECT_LABEL,LL_PROJECT_LIST)
nRet := LlPrintWithBoxStart(hJob, ;
nArt, ;
sName, ;
LL_PRINT_PREVIEW, ;
LL_BOXTYPE_NORMALWAIT, ;
SetAppWindow():GetHWND(), ;
"Ausdruck...")
LlPreviewSetTempPath(hJob, MyGetTempPath())
nAkt := 1
nCount := lastrec()
do while (nCount > 0) .AND. (nRet = 0) .AND. (!EOF())
if eval(bFilter)
DefineData(.f., aField, aType, aLen, aDec)
nRet := LlPrintFields(hJob)
LlPrint(hJob)
endif
dc_DBSkip(1)
nAkt++
LlPrintSetBoxText(hJob, "Druck", ( (100*nAkt)/nCount ))
end do
nRet:=LlPrintEnd(hJob)
LlPreviewDisplay(hJob, sName, myGetTempPath(), SetAppWindow():GetHWND())
LlPreviewDeleteFiles(hJob, sName, MyGetTempPath())
LlJobClose(hJob)
L8ModuleExit()
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Hallo, Rudolf.
Bist Du sicher, daß Du im Formular keine Darstellungsbedingung hast, die .F. erzeugt? Nicht die Ebene verwechselt? Ansonsten vermisse ich lediglich vor LlPrintEnd() das hier:
Bist Du sicher, daß Du im Formular keine Darstellungsbedingung hast, die .F. erzeugt? Nicht die Ebene verwechselt? Ansonsten vermisse ich lediglich vor LlPrintEnd() das hier:
Code: Alles auswählen
[color=red]nRet:=LlPrintFieldsEnd(hJob)
DO WHILE nRet=LL_WRN_REPEAT_DATA
nRet:=LlPrintFieldsEnd(hJob)
ENDDO[/color]
LlPrintEnd(hJob,0)
Herzlich,
Tom
Tom
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Tom,
hilft leider auch nicht, werde mal ein eigenständiges Beispiel machen, vielleicht finde ich es dann.
Grüsse
Rudolf
hilft leider auch nicht, werde mal ein eigenständiges Beispiel machen, vielleicht finde ich es dann.
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Josef Stockinger
- UDF-Programmierer
- Beiträge: 53
- Registriert: So, 25. Sep 2005 18:06
- Wohnort: Nähe Regensburg
- Kontaktdaten:
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Josef,
welchen Codeabschnitt meinst Du ?
Grüsse
Rudolf
welchen Codeabschnitt meinst Du ?
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Josef Stockinger
- UDF-Programmierer
- Beiträge: 53
- Registriert: So, 25. Sep 2005 18:06
- Wohnort: Nähe Regensburg
- Kontaktdaten:
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Josef,
danke, habs schon wieder eingefügt. Es war verher in meinem Code enthalten, habs beim experimentieren entfernt. Ohne die Zeilen kommt der Report leer raus, nur der Header wird gedruckt.
Ich werd mal das eigenständige Beispiel machen, anders werde ich das Problem wohl nie finden.
Grüsse
Rudolf
danke, habs schon wieder eingefügt. Es war verher in meinem Code enthalten, habs beim experimentieren entfernt. Ohne die Zeilen kommt der Report leer raus, nur der Header wird gedruckt.
Ich werd mal das eigenständige Beispiel machen, anders werde ich das Problem wohl nie finden.
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net