+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Stampare una tabella

  1. #1
    nioMatrix non è in linea Scolaretto
    Luogo
    Italy
    Post
    184

    Wink Stampare una tabella

    Salve a tutti

    Dovrei stampare una tabella ("IVA") contenuta nel database "Archivio".
    Questa tabella ha come campi:

    "Codice"
    "Aliquota"
    "Indetr"
    "Descrizione"

    Devo farlo con un ciclo o c'è anche un altro modo per farlo?

  2. #2
    L'avatar di _gas
    _gas non è in linea Scribacchino
    Luogo
    Italy
    Post
    1,345
    Veramente di solito si stampa con una stampante... :P
    Dipende dal metodo di stampa che preferisci! Ma il metodo più semplice è aprire un recordset con quei campi e con un semplice ciclo impostare l'oggetto printer...
    si certo... e poi c'era la marmotta che confezionava la cioccolata...

  3. #3
    nioMatrix non è in linea Scolaretto
    Luogo
    Italy
    Post
    184
    E come faccio ad allineare tutte le voci?

  4. #4
    L'avatar di © rocky
    © rocky non è in linea Scolaretto
    Luogo
    Torino
    Post
    236
    Quote Originariamente inviato da nioMatrix
    E come faccio ad allineare tutte le voci?
    Ti può aiutare questo ?

    codice precedente ..................
    Printer.ScaleMode = vbCharacters ' Imposta opzioni di stampa
    Printer.FontBold = True
    Printer.FontItalic = False
    Printer.FontName = "Courier New" ' Tipo di Font
    Printer.FontSize = 12 ' Grandezza carattere

    Printer.CurrentX = 8 ' Formatta in orizzontale
    Printer.CurrentY = 4 ' Formatta in verticale
    codice successivo..................

    Ciaox
    Tutta la Vita non è altro che un solo giorno.

  5. #5
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,178
    Blogs
    3
    Quote Originariamente inviato da © rocky
    Printer.CurrentX = 8 ' Formatta in orizzontale
    Printer.CurrentY = 4 ' Formatta in verticale
    questo va bene... ma solo per la prima riga.
    il valore di CurrentX dopo aver "stampato" la prima riga, viene riportato a 0.
    per evitare questo problema, ad ogni passaggio del ciclo bisogna reimpostare CurrentX al giusto "margine".

    esempio:

    codice:
    Dim CurX As Integer
    CurX = 150
    For R = 0 To rs.RecordCount - 1
        Printer.CurrentX = CurX
        Printer.Print rs("Campo1").Value & vbTab & rs("Campo2").Value & vbTab & ...
        rs.MoveNext
    Next R
    Printer.EndDoc
    un altro problema è che bisogna considerare che CurrentY non vada oltre un certo limite inferiore, in tal caso dare il comando NewPage, per creare una nuova pagina, e riportare il CurrentY al margine superiore.

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  6. #6
    L'avatar di © rocky
    © rocky non è in linea Scolaretto
    Luogo
    Torino
    Post
    236
    Quote Originariamente inviato da TheTruster
    questo va bene... ma solo per la prima riga.
    il valore di CurrentX dopo aver "stampato" la prima riga, viene riportato a 0.
    per evitare questo problema, ad ogni passaggio del ciclo bisogna reimpostare CurrentX al giusto "margine".

    esempio:

    codice:
    Dim CurX As Integer
    
    CurX = 150
    For R = 0 To rs.RecordCount - 1
        Printer.CurrentX = CurX
        Printer.Print rs("Campo1").Value & vbTab & rs("Campo2").Value & vbTab & ...
        rs.MoveNext
    Next R
    Printer.EndDoc
    un altro problema è che bisogna considerare che CurrentY non vada oltre un certo limite inferiore, in tal caso dare il comando NewPage, per creare una nuova pagina, e riportare il CurrentY al margine superiore.

    TheTruster
    Se inserisci una variabile che si incrementa di 1 (o quello che ti pare) il gioco è fatto.
    (In blu le modifiche)

    esempio:

    codice:
    Dim CurX As Integer
    Dim Increm as Integer
    CurX = 150
    For R = 0 To rs.RecordCount - 1
    Increm = Increm + 1 ' o quello che vuoi.
        Printer.CurrentX = (CurX + Increm)
        Printer.Print rs("Campo1").Value & vbTab & rs("Campo2").Value & vbTab & ...
        rs.MoveNext
    Next R
    Printer.EndDoc
    Ad ogni ciclo di "R" la stampa viene spostata di (CurX + Increm).

    É questo che volevi ottenere ?
    Tutta la Vita non è altro che un solo giorno.

  7. #7
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,178
    Blogs
    3
    Quote Originariamente inviato da © rocky
    Se inserisci una variabile che si incrementa di 1 (o quello che ti pare) il gioco è fatto.
    (In blu le modifiche)

    esempio:

    codice:
    Dim CurX As Integer
    Dim Increm as Integer
    CurX = 150
    For R = 0 To rs.RecordCount - 1
    Increm = Increm + 1 ' o quello che vuoi.
        Printer.CurrentX = (CurX + Increm)
        Printer.Print rs("Campo1").Value & vbTab & rs("Campo2").Value & vbTab & ...
        rs.MoveNext
    Next R
    Printer.EndDoc
    Ad ogni ciclo di "R" la stampa viene spostata di (CurX + Increm).
    perchè andrebbe addizionato un valore incrementale a CurX?!

    in questo modo otterresti una stampa di questo genere:

    codice:
        Linea 1
            Linea 2
                Linea 3
                    Linea 4
    a quanto mi è parso di capire, invece, nioMatrix vorrebbe ottenere una stampa con le righe tutte allineate secondo un margine costante.
    le linee di codice che ho proposto permettono di fare proprio quello.

    l'unica cosa da aggiungere è il controllo del salto pagina.

    se poi ho capito male, e lui vuole ottenere anche un allineamento per ogni "colonna" allora le cose si complicano leggermente, ma è un problema comunque risolvibile...

    credo che un ulteriore chiarimento da parte di nioMatrix sia necessario

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  8. #8
    L'avatar di © rocky
    © rocky non è in linea Scolaretto
    Luogo
    Torino
    Post
    236
    Hai ragione The Truster !!! ho sbagliato io o forse ho capito male il problema e a dire il vero ho anche sbagliato la citazione, credevo che fosse una domanda e invece stavi già rispondendo a nioMatrix, (scusa)

    CurrentX sposta in orizzontale e invece avrei dovuto scrivere CurrentY per spostare in verticale con l'incremento "Increm" così:

    codice:
    Dim CurX As Integer
    Dim Increm As Integer
     CurX = 150
      Increm = 8  ' Inizio pagina approssimativo
    For R = 0 To rs.RecordCount - 1
       Increm = Increm + 1 ' o quello che vuoi.
        Printer.CurrentX = CurX
        Printer.CurrentY = Increm
    Printer.Print rs("Campo1").Value & vbTab & rs("Campo2").Value & vbTab & ...
        rs.MoveNext
    
    ' e poi giustamente
       If Increm > 50 Then ' Fine pagina approssimativo 42 righe
        Increm = 8 
         NewPage
       End If
     Next R
     Printer.EndDoc
    End Sub
    Ovviamente serve altro codice...o correzione di questo
    Comunque, come dici tu, necessita un chiarimento di nioMatrix.
    Ultima modifica di © rocky; 12-03-2006 23:09 
    Tutta la Vita non è altro che un solo giorno.

+ Rispondi al Thread

Discussioni simili

  1. Articolo: [Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO)
    Da dragone bianco nel forum Access
    Risposte: 0
    Ultimo Post: 18-05-2006, 19:53
  2. Stampare tabella da database
    Da lucagfc nel forum Visual Basic 6
    Risposte: 11
    Ultimo Post: 28-03-2006, 02:31
  3. Tabella nella tabella
    Da ErPiotta nel forum Microsoft Office, Access, VBA
    Risposte: 3
    Ultimo Post: 02-01-2006, 17:18
  4. aggiornamento record da tabella a tabella
    Da ketto85 nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 26-10-2005, 22:17
  5. Creazione di una tabella x dati storici
    Da Elimar nel forum Microsoft Office, Access, VBA
    Risposte: 1
    Ultimo Post: 30-06-2005, 16:05

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi