Avatar billede nightowl24 Nybegynder
14. marts 2007 - 09:07 Der 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.

fx:

1 vare1        12,95
1 varetekst100        12,9
5
1 varetekst3        45,50

I min ASP kode benytter jeg vbtab til tabulator og vbcrlf til linieskift.

receipt = receipt + ""&FaktRS.Fields.Item("SOLGT").Value &" "
receipt = receipt + FaktRS.Fields.Item("TEKST").Value & vbTab & vbTab
receipt = receipt + Formatnumber((FaktRS.Fields.Item("Salg1DKK").Value)*(FaktRS.Fields.Item("SOLGT").Value)*1.25) & vbcrlf

Bonprinteren skal modtage tekst, så kan ikke lave det med html.

Nogen der har et rigtig godt forslag hvordan jeg løser dette problem?
Avatar billede kennedk Nybegynder
14. marts 2007 - 10:10 #1
du kunne måske lave det i en tabel?
Avatar billede nightowl24 Nybegynder
14. marts 2007 - 10:20 #2
Uden brug af html?
Avatar billede kennedk Nybegynder
14. marts 2007 - 10:44 #3
aah havde ikke læse det :/
Avatar billede hnteknik Novice
14. marts 2007 - 15:59 #4
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 ??

Henrik
Avatar billede hnteknik Novice
14. marts 2007 - 15:59 #5
Undskyld mine skrivefejl - har siddet i udviklingsprojekt i 8 stive timer.
Avatar billede nightowl24 Nybegynder
14. marts 2007 - 16:09 #6
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.

Du kan hente en gratis version på www.vbgold.com

Jeg er ikke helt sikker på at jeg er med på det du skrev, kan jeg få dig til at uddybe?
Avatar billede hnteknik Novice
14. marts 2007 - 16:25 #7
Tak for input.

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.
Avatar billede tsunami Nybegynder
14. marts 2007 - 19:19 #8
linielength = 100
linie = Cstr(FaktRS.Fields.Item("SOLGT").Value).length + 1 + Cstr(FaktRS.Fields.Item("TEKST").Value).length + Cstr(Formatnumber((FaktRS.Fields.Item("Salg1DKK").Value)*(FaktRS.Fields.Item("SOLGT").Value)*1.25)).length

receipt = receipt + ""&FaktRS.Fields.Item("SOLGT").Value &" "
receipt = receipt + FaktRS.Fields.Item("TEKST").Value

for i = 1 to (linielength - linie)
receipt = receipt + " "
Next

receipt = receipt + Formatnumber((FaktRS.Fields.Item("Salg1DKK").Value)*(FaktRS.Fields.Item("SOLGT").Value)*1.25) & vbcrlf

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
Avatar billede hnteknik Novice
14. marts 2007 - 20:55 #9
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
Avatar billede hnteknik Novice
14. marts 2007 - 21:08 #10
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.
Avatar billede hnteknik Novice
14. marts 2007 - 21:24 #11
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.
Avatar billede nightowl24 Nybegynder
15. marts 2007 - 09:23 #12
Tak for det, jeg vælger at give hnteknik pointene, da han var først på banen med ideen.
Avatar billede hnteknik Novice
15. marts 2007 - 09:44 #13
Takker

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.
Avatar billede nightowl24 Nybegynder
15. marts 2007 - 10:43 #14
Selvfølgelig, du kan skrive til mig på brb(at)mentor-it.dk
Avatar billede hnteknik Novice
15. marts 2007 - 14:31 #15
Takker - min er henrik(at)web4it(punkt)dk
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester