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

    [VB6 + CrystalReport] Assegnare ad una textbox il campo di una query

    Il mio report si costruisce in maniera dinamica. L'utente specifica su una form quali campi vuole vedere spuntando delle apposite chekbox e io costruisco la select in base a queste scelte.
    Una volta eseguita la select assegnandola ad un recordset di ADO, associo il tutto al report che si apre visualizzando i campi specificati.
    Il problema è che sul report ho inserito dei controlli non associati ad alcun campo, cosa che dovrei fare da codice, ma non ci riesco.
    Vi posto un po' di codice, così mi posso spiegare meglio:
    codice:
    Dim rpReport As New crReport
    Public pbStrFiltro As String
    'variabili che setto dal form delle scelte dell'utente e
    che mi servono per sapere quali campi dovrò visualizzare 
    nel report
    Public vediTitolo As Integer, vediTitoloPostale As Integer
    Public vediQualifica As Integer, vediSettore As Integer
    Public vediProvenienza As Integer
    Public vediAreaEnte As Integer, vediIndirizzi As Integer
    Public vediRecapiti As Integer, vediEventi As Integer
    Public vediFirmatari As Integer, vediAcquisitore As Integer
    
    Private Sub Form_Load()
    
        Screen.MousePointer = vbHourglass
    
        Dim rsRs As New ADODB.Recordset
        Dim strSql As String
        'eseguo la storedprocedure origine dei dati 
        passandole il filtro creato nel form delle opzioni            
        strSql = "Exec sp_ElencoNominativiStampa " & pbStrFiltro
                    
        rsRs.Open strSql, miaConn, 1, 3
        rpReport.Database.SetDataSource rsRs
                    
        PosizionaControlli
                    
        rsRs.Close
        Set rsRs = Nothing
                            
        CRViewer91.ReportSource = rpReport
        CRViewer91.ViewReport
            
        Screen.MousePointer = vbDefault
    
    End Sub
    
    Sub PosizionaControlli()
            
         Dim lngLeft As Long
    
         If vediTitolo = 0 Then
               rpReport.txtTitolo.Suppress = True
               rpReport.Titolo.Suppress = True
            Else
               rpReport.txtTitolo.Left = lngLeft
               rpReport.Titolo.Left = lngLeft
               lngLeft = lngLeft + rpReport.Titolo.Width
         End If
                
         If vediTitoloPostale = 0 Then
                rpReport.txtTitoloPostale.Suppress = True
                rpReport.TitoloPostale.Suppress = True
            Else
                rpReport.txtTitoloPostale.Left = lngLeft
                rpReport.TitoloPostale.Left = lngLeft
                lngLeft = lngLeft + rpReport.TitoloPostale.Width
         End If
                
         rpReport.Nominativo.Left = lngLeft
         rpReport.txtNominativo.Left = lngLeft
         lngLeft = lngLeft + rpReport.Nominativo.Width
                
         If vediAcquisitore = 0 Then
                rpReport.txtAcquisitore.Suppress = True
                rpReport.Acquisitore.Suppress = True
            Else
                rpReport.txtAcquisitore.Left = lngLeft
                rpReport.Acquisitore.Left = lngLeft
                lngLeft = lngLeft + rpReport.Acquisitore.Width
         End If
                
         If vediSettore = 0 Then
                rpReport.txtSettore.Suppress = True
                rpReport.Settore.Suppress = True
            Else
                rpReport.txtSettore.Left = lngLeft
                rpReport.Settore.Left = lngLeft
                lngLeft = lngLeft + rpReport.Settore.Width
         End If
                
         If vediQualifica = 0 Then
                rpReport.txtQualifica.Suppress = True
                rpReport.Qualifica.Suppress = True
            Else
                rpReport.txtQualifica.Left = lngLeft
                rpReport.Qualifica.Left = lngLeft
                lngLeft = lngLeft + rpReport.Qualifica.Width
         End If
                
         If vediProvenienza = 0 Then
                 rpReport.txtProvenienza.Suppress = True
                 rpReport.Provenienza.Suppress = True
            Else
                 rpReport.txtProvenienza.Left = lngLeft
                 rpReport.Provenienza.Left = lngLeft
                 lngLeft = lngLeft + rpReport.Provenienza.Width
         End If
                
         If vediAreaEnte = 0 Then
                 rpReport.txtAreaEnte.Suppress = True
                 rpReport.AreaEnte.Suppress = True
            Else
                 rpReport.txtAreaEnte.Left = lngLeft
                 rpReport.AreaEnte.Left = lngLeft
                 lngLeft = lngLeft + rpReport.AreaEnte.Width
         End If
    
    'controllo se girare il report in base a lngLeft
         If lngLeft > 21 Then 
                 rpReport.PaperOrientation = crLandscape
            Else
                 rpReport.PaperOrientation = crPortrait
         End If
    End Sub
    nell sub PosizionaControlli rendo visibili solo i dati scelti dall'utente.

    Tutti i campi sono facoltativi, tranne il Nominativo che è obbligatorio e quindi non viene scelto dall'utente.
    Il problema è: come faccio a dire ai campi del report(Titolo, TitoloPostale, Qualifica, Provenienza,ecc...) a quale campo del recordset derivante dalla storedprocedure devono legarsi?

    spero di essere stata chiara

    grazie a tutti

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    tu adesso riesci a visualizzare i campi che ti servono ma non riesci ad associare il valore del relativo campo del recordset?

  3. #3
    Originariamente inviato da darkblOOd
    tu adesso riesci a visualizzare i campi che ti servono ma non riesci ad associare il valore del relativo campo del recordset?
    si esatto, infatti se provo a colorarle di rosso le vedo. :uff:

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ok, se devi settare la text del campo a run-time come fai?

    (ti faccio ste domande perchè non mi ricordo il CR da vb) :tongue:

  5. #5
    Originariamente inviato da darkblOOd
    ok, se devi settare la text del campo a run-time come fai?

    (ti faccio ste domande perchè non mi ricordo il CR da vb) :tongue:
    il problema è che non lo so... credo che bisogna usare le formule, ma non ho idea di come funzionino
    se ci riuscissi, mi basterebbe settare la text in progettazione e nasconderla se non mi serve, ma non ci riesco

    (tranquillo )

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    119
    numeronota è la formulas creata da CR.

    Inserisci -> Formula


    Questo è il codice da inserire in Vb:

    Report1.Formulas(0) = "numeronota= " & Chr$(34) & numeronota$ & Chr$(34)


    Bye

  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    io ho risolto (in vb.net) così:
    codice:
    Dim crTable As Table
    Dim fd(6) As FormulaFieldDefinition
    crTable = rpt.Database.Tables("Tab")
    crTable.SetDataSource(myDS.Tab)
    fd(0) = rpt.DataDefinition.FormulaFields.Item("codice")
    fd(1) = rpt.DataDefinition.FormulaFields.Item("descrizione")
    fd(2) = rpt.DataDefinition.FormulaFields.Item("quantità")
    fd(3) = rpt.DataDefinition.FormulaFields.Item("prezzou")
    fd(4) = rpt.DataDefinition.FormulaFields.Item("prezzot")
    fd(5) = rpt.DataDefinition.FormulaFields.Item("tot")
    fd(0).Text = "{Tab.ca}"
    fd(1).Text = "{Tab.da}"
    fd(2).Text = "{Tab.qt}"
    fd(3).Text = "{Tab.pr}"
    fd(4).Text = "{Tab.pr} * {Tab.qt}"
    fd(5).Text = "Sum ({@prezzot})"
    però mi sono dovuto creare una struttura Tabella vuota (senza campi) e poi ho associato a tale tabella la struttura del mio "record" (myDS.Tab)

    i nomi:
    codice
    descrizione
    ...
    sono quelli che ho dato ai campi sul report

    mentre:
    Tab.ca
    Tab.ds
    ....

    sono i nomi dei campi della tabella Tab

    non so se può esserti utile, a casa ho del codice vb6 che leggeva i valori di un record e li stampava su un report, se posso magari stasera o domani te lo posto, ma qui in ufficio non ho niente

  8. #8
    Originariamente inviato da sir
    numeronota è la formulas creata da CR.

    Inserisci -> Formula


    Questo è il codice da inserire in Vb:

    Report1.Formulas(0) = "numeronota= " & Chr$(34) & numeronota$ & Chr$(34)


    Bye
    scusami sir, io sono completamente ignorante di CR, e quello che mi hai postato mi risulta di difficile comprensione...
    ...potresti spiegarmi meglio per favore?

    grazie mille

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  9. #9
    Originariamente inviato da darkblOOd
    ...
    non so se può esserti utile, a casa ho del codice vb6 che leggeva i valori di un record e li stampava su un report, se posso magari stasera o domani te lo posto, ma qui in ufficio non ho niente
    si chiaro. io non posso creare tabelle d'appoggio... purtroppo sennò era semplice...
    se ti ricordi di postarmelo mi faresti un gran favore dark... grazie bonazzo

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    119
    Da Cristal Report, nella barra del menu, seleziona Inserisci -> Campo Formulas.

    Metti il nome della formulas, clicchi su Ok e lui automaticamente ti apre l'editor delle formule.
    All'interno di quell'editor non digitare nulla, ma clicca solamente su accetta, lui ti crea una label da inserire sul form del report.
    In questa maniera hai creato una campo formula (es.@pippo) la chiocciolina la inserisce lui automaticamente.

    Fatto questo, devi inserire solamente il codice in Visual Basic.

    Nomeoggetto.formulas(index)= "nome_campo_formula=" & Chr$(34) & valore & Chr$(34).

    N.B. nome_campo_formula, non deve contenere la chiocciolina.

    Bye

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.