Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [VB6] Report designer 6.0 - modifiche run-time

    Ciao!

    Utilizzando Visual Basic 6 (SP6) e Il Data Report Designer 6.0 sto cercando di modificare il formato del testo run-time di un campo associato, per la precisione, vorrei che, in un campo date, mi venisse fatto in grassetto i giorni sabato e domenica.
    Ho provato così ma il report mi mostra le date dei sabati e delle domeniche in testo normale, come se nulla fosse.

    Vi posto quello che ho fatto finora:

    codice:
    Option Explicit
    
    Dim WithEvents myDescription As StdDataFormat
    
    Private Sub DataReport_Initialize()
    
        Set myDescription = New StdDataFormat
        Set Me.Sections(3).Controls("txtData").DataFormat = myDescription
    
    End Sub
    
    Private Sub myDescription_Format(ByVal DataValue As StdFormat.StdDataValue)
        If Weekday(DataValue) = 1 Or Weekday(DataValue) = 7 Then
            Me.Sections(3).Controls("txtData").Font.Bold = True
        End If
        DataValue = Format(DataValue, "d ddd")
    End Sub
    Qualcuno può aiutarmi?

    Ciao!
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Il codice per il grasetto è il seguente. In apparenza sembra uguale al tuo, se così fosse controlla le condizioni If:

    With DRDiff.Sections("Section3")
    .Controls("Txt5").Font.Bold = True
    End With

    PS. anzi mi sembra che ci sia un'imprecisione in ("Section3")
    LM

  3. #3
    Innanzitutto grazie per la risposta.

    Però non credo di aver ben capito la modifica che mi hai suggerito.
    Comunque ho messo giù il codice in questo modo ma ancora non c'è grassetto nel report.

    codice:
    Option Explicit
    
    Dim WithEvents myDescription As StdDataFormat
    
    Private Sub DataReport_Initialize()
    
        Set myDescription = New StdDataFormat
        Set Me.Sections(3).Controls("txtData").DataFormat = myDescription
    
    End Sub
    
    Private Sub myDescription_Format(ByVal DataValue As StdFormat.StdDataValue)
        If Weekday(DataValue) = 1 Or Weekday(DataValue) = 7 Then
            With rptCartellino.Sections("Section1")
                .Controls("txtData").Font.Bold = True
            End With
        End If
        DataValue = Format(DataValue, "d ddd")
    End Sub
    Suggerimenti?
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  4. #4
    Inoltre ho verificato e nella condizione IF ci entra quando è giusto che lo faccia ma il report continua a non volermi visualizzare il grassetto.

    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Mi sembra che questa parte del codice ora sia giusta:
    If Weekday(DataValue) = 1 Or Weekday(DataValue) = 7 Then
    With rptCartellino.Sections("Section1")
    .Controls("txtData").Font.Bold = True
    End With
    End If

    Mentre questa parte non mi convince:
    Set Me.Sections(3).Controls("txtData").DataFormat = myDescription

    Prova a modificarla così:

    Set rptCartellino.Sections("Section3").Controls("txtDa ta").DataFormat = myDescription

    LM

  6. #6
    Rieccomi.
    Niente da fare. Il risultato è ancora lo stesso. Niente grassetto.

    Questo è il codice:
    codice:
    Option Explicit
    
    Dim WithEvents myDescription As StdDataFormat
    
    Private Sub DataReport_Initialize()
    
        Set myDescription = New StdDataFormat
        Set rptCartellino.Sections("Section1").Controls("txtData").DataFormat = myDescription
    
    End Sub
    
    Private Sub myDescription_Format(ByVal DataValue As StdFormat.StdDataValue)
        If Weekday(DataValue) = 1 Or Weekday(DataValue) = 7 Then
            With rptCartellino.Sections("Section1")
                .Controls("txtData").Font.Bold = True
            End With
        End If
        DataValue = Format(DataValue, "d ddd")
    End Sub
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ma hai controllato le Section che contengono il controllo Rtp? Vedo che continui a cambiarle.
    Comunque il codice, a se stante, che inizialmente ho postato funziona, dato che l'ho provato.

    With DRDiff.Sections("Section3")
    .Controls("Txt5").Font.Bold = True
    End With
    LM

  8. #8
    Section e oggetti all'interno della sezioni sono giusti, nel senso che la sezione numero 1 (section(1)) ha nome "section3". E' una cosa strana ma è così, ma non chiedermi il motivo di questa cosa perchè è una cosa molto lunga...
    Comunque ti dico che è giusto perchè non mi viene riportato nessun errore, cosa che invece viene fatta se cambio la sezione di riferimento dell'oggetto. Quindi txtData appartiene alla Section3.

    Una domanda: quando tu mi scrivi
    codice:
    With DRDiff.Sections("Section3") 
    .Controls("Txt5").Font.Bold = True 
    End With
    corrisponde al mio codice
    codice:
    With rptCartellino.Sections("Section1")
    .Controls("txtData").Font.Bold = True
    End With
    Dove rptCartellino è il report dentro al quale sto facendo il codice, giusto?

    Ti chiedo una cortesia.
    Mi posti il codice che hai usato tu e che ti funziona per favore?
    Così provo a fare un confronto più dettagliato e vedo se riesco a venirne fuori...

    Grazie!
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  9. #9
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Gianluca, posto la routine quasi per intero, salvo la connessione al DB, spero che ti sia utile perchè altrimenti non saprei cosa indicarti:
    codice:
    ' Controlla che il DB contenga i dati da visualizzare:
      If RSTpr4.EOF = False And RSTpr4.BOF = False Then
      ' Assegna il riferimento all'oggetto:
         Set DRDiff.DataSource = RSTpr4
       ' Inserisce i dati nel DataReport:
         With DRDiff.Sections("Section1")
             .Controls("Txt1").DataField = "Reg"
             .Controls("Txt2").DataField = "Dep"
             .Controls("Txt3").DataField = "Pro"
             .Controls("Txt4").DataField = "Res"
             .Controls("Txt5").DataField = "Val"
             .Controls("Txt5").Font.Bold = True
         End With
    '... ... ... ...
    Ti confermo che così ottengo il grassetto nel controllo Txt5
    LM

  10. #10
    Mmhh..forse ho capito perchè a te funziona e a me no.
    Credo che non ci siamo capiti.

    Cerco di spiegarmi meglio. Io nel report ho una TextBox che è associata ad un campo data che prelevo dal DB.
    Io non voglio avere sempre questo campo in grassetto, ma voglio solo che i giorni sabato e domenica siano in grassetto. Per quello che infatti io a monte metto la condizione weekday che mi preleva il numero del giorno della settimana.
    Quindi se tale numero è 7 (ovvero domenica), e solo in quel caso, la textbox deve essere fatta in grassetto.

    Quello che mi hai messo tu funziona, però mi applica il grassetto alla textbox sempre indipendentemente dal giorno.
    Io ho bisogno che qualcosa in runtime mi vada a verificare com'è la data e se è una domenica (e fin qua nella condizione IF la routine ci entra) però è l'assegnazione del Bold che non mi viene applicata,
    ovvero questa istruzione
    codice:
    If Weekday(DataValue) = 1 Or Weekday(DataValue) = 7 Then
        With rptCartellino.Sections("Section1")
            .Controls("txtData").Font.Bold = True
        End With
    End If
    non fa quello che dovrebbe fare in runtime.
    Praticamente, facendo il debug, l'if mi viene letto per 31 volte (ovvero quanti sono i giorni del mese che sto andando a stampare).
    Dentro alla condizione mi entra solo se sto in quel momento analizzando un sabato o una domenica ma è l'istruzione
    codice:
    With rptCartellino.Sections("Section1")
        .Controls("txtData").Font.Bold = True
    End With
    che non mi applica il grassetto.

    Temo che dovrò abbandonare il mio intento e accontentarmi del non grassetto....
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

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.