ti ringrazio per il link, ma da quell'articolo ho già preso spunto : ho ottenuto di stampare ed è stato già un grande passo avanti 
per le stampe faccio in questo modo:
ho un DB in access di appoggio per i dati verso i report
quindi quando lancio una stampa per prima cosa svuoto la tabella di competenza di access e la popolo con i dati che m'interssano. e chiudo il db access
Ho poi un form a cui passo il nome della stampa ( ho una tabella in SQL che mi relaziona il nome stampa al report da utilizzare), il numero di copie e la destinazione ( Stampante o Video) con questo codice
If e.Button = Windows.Forms.MouseButtons.Left Then
dovestampo = "P"
Else
dovestampo = "V"
End If
Dim frmdialogo As New U_lanciastampa(nomestampa, dovestampo, 1)
If dovestampo = "P" Then
frmdialogo.Show(Me)
Else
frmdialogo.ShowDialog(Me)
End If
a questo punto il controllo passa a U_lanciastampa il cui codice è tutto qui
a questo punto , a seconda se ho chiesto la stampa a video o direttamente alla stampante,
ottengo UN qualcosa, ma senza una logica ( o almeno senza che ce lo spieghiamo)
il qualcosa può essere sia la stampa richiesta, sia l'ultima stampa effettuata nella sessione di lavoro