Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


NewPage. Två rader försvinner vid utskrift. Varför?

Postades av 2003-10-08 08:00:47 - Lillemor Munther, i forum visual basic - allmänt, Tråden har 6 Kommentarer och lästs av 501 personer

Hej!
Följande kod ger utskrift på tre papper men 2 rader ur den lista som skrivs ut försvinner på sidan 3, ärendenummer 120 och 121 kommer ej med i utskriften. De finns i databasen och i framsökningen. Kan du hjälpa mig med mysteriet?

Och jag vet, koden är primitiv, det finns säkert bättre sätt ordna utskriften. Jag är nybörjare på utskrifter och lär mig en bit i taget. Nu försöker jag med enkla listor.
Jag har försökt med att göra en NewPage som skulle ge brytning för alla sidor men misslyckats. Tips mottages på andra lösningar men jag vill också veta varför denna inte fungerar då sidan 1 och 2 blir OK!

KODEN:
'***Skriver ut listan från frmSearch***
Public Sub PrintLista()
'Textstorlekar m.m.
Dim TextFont1 As StdFont
Set TextFont1 = New StdFont
TextFont1.Size = 10
TextFont1.Bold = False

Dim TextFont2 As StdFont
Set TextFont2 = New StdFont
TextFont2.Size = 10
TextFont2.Bold = True

Dim TextFont3 As StdFont
Set TextFont3 = New StdFont
TextFont3.Size = 8
TextFont3.Bold = False

Dim CaptionFont1 As StdFont
Set CaptionFont1 = New StdFont
CaptionFont1.Bold = True
CaptionFont1.Size = 18

Dim CaptionFont2 As StdFont
Set CaptionFont2 = New StdFont
CaptionFont2.Bold = True
CaptionFont2.Size = 14

Dim CaptionFont3 As StdFont
Set CaptionFont3 = New StdFont
CaptionFont3.Bold = True
CaptionFont3.Size = 12

'Utskriftens utseende
Printer.ScaleMode = vbCharacters 'skala = tecken
Printer.ScaleTop = 3 'topmarginalen 10 tecken
Printer.ScaleLeft = 10 'vänstermarginalen 20 tecken

Printer.CurrentX = 45
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Kantrubrik"
Printer.CurrentX = 60
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print Date
Printer.CurrentX = 80
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Sidan 1"

'Rubrik
Printer.CurrentX = 25 'startposition för utskrift
Printer.CurrentY = 8 'startposition för utskrift
Set Printer.Font = CaptionFont1
Printer.Print "Rubrik" 'rubriken
Printer.CurrentX = 25
Printer.CurrentY = 11
Set Printer.Font = CaptionFont2
Printer.Print "Ärendelista"

'Lista
Printer.CurrentX = 25
Printer.CurrentY = 14
Set Printer.Font = CaptionFont2 'normal
Printer.Print frmSearch.lblListval.Caption, "Antal objekt i listan: ", frmSearch.lstVisaLista.ListCount

Printer.CurrentX = 25
Printer.CurrentY = 16
Set Printer.Font = TextFont2
For i = 0 To frmSearch.lstVisaLista.ListCount - 1
Printer.Print frmSearch.lstVisaLista.List(i)
If i = 55 Then
Printer.NewPage
Printer.CurrentX = 45
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Kantrubrik"
Printer.CurrentX = 60
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print Date
Printer.CurrentX = 80
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Sidan 2"
Set Printer.Font = TextFont2
Printer.CurrentX = 25
Printer.CurrentY = 10
End If
If i = 120 Then
'Printer.NewPage
Printer.CurrentX = 45
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Kantrubrik "
Printer.CurrentX = 60
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print Date
Printer.CurrentX = 80
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Sidan 3"
Set Printer.Font = TextFont2
Printer.CurrentX = 25
Printer.CurrentY = 10
Printer.Print
Printer.Print

End If

'Koden upprepas enligt ovan för fler sidor när databasen växer, vilket torde
'medföra att felet också upprepas.


Svara

Sv: NewPage. Två rader försvinner vid utskrift. Varför?

Postades av 2003-10-08 11:32:35 - Sven Åke Persson

Vad händer om du ändrar If i = till tex 50 och 115,

