14. marts 2007 - 09:07Der er
14 kommentarer og 1 løsning
Udskriv en tekstbaseret bon, få priser til at stå under hinanden
Hej
Jeg sidder med et ASP baseret kassesystem, som udskriver en bon i ren tekstformat.
Mit problem er at bonens priser nogle gange hopper ned til næste linie og andre gange vises prisen for tæt på vareteksten alt efter størrelsen på vareteksten.
Hej - det lyder spændende. jeg er også ved at lave et access baseret kassesystem om til et web baseret men er løbet ind i problemet med at få skevet en bon ud fra internettet uden at få alt det html snask med over (header og Footer f.eks.)
Prøv at tænke på at lave en blank print streng af f.eks. 80 karakterer.
antal, tekst og pris sætter ind på de respektive pladser med f.eks. REPLACE. Hermed får en form for tab funktion.
Må jeg så sprøge, hvordan får du så printen bonen. danner du en ren tekst fil, som du så siger print til ??
Det der skal udskrives gemmer jeg i en fil og så benytter jeg en komponent der hedder ASPPrinter til at udskrive direkte til printeren fra ASP koden. Med javascript skal man jo bekræfte hvilken printer der benyttes hvilket ikke er optimalt i et kassesystem.
Jeg har lige kort tid førend at jeg skal videre til noget andet arbejde. Først laver du en streng bestående af spaces, så for hver variabel replacer du et forud defineret antal spaces med teksten vha string functioner som f.eks. replace, hvor du kan styre hvor der skal indsættes fra og til. Jeg har det kun lige hovedet og må kigge på det i aften for at konkretisere det. Jeg må løbe nu.
Håber du kan se ideen i denne måde at gøre det på... dette er for at slippe for tabs og så kun bruge mellemrum imellem... på denne måde burde alle være lige lange i længden. håber det er noget som kan bruges
Jeg foreslår, at du afsætter det antal karakterer, som hver af de 3 kolonner må bruge og 'padder' med spaces i det omfang teksten ikke kan rumme de fulde antal karakterer. Brug disse funktioner til at padde dine felter med og slt hele printstengen sammen til sidst førend at du printer:
Function Rpad (sValue, sPadchar, iLength) Rpad = sValue & string(iLength - Len(sValue), sPadchar) End Function
Function Lpad (sValue, sPadchar, iLength) Lpad = string(iLength - Len(sValue),sPadchar) & sValue End Function
eksempler
Rpad(solgt," ",30) sætter spaces efter variablen solgt Lpad(Pris," ",10) Højrestiller pris variablen og spacer op til 10 Lpad(Month(Date()),"0",2) sætter 0 foran månederne 1-9
Hvis salgsteksten er for lang for bonen, kan du klippe teksten til ved f.eks. at bruge denne funktion
Function clipText(sText,iLength) dim text_trim, iLoc, iLast sText = sText & " " if len(sText) => iLength then iLast = 1 iLoc = 1 if instr(1,sText," ") > 0 then do while iLoc < iLength AND iLoc > 0 iLast = iLoc+1 iLoc = instr(iLast,sText," ") loop text_trim = left(sText,iLast-2) & "..." else text_trim = left(sText,iLength) & "..." end if else text_trim = sText end if clipText = text_trim End Function
Du kan fjerne '...' eller indsætte tre spaces efer hvad der ser bedst ud.
ASP Printer er en udmærket komponent, men kræver at min ISP har den installeret, hvilket ikke er tilfældet. Det nærmeste jeg kan komme er AspPDF, men om man kan få den til at printe til default printer ved jeg endnu ikke.
Som sagt arbejder jeg også på at få et kassesystem op at køre på nettet ved at konvertere et stationært kassesystem. jeg skal blot have min ISP til at tilbyde en fornuftig print funktion fra webbrowseren/serveren. Dit bud ser lovende ud.
Måske kan jeg trække på din erfaring på området en anden gang.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.