Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    343

    [VB6] Stampare su carta contenuto datagrid

    Ciao a tutti! Ho due quesiti da porvi:

    1)Ho un datagrid che prende i dati da un database mdb. Avrei la necessità stampare l'intero contenuto (quattro colonne e un certo numero di record) su carta con l'oggetto Printer ma non riesco.
    Come posso fare?

    2)Quando inserisco da programma un nuovo record nel database e, dunque, nel datagrid, questo mi viene aggiunto in fondo all'elenco; io vorrei invece che mi venisse inserito come primo, cioè in alto; ecco il codice che utilizzo:

    On Error Resume Next
    RS.AddNew
    RS("Mese e anno") = Combo1.Text & " " & anno.Text
    RS("Entrate") = txtentrate.Text & " Euro"
    RS("Uscite") = txtuscite.Text & " Euro"
    RS("Osservazioni") = txtnote.Text
    RS.Update

    Grazie in anticipo x l'aiuto!
    Ste

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    343
    Scusate, ma allora è una cosa proprio difficile, visto che non mi risponde nessuno....
    Non sapreste indicarmi almeno un sito da dove scaricare del codice di esempio da rielaborare? Scusate ma sono proprio in alto mare!
    Grazie in anticipo!
    Ste

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    343
    Ragazzi, nessuno ha neppure una mezza idea di come fare?
    Aiutooo!

  4. #4
    Se vuoi stampare il datagrid tutto uguale (cio è anche la griglia in se e per se)
    basta scrivere printform
    altrimenti devi usare un datareport sul database

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    343
    Grazie per la risposta!
    Purtroppo non posso usare printform perché così mi stamperebbe anche le barre degli strumenti, i pulsanti, i menu, la barra del titolo della finestra....e poi se i record inseriti sono molti e vi è la barra a scorrimento, quelli "nascosti" non verrebbero stampati......
    Allora devo proprio usare datareport? E sapresti indicarmi come si usa magari rimandandomi anche ad un qualche sito specifico? Io di VB un po' me ne intendo (lo uso da circa due-tre anni) ma questa funzione non l'ho proprio mai usata...........
    Grazie!
    Stefano

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Allora, puoi fare una cosa molto poco elegante ma che funziona.
    codice:
    RS.MoveFirst()
    For i = 1 to RS.RecordCount
    Printer.Print(RS("Mese e anno") + "    " + RS("Entrate") + "    " +RS("Uscite")) 'Insomma questo è il concetto, poi te lo formatti come ti pare e piace.
    RS.MoveNext()
    Next i
    Non è elegante ma funziona (l'ho usato un sacco di volte). Puoi stampare tutti i record nel recordset, che corrispondono alle voci della DataGrid
    Per l'ordinamento, se stai usando una query SQL sul tuo DataBase, puoi mettere un campo ID, contatore crescente, e lo usi come chiave primaria. Poi nella query ci metti:
    codice:
    [...] ORDER BY ID DESC
    Così i record sono ordinati in modo che quello scritto per ultimo sia mostrato in cima.

    Se stai usando una "Table", ti consiglio di passare a comando SQL che è molto più flessibile (devi mettere "Dynaset" nel campo "RecordSetType" se stai usando un controllo Data, se stai usando un controllo Adodc devi scegliere "Text" nel campo "CommandType").
    Per fare una query equivalente ad un Table devi fare:
    codice:
    SELECT * FROM [NomeTable]
    Se vuoi escludere un campo, per esempio vuoi fare alcuni campi ed altri no allora fai
    codice:
    SELECT [Campo1], [Campo2], [Campo3], [Campo4] FROM [NomeTable]
    Naturalmente tutto senza "[" e "]".
    Puoi fare anche altre cose con SQL, se mastichi inglese ti consiglio questa guida rapida:
    http://www.w3schools.com/sql/

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    343
    Grazie per la risposta, pprllo!
    Purtroppo ho dei problemini con la prima parte del codice che mi hai gentilmente fornito, quello cioè che con l'oggetto Printer m,anda in stampa tutti i record contenuti nel database.... In modo particolare mi sottolinea in giallo la riga

    Printer.Print(RS("Mese e anno") + " " + RS("Entrate") + " " +RS("Uscite"))

    e mi dice:

    "Impossibile trovare l'oggetto nell'insieme corrispondente alò nome o al numero richiesto"

    Ovviamente ho sistemato i valori tra virgolette in base alla struttura del mio dabase... Come mai però questo errore?
    Grazieee!
    Stefano

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    343
    Come non detto, ho fatto molte prove e ho visto che sbagliavo io!
    Grazie mille, funziona alla grandee!
    Ora provo a sistemare l'inserimento dei record...se avessi problemi, al limite, posso contare sul tuo aiuto?
    Grazie ancora!!
    Stefano

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Certo
    Prego

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    343
    Eccomi ancora a rompere....
    Non riesco proprio a fare in modo che il nuovo record venga inserito per primo nella datagrid. Ecco il codice che uso:

    Private Sub cmdaddtodatagrid_Click()
    On Error Resume Next
    RS.AddNew
    RS("Mese e anno") = Combo1.Text & " " & anno.Text
    RS("T Media MAX") = mass.Text & " °C"
    RS("T Media MIN") = minn.Text & " °C"
    RS("Osservazioni") = note.Text
    RS.MoveFirst 'è questa l'istruzione da usare per mettere x primo un record?
    RS.Update
    End Sub

    Perché l'istruzione

    RS.MoveFirst

    non ha alcun effetto?
    Grazieeee!
    Stefano

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.