Sedan behöver du inte uppreppa samma kodrader använd tex If i Mod 50 = 0 Then
kör en ny runda med NewPage.

Du är väl medveten om att du måste ha ett Printer.EndDoc sist efter Next i

Nyfiken på svar


Svara

Sv: NewPage. Två rader försvinner vid utskrift. Varför?

Postades av 2003-10-08 12:01:02 - Lillemor Munther

Hej Sven!

Jo om jag ändrar index i så ramlar två andra rader bort, i fallet du nämner blir det ärende 115 och 116 på sidan 3 i utskriften. Så det är inte sidstorleken som spökar, tror jag.

EndDoc och Next är med, vart inte inkopierade ovan

Hur menar du med If i Mod 50=0 ?

Sidan 1 rymmer mindre listrader än sidan 2 och efterföljande pga rubriksättning.

Alltså ska sidan 2 och frammåt upprepas med sidnummer i kantrubrik.
Det kan väl lösas med uppräkning. (Hur f-n jag nu skriver den - stiltje just nu)

Men förklara gärna det där med Mod 50=0 mera.

Jag var inne på att sätta en indexuppräkning med aktuellt i (senast utskrivna) + 60 för varje ny sida efter sidan 1 och det fick jag inte att få att fungera. Därav upprepningen men det blir lätt att göra fel i koden då som inte syns nu för jag har inte 1000 ärenden att kolla utskriften på. (dålig programmering med andra ord)

Tack för ditt engagemang


Svara

Sv: NewPage. Två rader försvinner vid utskrift. Varför?

Postades av 2003-10-08 12:20:46 - Sven Åke Persson

Du kan börja att testa så här,sidan 3 kommer förmodligen att bli för kort
du får berätta vad som händer. Så kan Vi "modda" If i

Det viktiga nu är att du inte skall tappa två rader.

'Lista
Dim sidNr As Long
sidNr = 2
Printer.CurrentX = 25
Printer.CurrentY = 14
Set Printer.Font = CaptionFont2 'normal
Printer.Print frmSearch.lblListval.Caption, "Antal objekt i listan: ", frmSearch.lstVisaLista.ListCount
Printer.CurrentX = 25
Printer.CurrentY = 16
Set Printer.Font = TextFont2
For i = 0 To frmSearch.lstVisaLista.ListCount - 1
Printer.Print frmSearch.lstVisaLista.List(i)
If i Mod 55 = 0 Then
Printer.NewPage
Printer.CurrentX = 45
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Kantrubrik"
Printer.CurrentX = 60
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print Date
Printer.CurrentX = 80
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print Str$(sidNr)
Set Printer.Font = TextFont2
Printer.CurrentX = 25
Printer.CurrentY = 10
sidNr = sidNr + 1
End If
Next 'i
Printer.EndDoc


Svara

Sv: NewPage. Två rader försvinner vid utskrift. Varför?

Postades av 2003-10-08 19:06:02 - Lillemor Munther

Tack Sven

Jag ska testa koden. Printer.Print Str$(sidNr) var ny för mig, intressant se vad det blir.
Jag hoppas raderna blir kvar. Jag undrar fortfarande varför de försvinner. Men blir de kvar nu så har jag en bättre lösning med mindre och vettigare kod.

Hör av mig om resultat.

Jag är "modemare" varför det dröjer lite mellan varven jag kopplar in mig men jag hoppas kunna rapportera ikväll.



Svara

Sv: NewPage. Två rader försvinner vid utskrift. Varför?

Postades av 2003-10-08 20:41:36 - Lillemor Munther


Hej igen!

Det fungerar till en del. Första sidan innehåller dock bara en rad från listan innan sidbrytning. Men alla ärenden kommer med!
Printer.CurrentX = 25 fick jag lägga till efter End If för att få texten på papperet, den försvann delvis utanför papperets vänsta kant. utom listrad 1 på varje sida.

Funderar nu på hur jag modifierar listutskriften så att jag får fler än ett ärende på första sidan. Tips mottages, jag vill ha sidbrytningen på samma rad på alla sidor.

MVH


Svara

Sv: NewPage. Två rader försvinner vid utskrift. Varför?

Postades av 2003-10-08 22:07:42 - Lillemor Munther

Hej Sven!

