Hi all again, What is joke for Espon Printer after HP... :p
In my company, we have Espon LQ570+, LQ1070, LQ1170, LQ2170 printers...
Even I download the most updated driver from offical site...
BUT a funny fact for those printer in CWin95 2.5C setting...
if you use LQ2170 driver for LQ2170 printer, even you print WORD, EXCEL,
it
may make skip 1 inch height after print the header...
the whole word document is shift wrongly... ~_~
So, What should we do!?
When install printer driver, all above printer
CHOOSE LQ1070 as install
in selecting printer in Espon Printer Dialog.
Then, you can Rename the Printer Name to:
e.g.
Espon LQ570+ (Use 1070 Ver.)
For LQ570+ printer... ^_~
Then, all A4 std printer setting will alright for those printers...
IT WASTE ME 3 MONTHS to fix the same report again and again!!
but finally found that
Funny JokeGood Luck!!
>Rob,
>
> My users uses diff. kind of printers. Some are using Epson LQ1170 and the others are using the newer model, the Epson LQ2170. I am using the US St. FanFold Paper Size. When I create my report using LQ1170 as my printer the paper size is 39 but if I use the LQ2170 the Paper size is 268.
>
>Can this program help me?
>
>These are the settings or the values of my expr fields..
>
>For the LQ1170 :
>
>DRIVER=WINSPOOL
>DEVICE=Epson LQ-1170 ESC/P 2
>OUTPUT=LPT1:
>ORIENTATION=0
>PAPERSIZE=39
>DEFAULTSOURCE=8
>PRINTQUALITY=360
>YRESOLUTION=180
>TTOPTION=1
>
>
>For the LQ2170 :
>
>DRIVER=WINSPOOL
>DEVICE=Epson LQ-2170 ESC/P 2
>OUTPUT=LPT1:
>ORIENTATION=0
>PAPERSIZE=268
>DEFAULTSOURCE=8
>PRINTQUALITY=360
>YRESOLUTION=180
>TTOPTION=1
>
>
>I don't know what to do or use as default... None of it is working.. pls. help.
>
>Charlotte
>>(snip)
>>
>>PMFJI: Your program pretty much does what has been published by several others, including FPA. I took the NukeFRXPrintInfo program by Jim Haentzschel, and added some code to make it only drop the parts that should be removed. I also added some #define's to make it more version independent (ie: FP-2.x)...
>>
>>At the risk of too long a response, the code is shown below:
>>
>>*:*****************************************************************************
>>*:
>>*: Procedure file: D:\PRG_INS\FRX0PRTR.PRG
>>*:
>>*: System: NukeFRXPrintInfo (Frx0Prtr) - remove prt
>>*: Author: Jim Haentzschel & rbs
>>*: Copyright (c) 1999, FPA & CREATIVE RESOURCES
>>*: Last modified: 02/10/99 7:39
>>*:
>>*: Procs & Fncts: LISTREPORTS
>>*:
>>*: Calls: LISTREPORTS (procedure in FRX0PRTR.PRG)
>>*:
>>*: Documented 02/10/99 at 07:39 FoxDoc version 2.10f
>>*:*****************************************************************************
>>*******************************************************************************
>>* NukeFRXPrintInfo.Prg - from FPAdvisor Feb. 1999
>>* Author: Jim Haentzschel
>>*
>>* This program recursively goes down from the directory
>>* tree from wherever you start it and removes the TAG and TAG2
>>* printer information, if any is found.
>>*
>>* For VFP 3/5/6 due to use of 'local' keyword
>>*
>>* Parameters: tcAction
>>* tcRecur
>>*
>>* Actions taken: tcAction = (blank/null) ==> 'safe' mode - show the
>>* FRXs that have print info
>>* but don't change it...
>>* "CLEAN" ==> okay to replace TAG and TAG2 with
>>* Space(0)
>>* tcRecur = "R" ==> recurse directories
>>*
>>* Calling Samples: DO NukeFRXPrintInfo (ie: safe mode, no recurse)
>>* DO NukeFRXPrintInfo WITH "SAFE", "R"
>>* displays all FRXs with embedded print info
>>* from the starting directory down (recursively),
>>* but does not make any changes
>>* DO NukeFRXPrintInfo WITH "CLEAN", "R"
>>* displays *AND* replaces TAG and TAG2 fields
>>* (in first record of all FRXs) with Space(0),
>>* from the starting directory down (recursively),
>>*
>>* rev. 99-02-09 - rbs - PROC ListReports - Fld: EXPR may contain paper
>>* orientation, papersize, and other stuff that is
>>* NOT good to delete/erase - so beware...
>>* - #DEFINE/#IF/#ELSE/#ENDIF - for version handling...
>>*******************************************************************************
>>#IF [VISUAL] $ UPPER(VERSION())
>>LPARAMETERS tcAction, tcRecur
>>#ELSE
>>PARAMETERS tcAction, tcRecur
>>#ENDIF
>>
>>* define a variable/constant to use in #if/#else/#endif later...
>>#DEFINE L_IS_VFP [VISUAL] $ UPPER(VERSION())
>>
>>* set cpdialog off to keep codepage dialogs
>>* from interrupting the program...
>>#IF L_IS_VFP
>>LOCAL lcCpDialog, lcTalk
>>#ELSE
>>PRIVATE lcCpDialog, lcTalk
>>#ENDIF
>>
>>IF SET("TALK") = "ON"
>> SET TALK OFF
>> lcTalk = "ON"
>>ELSE
>> lcTalk = "OFF"
>>ENDIF
>>
>>lcCpDialog = SET("cpdialog")
>>IF lcCpDialog = "ON"
>> SET CPDIALOG OFF
>>ENDIF
>>
>>IF PARAMETERS() = 0
>> * was this parameter not passed?
>> * take conservative approach - 'safe' mode
>> #IF L_IS_VFP
>> LOCAL tcAction, tcRecur
>> #ELSE
>> PRIVATE tcAction, tcRecur
>> #ENDIF
>> tcAction = "SAFE"
>> tcRecur = ""
>>ENDIF
>>
>>IF TYPE("tcRecur") <> "C"
>> * ie: if no 2nd parameter - assume no recursion
>> tcRecur = ""
>>ENDIF
>>
>>#IF L_IS_VFP
>>LOCAL lcExact
>>#ELSE
>>PRIVATE lcExact
>>#ENDIF
>>lcExact = SET("Exact")
>>SET EXACT ON
>>
>>#IF L_IS_VFP
>>LOCAL ARRAY tArray[1000], FrxArray[1]
>>#ELSE
>>DIMENSION tArray[1000], FrxArray[1]
>>#ENDIF
>>
>>#IF L_IS_VFP
>>LOCAL lnCount
>>#ELSE
>>PRIVATE lnCount
>>#ENDIF
>>* how many items in this directory?
>>lnCount = ADIR(tArray, "*.*", "D")
>>
>>* loop through the array - this recursion does not work in fp26
>>#IF L_IS_VFP
>>LOCAL xx, nMaxArray
>>IF UPPER(tcRecur) = "R"
>> nMaxArray = ALEN(tArray, 1)
>> FOR xx = 1 TO nMaxArray
>> * skip the '.' and '..' directories
>> IF ( SUBSTR(tArray[xx,5], 5, 1) = "D" .AND. ;
>> .NOT. ("." $ tArray[xx,1]) )
>> *
>> ? SYS(5) + CURDIR() + tArray[xx, 1]
>> CD (tArray[xx, 1])
>> *
>> * get an FRX listing for this directory
>> *
>> =ListReports(tcAction)
>> *
>> * recursive call to go down to the next lower level
>> DO ( PROGRAM(0) ) WITH tcAction, tcRecur
>> *
>> CD ..
>> ENDIF
>> ENDFOR
>>
>>ELSE
>> * only one directory of interest
>> =ListReports(tcAction)
>>
>>ENDIF
>>
>>#ELSE
>>* only one directory of interest
>>WAIT WINDOW [Sorry! Cannot Recurse as written in this version of FoxPro]
>>=ListReports(tcAction)
>>
>>#ENDIF
>>
>>* restore environmental settings...
>>SET CPDIALOG &lcCpDialog.
>>SET EXACT &lcExact.
>>SET TALK &lcTalk.
>>
>>RETURN
>>
>>* - eof - PROCEDURE NukeFRXPrintInfo - main routine
>>*******************************************************************************
>>*!*****************************************************************************
>>*!
>>*! Procedure: LISTREPORTS
>>*!
>>*! Called by: FRX0PRTR.PRG
>>*!
>>*!*****************************************************************************
>>PROCEDURE ListReports
>>*
>>* Now find out how many FRXs (reports) have
>>* printer info stuffed into their TAG and TAG2 fiels.
>>* The problem here is that FoxPro stuffs printer-specific
>>* stuff into the FRX in Record-1 that will make a report
>>* not run correctly on a different type of printer
>>*
>>* rbs note: Fld: EXPR may contain paper orientation, papersize,
>>* and other stuff that is NOT good to delete/erase - so beware...
>>*******************************************************************************
>>PARAMETERS tcAction
>>
>>#IF L_IS_VFP
>>LOCAL lnNumFound, yy, lcFrx2Chk
>>#ELSE
>>PRIVATE lnNumFound, yy, lcFrx2Chk
>>#ENDIF
>>
>>#IF L_IS_VFP
>>LOCAL ARRAY FrxArray[1]
>>#ELSE
>>DIMENSION FrxArray[1]
>>#ENDIF
>>
>>* first make sure there are some FRXs in this directory
>>lnNumFound = ADIR(FrxArray, "*.FRX")
>>IF (lnNumFound > 0)
>>
>> FOR yy = 1 TO ALEN(FrxArray, 1)
>> *
>> * open each report as a table and see if TAG and TAG2
>> * fields are empty. If not, empty them...
>> *
>> lcFrx2Chk = FrxArray[yy, 1]
>> WAIT WINDOW "Now checking: " + lcFrx2Chk NOWAIT
>> USE (lcFrx2Chk) ALIAS Frx2Chk EXCLUSIVE
>> LOCATE && ie: Go Top
>>
>> IF .NOT. EMPTY(Frx2Chk.EXPR)
>> ? lcFrx2Chk + "
" + CHR(13)
>> IF UPPER(tcAction) = "CLEAN"
>> ? " ...Cleaning -->"
>> * rbs note: you may not want to just wipe this fld out...
>> *REPLACE Frx2Chk.EXPR WITH SPACE(0)
>> REPLACE Frx2Chk.EXPR WITH STRTRAN(Frx2Chk.EXPR, [DEVICE], [*DEVICE])
>> REPLACE Frx2Chk.EXPR WITH STRTRAN(Frx2Chk.EXPR, [DRIVER], [*DRIVER])
>> REPLACE Frx2Chk.EXPR WITH STRTRAN(Frx2Chk.EXPR, [OUTPUT], [*OUTPUT])
>> REPLACE Frx2Chk.EXPR WITH STRTRAN(Frx2Chk.EXPR, [DEFAULT], [*DEFAULT])
>> REPLACE Frx2Chk.EXPR WITH STRTRAN(Frx2Chk.EXPR, [PRINTQUALITY], [*PRINTQUALITY])
>> REPLACE Frx2Chk.EXPR WITH STRTRAN(Frx2Chk.EXPR, [YRESOLUTION], [*YRESOLUTION])
>> REPLACE Frx2Chk.EXPR WITH STRTRAN(Frx2Chk.EXPR, [TTOPTION], [*TTOPTION])
>> ?? " Cleaned!"
>> ENDIF
>> ENDIF
>> *
>> IF .NOT. EMPTY(Frx2Chk.TAG)
>> ? lcFrx2Chk + " " + CHR(13)
>> IF UPPER(tcAction) = "CLEAN"
>> ? " ...Cleaning -->"
>> REPLACE Frx2Chk.TAG WITH SPACE(0)
>> ?? " Cleaned!"
>> ENDIF
>> ENDIF
>> *
>> IF .NOT. EMPTY(Frx2Chk.Tag2)
>> ? lcFrx2Chk + " " + CHR(13)
>> IF UPPER(tcAction) = "CLEAN"
>> ? " ...Cleaning -->"
>> REPLACE Frx2Chk.Tag2 WITH SPACE(0)
>> ?? " Cleaned!"
>> ENDIF
>> ENDIF
>>
>> * now pack to be sure you don't get memofld bloat...
>> IF UPPER(tcAction) = "CLEAN"
>> PACK
>> ENDIF
>>
>> * close the report (.frx)...
>> IF USED([Frx2Chk])
>> USE IN Frx2Chk
>> ENDIF
>>
>> WAIT CLEAR
>>
>> ENDFOR
>>
>>ENDIF
>>
>>RELEASE ARRAY FrxArray
>>
>>RETURN
>>
>>* - eof - PROCEDURE ListReports
>>*******************************************************************************
>>
>>* - eof - NukeFRXPrintInfo.Prg
>>*******************************************************************************
>>*: EOF: FRX0PRTR.PRG
>>
>>HTH
>>
>>Rob
The weak wait for chance, The strong bid for chance,
The clever notch up chance, but The merciful give you chance.