Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74

    vb2010: stampare numeri allineati

    Salve a tutti.
    Sto creando un report ed avrei bisogno di stampare dei numeri in colonna allineati a destra.

    Ho visto che la soluzione è quella di "disegnarli" dentro dei rettangoli trasparenti.

    Ho trovato questo codice (che ho adattato):

    codice:
     Y = Y + (Font_riga.GetHeight)
            e.Graphics.DrawLine(Pens.Black, 10, Y, 810, Y)
            Y = Y + (Font_riga.GetHeight)
            str = " --- STATISTICHE --- "
            e.Graphics.DrawString(str, Font_grass, Brushes.Black, 350, Y)
            Y = Y + (Font_riga.GetHeight) * 2
            ' disegno il rettango che conterr' i dati statistici del tabulato
            displayRectangle = New Rectangle(New Point(15, Y), New Size(795, Y + 300))
            e.Graphics.DrawRectangle(Pens.Black, displayRectangle)
            e.Graphics.DrawString("", Font_riga, Brushes.Black, RectangleF.op_Implicit(displayRectangle), format2)
            Y = Y + (Font_riga.GetHeight) * 2
            str = "N.             %             TOTALE              %                UTILIZZO"
            e.Graphics.DrawString(str, Font_grass, Brushes.Black, 250, Y)
            Y = Y + (Font_riga.GetHeight) * 2
    
    
        str = "XXXXXXXXX:"
                e.Graphics.DrawString(str, Font_grass, Brushes.Black, 20, Y)
    
    
    
    
                
                If Not IsDBNull(dts.Tables("stat_righe").Rows(0).Item("RGSt_pres")) Then
                    displayRectangle = New Rectangle(New Point(360, Y), New Size(62, Font_riga.GetHeight))
                    e.Graphics.DrawRectangle(Pens.Transparent, displayRectangle)
                    e.Graphics.DrawString(Format(dts.Tables("Righe_estratte").Rows(0).Item("RGSt_pres"), "#,##0.00"), Font_riga, Brushes.Black, RectangleF.op_Implicit(displayRectangle), format2)
                End If
                If Not IsDBNull(dts.Tables("stat_righe").Rows(0).Item("RGSu_pres")) Then
                    displayRectangle = New Rectangle(New Point(530, Y), New Size(62, Font_riga.GetHeight))
                    e.Graphics.DrawRectangle(Pens.Transparent, displayRectangle)
                    e.Graphics.DrawString(Format(dts.Tables("Righe_estratte").Rows(0).Item("RGSu_pres"), "#,##0.00"), Font_riga, Brushes.Black, RectangleF.op_Implicit(displayRectangle), format2)
                End If
    Il problema che quando arrivo alla linea

    codice:
                    e.Graphics.DrawString(Format(dts.Tables("Righe_estratte").Rows(0).Item("RGSt_pres"), "#,##0.00"), Font_riga, Brushes.Black, RectangleF.op_Implicit(displayRectangle), format2)
    ottengo questo errore:

    "riferimento ad un oggetto non impostato su un istanza di oggetto"

    che in tutta sincerità (vedi mia firma) per me non significa quasi nulla ......

    Potreste aiutarmi ?
    Grazie
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Visto che vuoi passare a VB.NET (e comunque ad una programmazione OOP) dovresti studiarne le basi teoriche prima di buttarti a capofitto nel codice. Se non altro per capire i messaggi di errore ...

    Sicuro che questo elemento esista?

    Tables("Righe_estratte")


    Ultima modifica di oregon; 17-05-2014 a 13:57
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74
    Si esiste.
    Grazie

    P.S. ma se non volessi usare VB.NET (e quindi non OOP) quale soluzioni "BASIC" potrei adottare ? In considerazione che vb2010 express mi pare un buon prodotto ed è pure gratuito ...
    Ultima modifica di karug64; 17-05-2014 a 15:20
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Così non si può dire con certezza ma penso che il problema sia in

    dts.Tables("Righe_estratte").Rows(0).Item("RGSt_pre s")

    e che qualche parte di quell'oggetto non esista (un Item con quel nome o addirittura la riga numero 0).

    Puoi usare questa linea

    e.Graphics.DrawString(Format(1234,"#,##0.00"),Font_riga,Brushes.Black,RectangleF.op_Implicit(displayRectangle), format2)

    per controllare se è proprio così. Se funziona è proprio la parte della dts (di cui non sappiamo nulla) che crea il problema.

    Non credo tu possa usare un "vecchio" BASIC per ottenere questo tipo di prestazioni. Avresti enormi difficoltà con i DB, la grafica e tutto il resto. L'alternativa è studiare tanto, come tutti quelli che si occupano di queste cose.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74
    Ok. Ovviamente avevi ragione !!

    Era fin troppo banale.....

    nel codice :

    codice:
    IfNotIsDBNull(dts.Tables("stat_righe").Rows(0).Item("RGSt_pres"))Then
                    displayRectangle =NewRectangle(NewPoint(360, Y),NewSize(62,Font_riga.GetHeight))
                    e.Graphics.DrawRectangle(Pens.Transparent, displayRectangle)
                    e.Graphics.DrawString(Format(dts.Tables("Righe_estratte").Rows(0).Item("RGSt_pres"),"#,##0.00"),Font_riga,Brushes.Black,RectangleF.op_Implicit(displayRectangle), format2)
                EndIf
    al posto di "righe_estratte" andava indicato "stat_righe" ..... (righe_estratte lo usato per stampare altre info. Un copia/incolla maldestro ...)

    Grazie ancora
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

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.