Kanske har fler nytta av koden och så här blev min lösning till sist.
Tack vare Svens tips så ser listutskriften nu hyfsad ut.

'***Skriver ut listan på formuläret frmSearch
Public Sub PrintLista()
'Textstorlekar m.m.
Dim TextFont1 As StdFont
Set TextFont1 = New StdFont
TextFont1.Size = 10
TextFont1.Bold = False

Dim TextFont2 As StdFont
Set TextFont2 = New StdFont
TextFont2.Size = 10
TextFont2.Bold = True

Dim TextFont3 As StdFont
Set TextFont3 = New StdFont
TextFont3.Size = 8
TextFont3.Bold = False

Dim CaptionFont1 As StdFont
Set CaptionFont1 = New StdFont
CaptionFont1.Bold = True
CaptionFont1.Size = 18

Dim CaptionFont2 As StdFont
Set CaptionFont2 = New StdFont
CaptionFont2.Bold = True
CaptionFont2.Size = 14

Dim CaptionFont3 As StdFont
Set CaptionFont3 = New StdFont
CaptionFont3.Bold = True
CaptionFont3.Size = 12

'Utskriftsstorlek
Printer.ScaleMode = vbCharacters 'skala = tecken
Printer.ScaleTop = 3 'topmarginalen
Printer.ScaleLeft = 10 'vänstermarginalen

'Sidhuvud sidan 1
Printer.CurrentX = 45
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Kantrubrik "
Printer.CurrentX = 60
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print Date 'utskriftdagens datum
Printer.CurrentX = 80
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Sid: 1" 'Första sidan med angivet sidnummer direkt i koden
'Rubrik, endast på sidan 1
Printer.CurrentX = 25 'startposition för utskrift
Printer.CurrentY = 8 'startposition för utskrift
Set Printer.Font = CaptionFont1
Printer.Print "Rubrik" '; 'rubriken
Printer.CurrentX = 25
Printer.CurrentY = 11
Set Printer.Font = CaptionFont2
Printer.Print "Ärende"

'Lista
Dim sidNr As Long
sidNr = 2 'startnummer för sidnumrering
Printer.CurrentX = 25
Printer.CurrentY = 14
Set Printer.Font = CaptionFont2 'normal
Printer.Print frmSearch.lblListval.Caption, "Antal objekt i listan: ", frmSearch.lstVisaLista.ListCount

Printer.CurrentX = 25
Printer.CurrentY = 16
Set Printer.Font = TextFont2
For i = 0 To frmSearch.lstVisaLista.ListCount - 1 'från första till sista ärendet
Printer.Print frmSearch.lstVisaLista.List(i) 'skriv ut nästa i = nästa ärende
If i Mod 55 = 47 Then 'ger brytning på sidan 1 efter ärende 48
Printer.NewPage 'Mod 55=0 ger brytning efter första ärendet
Printer.CurrentX = 45
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Kantrubrik " 'Kantrubrik, i sidhuvud
Printer.CurrentX = 60
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print Date 'Datum för utskrift, i sidhuvud
Printer.CurrentX = 80
Printer.CurrentY = 3
Set Printer.Font = TextFont3
Printer.Print "Sid:" 'Texten "Sid:" före aktuellt sidnummer
Printer.CurrentX = 85
Printer.CurrentY = 3
Set Printer.Font = TextFont3 'Första sidan numreras i koden
Printer.Print Str$(sidNr) 'Sidnumrering vid utskrift, i sidhuvud
Set Printer.Font = TextFont2
Printer.CurrentX = 25
Printer.CurrentY = 10
sidNr = sidNr + 1 'Uppräkning av sidnumrering, start med 2
End If
Printer.CurrentX = 25 'Så att alla ärenden får samma startposition
' i x-led, listan blir läslig på papperet
Next 'i
Printer.EndDoc 'slut på dokumentet, det kan skrivas ut
End Sub



Kanske finns informationen på något annat ställe hos PelleSoft, jag har inte letat överallt. Man bör ju hitta denna om man söker med NewPage, eller? Utifall någon får hjälp av den vid problem med utskrift.

Tack för hjälpen Sven!


Svara

Nyligen

  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe
  • 20:22 Spel
  • 17:07 Snabb och trevlig webbplats utan l

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 120
27 958
271 737
480
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies