Avatar billede it-assistent Nybegynder
29. august 2002 - 15:54 Der er 14 kommentarer og
1 løsning

Hvorfor virker VB koden ikke

Hvorfor bliver der kun udskrevet en linje??

Option Compare Database
Option Explicit

Private Sub Detaljesektion_Print(Cancel As Integer, PrintCount As Integer)
Call tegnLine(6753)
Call tegnLine(1000)
End Sub

Private Sub tegnLine(xValue As Integer)
Dim lngColor As Long
Dim Hoejde As Single
Dim x As Integer
x = xValue
Me.ScaleMode = 3
Hoejde = Me.Height
lngColor = RGB(0, 0, 0)
Me.Line Step(x, 0)-Step(0, Hoejde), lngColor

End Sub
29. august 2002 - 16:15 #1
prøv evt at sætte DoEvents mellem de 2 call-linier
Avatar billede it-assistent Nybegynder
29. august 2002 - 16:24 #2
Den kalder kun tegnLine en enkelt gang. Se kode:


Private Sub Detaljesektion_Print(Cancel As Integer, PrintCount As Integer)
Call tegnLine(6753)
DoEvents
Call tegnLine(5910)
DoEvents
Call tegnLine(5432)
DoEvents
Call tegnLine(4964)
DoEvents
Call tegnLine(4491)
DoEvents
Call tegnLine(4013)
DoEvents
Call tegnLine(3545)
DoEvents
Call tegnLine(3073)
DoEvents
Call tegnLine(2598)
DoEvents
Call tegnLine(2128)
DoEvents
Call tegnLine(1658)
DoEvents
Call tegnLine(2)

End Sub

Private Sub tegnLine(xValue As Integer)
Dim lngColor As Long
Dim Hoejde As Single
Dim x As Integer
x = xValue
Me.ScaleMode = 3
Hoejde = Me.Height
lngColor = RGB(0, 0, 0)
Me.Line Step(x, 0)-Step(0, Hoejde), lngColor

End Sub
Avatar billede mugs Novice
29. august 2002 - 16:55 #3
Skal jeg bruge flere lodrette streger i en rapport, plejerjeg at gøre det på denne måde. Måsdke ikke så elegant, men til gengæld virker det:

Dim lngColor As Long
Dim Hoejde As Single
Me.ScaleMode = 3
Hoejde = Me.Height
lngColor = RGB(0, 0, 180)

Me.Line (50, 0)-Step(0, Hoejde), lngColor
Me.ScaleMode = 3
Hoejde = Me.Height
lngColor = RGB(255, 0, 0)
Me.Line (1200, 0)-Step(0, Hoejde), lngColor
Avatar billede nih Novice
30. august 2002 - 08:44 #4
den tegner også mange linjer men de er Laaaaangt væk.
Jeg går ud fra at du vil starte i 0,0 hver gang, så du skal sætte 0-punktet for hver gang, ellers fortsætter den mod højre. ( Me.CurrentX = 0 og  Me.CurrentY = 0)

Private Sub tegnLine(xValue As Single)
  Dim lngColor As Long
  Dim Hoejde As Single
  Dim x As Single
  Me.CurrentX = 0
  Me.CurrentY = 0
  x = xValue
  Me.ScaleMode = 3
  Hoejde = Me.Height
  lngColor = RGB(0, 0, 0)
  Me.Line Step(x, 0)-Step(0, Hoejde), lngColor
End Sub

Niels
Avatar billede nih Novice
30. august 2002 - 08:45 #5
Det er desuden en god ide at holde sig til de datatyper de indbyggede funktioner bruger: Line bruger 'single'
Avatar billede nih Novice
30. august 2002 - 08:57 #6
du kan desuden regne i milimeter vha. scalemode:

Private Sub Detaljesektion_Print(Cancel As Integer, PrintCount As Integer)
  ' scalemode 6 = milimeter
  Me.ScaleMode = 6
  tegnLine 2
  tegnLine 10
  tegnLine 60
Avatar billede it-assistent Nybegynder
30. august 2002 - 09:46 #7
Ok nih - det virker nu med linjerne anyway. Jeg laver linjerne på den pågældende måde for at kunne få elementerne skubbet sammen på en måde så jeg undgår

Navn
Adresse
Adresse2
postnr by

Test
Testvej1

9999 testby


Jeg har sat kanSkubbes sammen til ja på elementerne og på detaljesektionen. Har du nogle ideer til hvorfor jeg har problemet??
Avatar billede nih Novice
30. august 2002 - 09:56 #8
kan du ikke pladsere elementerne lige under hinanden 2 mm højde og 2 mm i afstand, så flytter de sig automatisk, hvis der kommer data i dem.

Niels
Avatar billede it-assistent Nybegynder
30. august 2002 - 10:07 #9
Mere præcist så har jeg
Navn
Advokat
Adresse 1
Adresse 2
postnr by

Hvis advokatfeltet er tom, så bliver resultatet:
Navn
Adresse 1

Adresse 2
Postnr By

i stedet for det ønskede

Navn
Adresse 1
Adresse 2
Postnr By
Avatar billede nih Novice
30. august 2002 - 10:35 #10
du kan prøve at kode dig ud af det:

Private Sub Detaljesektion_Format(Cancel As Integer, FormatCount As Integer)
  Me.txtAdresse = ""
  If Not IsNull(Me!navn) Then Me.txtAdresse = Me!navn
  If Not IsNull(Me!advokat) Then Me.txtAdresse = Me.txtAdresse & vbCrLf & Me!advokat
  If Not IsNull(Me!adr1) Then Me.txtAdresse = Me.txtAdresse & vbCrLf & Me!adr1
  If Not IsNull(Me!adr2) Then Me.txtAdresse = Me.txtAdresse & vbCrLf & Me!adr2
  osv..................
End Sub

txtAdresse er en ubunden textbox på din rapport - kanstrækkes = ja

Dine felter skal være på rapporten, ellers kan VBA ikke få værdierne, så de skal bare være usynlige (navn, advokat osv)
Avatar billede nih Novice
30. august 2002 - 10:41 #11
Der SKAL være et navn i alle poster, ellers starter den med en tom linje
Avatar billede it-assistent Nybegynder
30. august 2002 - 10:59 #12
OK. Det spiller maksimum.
Avatar billede it-assistent Nybegynder
30. august 2002 - 11:44 #13
Efter jeg har slettet mine data og lavet en tom db bliver den ved med at sige:

Den indtastede værdi passer ikke til dette felt.

Det virkede inden jeg kopierede den underliggende tabel, slettede originalen og omdøbte kopien til oprindeligt navn. (for at nulstille autogeneret nr).

Private Sub Detaljesektion_Format(Cancel As Integer, FormatCount As Integer)
  Me.txtAdresse = ""
  If Not IsNull(Me![Kreditor navn]) Then Me.txtAdresse = Me![Kreditor navn]
  If Not IsNull(Me![Advokat]) Then Me.txtAdresse = Me.txtAdresse & vbCrLf & Me![Advokat]
  If Not IsNull(Me![Adresse 1]) Then Me.txtAdresse = Me.txtAdresse & vbCrLf & Me![Adresse 1]
  If Not IsNull(Me![Adresse 2]) Then Me.txtAdresse = Me.txtAdresse & vbCrLf & Me![Adresse 2]
  If Not IsNull(Me![Postnr]) Then Me.txtAdresse = Me.txtAdresse & vbCrLf & Me![Postnr]
  If Not IsNull(Me![By]) Then Me.txtAdresse = Me.txtAdresse & " " & Me![By]
End Sub
Avatar billede nih Novice
30. august 2002 - 11:54 #14
Private Sub Detaljesektion_Format(Cancel As Integer, FormatCount As Integer)
  If Not Me.HasData Then Exit Sub
  Me.txtAdresse = ""
  osv .............

Det er fordi der ingen data er i rapporten, når du har slettet data i tabellen.
Avatar billede it-assistent Nybegynder
30. august 2002 - 14:14 #15
Ok. Jeg tror det er ved at være tid til lidt frisk luft!
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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