1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
Option Explicit
Dim MaDb As String
Dim CnStr As String
Dim TitreImp As String
Dim CnnDb As ADODB.Connection
Dim RsSoc As ADODB.Recordset
Dim NbreLigne As Integer
Dim t As Integer
Dim k As Integer
Private Sub CmdFermer_Click()
FrmJeunesParActivite.Hide
End Sub
Private Sub CmdImprimer_Click()
CmdImprimer.Enabled = False
' Chargement de la grille qui contiendra les x données d'une page
Load FlexSel(1)
FlexSel(1).Visible = False
' Vide la grille d'impression
Set FlexSel(1).DataSource = Nothing
'Le probleme semble etre ici
' test du nombre de ligne pour savoir si l'impression doit se faire sur plusieurs pages
If RsSoc.RecordCount < NbreLigne Then ' une seule page
Set FlexSel(1).DataSource = RsSoc
ImprimeFlex
Else ' plusieurs pages
FlexSel(1).Rows = 35
k = 1
With RsSoc
.MoveFirst
Do While Not .EOF
FlexSel(1).Row = k
For t = 1 To 4
FlexSel(1).Col = t
If IsNull(.Fields(t - 1)) Then
FlexSel(1).Text = ""
Else
FlexSel(1).Text = .Fields(t - 1)
End If
Next t
k = k + 1
If k = 35 Then
ImprimeFlex
FlexSel(1).Clear
k = 1
End If
.MoveNext
Loop
End With
FlexSel(1).Rows = k - 1
ImprimeFlex
End If
' suppression de la grille d'impression
Unload FlexSel(1)
CmdImprimer.Enabled = True
FrmJeunesParActivite.Hide
End Sub
Private Sub Form_Load()
' Ouverture de la connection à la base de données
Set CnnDb = New ADODB.Connection
Set RsSoc = New ADODB.Recordset
' Mode d'utilisation
CnnDb.CursorLocation = adUseClient
CnnDb.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=192.168.0.30;" _
& "DATABASE=loisirsenliberte;" _
& "UID=root;" _
& "PWD=passroot;" _
& "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384
' Ouvrir la connexion
CnnDb.Open
' Crée une référence pour une Recordset
RsSoc.Open "SELECT DateActivite, activite.NumActivite, LibelleActivite, NomJeune, PrenomJeune FROM jeune, participer, activite WHERE jeune.NumJeune = participer.NumJeune AND participer.NumActivite = activite.NumActivite ORDER BY NumActivite ASC;", CnnDb, adOpenKeyset, adLockBatchOptimistic
' Mise en page du MSHFlexgrid
Set FlexSel(0).DataSource = RsSoc
FlexSel(0).ColWidth(0) = 150
FlexSel(0).ColWidth(1) = 2000
FlexSel(0).ColWidth(2) = 2000
FlexSel(0).ColWidth(3) = 2000
FlexSel(0).ColWidth(4) = 2000
FlexSel(0).ColWidth(5) = 2000
FlexSel(0).ColHeader(0) = flexColHeaderOn
FlexSel(0).Visible = True
FlexSel(0).Row = 0
FlexSel(0).Col = 0
' Initialisation du nombre de ligne d'impression sur une page
NbreLigne = 36
End Sub
Private Sub ImprimeFlex()
FlexSel(1).ColWidth(0) = 200
FlexSel(1).ColWidth(1) = 2000
FlexSel(1).ColWidth(2) = 2000
FlexSel(1).ColWidth(3) = 2000
FlexSel(1).ColWidth(4) = 2000
FlexSel(1).ColWidth(5) = 2000
FlexSel(1).ColHeader(0) = flexColHeaderOn
FlexSel(1).Col = 0
FlexSel(1).Row = 0
Printer.Orientation = 1
TitreImp = "Liste des jeunes inscrits aux activités"
Printer.CurrentX = (Printer.Width - Printer.TextWidth(TitreImp)) / 2
Printer.CurrentY = 200
Printer.FontName = "Tahoma"
Printer.FontSize = 14
Printer.FontBold = True
Printer.Print TitreImp
Printer.PaintPicture FlexSel(1).Picture, 500, 800
Printer.EndDoc
End Sub |
Partager