Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291

    VB6 stampare con DataReport

    Vorrei utilizzare il DR senza DataEnvironment.
    Nelle prove che sto eseguendo ho inserito nel DR una Lbl nella quale dovrebbero inserirsi i dati salvati nei records di un DB Access, come segue:
    codice:
    Private Sub Command4_Click()
            
            Dim OggSR As New ADODB.Command
            Dim ConRx2 As New ADODB.Connection
            Dim RSTrx2 As New ADODB.Recordset
            Dim i As Long
            
        'Esegue la connessione con il DataBase TblComputo1RPT:
            With ConRx2
                .ConnectionString = DataConnessione
                .CursorLocation = adUseClient   'tipo di cursore
                .Mode = adModeShareDenyNone     'nessuna limitazione
                .CommandTimeout = 15
                .Open
            End With
              
        'Salva nella Tbl i dati dei controlli RTB:
            OggSR.ActiveConnection = ConRx2
            OggSR.CommandType = adCmdText
              
        'Prima di salvare Elimina i vecchi records dalla tabella - TblComputo1RPT:
            OggSR.CommandText = "Delete * From TblComputo1RPT"
            OggSR.Execute
              
        'Inserisce i dati dei controlli RTB nel DB TblComputo1RPT:
        For i = Form1.RTB.LBound To Form1.RTB.UBound Step 1
            If Form1.RTB(i).Text <> "" Then
                OggSR.CommandText = "insert into TblComputo1RPT(Descriz)" _
                & "values ('" & Replace(Form1.RTB(i).Text, "'", "''") & "');"
                OggSR.Execute
            End If
        Next i
              
    '-------------------------------------
    ' Visualizza nel DataReport per la stampa:
    
            RSTrx2.Source = "SELECT Descriz FROM TblComputo1RPT"
            RSTrx2.Open , ConRx2, adOpenDynamic, adLockOptimistic
            
             ' Assegna il riferimento all'oggetto:
            Set DataReport2.DataSource = RSTrx2
                    
            DataReport2.Sections("Section1").Controls("Label1").Caption = RSTrx2("Descriz")
            
            'Visualizza il Report per la stampa:
            DataReport2.Refresh
            DataReport2.Show
    
    'Rilascia l'oggetto:
        Set DataReport2.DataSource = Nothing
    'Chiude e cancella il recordSet:
        RSTrx2.Close
        Set RSTrx2 = Nothing
    'Chiude e cancella la connessione:
        ConRx2.Close
        Set ConRx2 = Nothing
    
    End Sub
    Ora se nella Tabella del DB TblComputo1RPT è salvato un solo record questo viene visualizzato normalmente, ma se i records sono due, o più, viene visualizzato solo e soltanto il primo record ripetuto due, o più, volte.
    E' evidente che manca un'ulteriore informazione nel codice postato, ma non sono riuscito ad individuarla (nonostante molteplici prove).
    Grazie per l'aiuto.
    LM

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nel report devi usare un controllo textbox e non una label e scrivi

    DataReport2.Sections("Section1").Controls("TextBox 1").DataField = "Descriz"

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Oregon ti ringrazio, funziona alla grande !
    Ho notato che con il codice definitivo che posto di seguito, il testo contenuto in più records viene evidenziato nel DR senza soluzione di continuità; ciò non rende immediatamente visibili i diversi blocchi di testo (cosa che non accade con l'uso del DataEnvironment). E' possibile inserire uno stacco tra un blocco ed un altro (ovvero tra un record ed il successivo)?
    codice:
    ' Salva nel DataBase e Visualizza nel DataReport:
    Private Sub Command4_Click()
            
            Dim OggSR As New ADODB.Command
            Dim ConRx2 As New ADODB.Connection
            Dim RSTrx2 As New ADODB.Recordset
            Dim i As Long
            
        'Esegue la connessione con il DataBase TblComputo1RPT:
            With ConRx2
                .ConnectionString = DataConnessione
                .CursorLocation = adUseClient   'tipo di cursore
                .Mode = adModeShareDenyNone     'nessuna limitazione
                .CommandTimeout = 15
                .Open
            End With
              
        'Salva nella Tbl i dati dei controlli RTB:
            OggSR.ActiveConnection = ConRx2
            OggSR.CommandType = adCmdText
              
        'Prima di salvare Elimina i vecchi records dalla tabella - TblComputo1RPT:
            OggSR.CommandText = "Delete * From TblComputo1RPT"
            OggSR.Execute
              
        'Inserisce i dati dei controlli RTB nel DB TblComputo1RPT:
        For i = Form1.RTB.LBound To Form1.RTB.UBound Step 1
            If Form1.RTB(i).Text <> "" Then
                OggSR.CommandText = "insert into TblComputo1RPT(Descriz)" _
                & "values ('" & Replace(Form1.RTB(i).Text, "'", "''") & "');"
                OggSR.Execute
            End If
        Next i
              
    '-------------------------------------
    ' Visualizza nel DataReport per la stampa:
            RSTrx2.Source = "SELECT Descriz FROM TblComputo1RPT"
            RSTrx2.Open , ConRx2, adOpenDynamic, adLockOptimistic
            
            ' Assegna il riferimento all'oggetto:
            Set DataReport2.DataSource = RSTrx2
                        
            ' Inserisce i dati nel DataReport:
            DataReport2.Sections("Section1").Controls("TextBox1").DataField = "Descriz"
            
            'Visualizza il Report per la stampa:
            DataReport2.Refresh
            Load DataReport2
            DataReport2.Show 'vbModal
    
    'Rilascia l'oggetto:
        Set DataReport2.DataSource = Nothing
    'Chiude e cancella il recordSet:
        RSTrx2.Close
        Set RSTrx2 = Nothing
    'Chiude e cancella la connessione:
        ConRx2.Close
        Set ConRx2 = Nothing
    
    End Sub
    LM

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da LMondi
    Oregon ti ringrazio, funziona alla grande !
    Ho notato che con il codice definitivo che posto di seguito, il testo contenuto in più records viene evidenziato nel DR senza soluzione di continuità; ciò non rende immediatamente visibili i diversi blocchi di testo (cosa che non accade con l'uso del DataEnvironment). E' possibile inserire uno stacco tra un blocco ed un altro (ovvero tra un record ed il successivo)?
    La modalita' di reperimento dei dati non c'entra nulla con la loro visualizzazione.

    Probabilmente devi dimensionare meglio la sezione in altezza ...

    Non saprei dirti altro, dato che non dipende dal codice ne' posso vedere cosa effettivamente succede ...

  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Grazie ancora !
    LM

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    A chi dovesse interessare:
    codice:
    E' possibile inserire uno stacco tra un blocco ed un altro (ovvero tra un record ed il successivo)?
    Ho risolto inserendo nel DataReport - sotto il set di controlli - una Line trasparente con altezza 100.
    In tal modo la linea non si vede e pertanto lascia uno spazio vuoto tra un blocco di testo e l'altro. Il tutto risulta più leggebile ed ordinato.
    LM

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.