Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535

    Visual Basic6: Oggetto MsFlexGrid

    Ciao a tutti, ho dei problemi con l'oggetto MsFlexGrid.

    In questa griglia vengono visualizzati dei record contenente dati,
    le righe totali della griglia di norma sono due.
    Una riga contiene le etichette delle varie colonne, l'altra i dati effettivi.
    Può capitare però che ci siano piu righe.

    Ho dovuto aggiungere due nuovi campi, per cui due nuove colonne alla struttura della griglia.

    Eseguo poi un test su un dato che deve contenere nella griglia un solo record (a parte ovviamente le etichette)

    Invece me ne visualizza due record quasi identici:

    Al primo record mancano i dati (guarda caso) delle ultime due colonne che ho aggiunto,
    al secondo record anche i dati delle ultime colonne aggiunte sono presenti.

    Ho pensato che forse dovevo controllolare l'incremento delle colonne, ma il codice mi sembra corretto.

    Nelle proprietà dell'oggetto griglia ovviamente ho modificato il n. di colonne riportando l'esatto n.

    Ve lo riporto:


    codice:
    Sub VisualizzaListaContratti47(ByVal CodiceCliente As String)
    
    Dim strListaC As String
    Dim NumCliente As String
    Dim NumPolizza, Lib9, Lib10, Lib11, Lib12, Lib13, Lib14, Lib15, Lib37, Col29, Col30 As String
    Dim SqlVisCoCli As String
    
    On Error GoTo ErrExec
    
    MSFlexGridContratti.Clear
    
    'Inserisco il titolo della colonna
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 0
    MSFlexGridContratti.ColWidth(0) = 1200
    MSFlexGridContratti.Text = "N. Polizza"
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 1
    MSFlexGridContratti.ColWidth(1) = 1600
    MSFlexGridContratti.Text = "Tipologia Polizza"
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 2
    MSFlexGridContratti.ColWidth(2) = 1100
    MSFlexGridContratti.Text = "Frazionamento"
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 3
    MSFlexGridContratti.ColWidth(3) = 2200
    MSFlexGridContratti.Text = "Premio Annuo"
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 4
    MSFlexGridContratti.ColWidth(4) = 1000
    MSFlexGridContratti.Text = "Rate non pagate"
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 5
    MSFlexGridContratti.ColWidth(5) = 1400
    MSFlexGridContratti.Text = "Importo"
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 6
    MSFlexGridContratti.ColWidth(6) = 1200
    MSFlexGridContratti.Text = "Data ult. vers. effet."
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 7
    MSFlexGridContratti.ColWidth(7) = 1200
    MSFlexGridContratti.Text = "Data Sottoscr."
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 8
    MSFlexGridContratti.ColWidth(8) = 1700
    MSFlexGridContratti.Text = "Mod. pagamento"
    
    ' Modifica Elena Aggiunta colonne 20030622
    
    MSFlexGridContratti.Row = 0
    MSFlexGridContratti.Col = 9
    MSFlexGridContratti.ColWidth(9) = 1400
    MSFlexGridContratti.Text = "Revoca da BM"
    
    NumCliente = CodiceCliente
    
    SqlVisCoCli = "Select * from Recall47 where colonna14 = '" & CodiceCliente & "'"
    Set Rs = CnRdo.OpenResultset(SqlVisCoCli)
    
    If Rs("libero14") <> vbNullString Then
        NumPolizza = Rs("libero14")
    Else
        NumPolizza = ""
    End If
    
    If Rs("libero9") <> vbNullString Then
        Lib9 = Rs("libero9")
    Else
        Lib9 = ""
    End If
    
    If Rs("libero10") <> vbNullString Then
        Lib10 = Rs("libero10")
    Else
        Lib10 = ""
    End If
    
    If Rs("libero11") <> vbNullString Then
        Lib11 = Rs("libero11")
    Else
        Lib11 = ""
    End If
    
    If Rs("libero12") <> vbNullString Then
        Lib12 = Rs("libero12")
    Else
        Lib12 = ""
    End If
    
    If Rs("libero13") <> vbNullString Then
        Lib13 = Rs("libero13")
    Else
        Lib13 = ""
    End If
    
    If Rs("libero15") <> vbNullString Then
        Lib15 = Rs("libero15")
    Else
        Lib15 = ""
    End If
    
    'Modifica elena 20030622- inserimento nuove colonne
    If Rs("colonna29") <> vbNullString Then
        Col29 = Rs("colonna29")
    Else
        Col29 = ""
    End If
    
    If Rs("libero37") <> vbNullString Then
        Lib37 = Rs("libero37")
    Else
        Lib37 = ""
    End If
    
    If Rs("colonna30") <> vbNullString Then
        Col30 = Rs("colonna30")
    Else
        Col30 = ""
    End If
    
    'Fine modifica Elena 20030622
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 0
    MSFlexGridContratti.Text = Trim(NumPolizza)
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 1
    MSFlexGridContratti.Text = Trim(Lib9)
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 2
    MSFlexGridContratti.Text = Trim(Lib15)
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 3
    MSFlexGridContratti.Text = Trim(Lib10)
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 4
    MSFlexGridContratti.Text = Trim(Lib11)
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 5
    MSFlexGridContratti.Text = Trim(Lib12)
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 6
    MSFlexGridContratti.Text = Trim(Lib13)
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 7
    MSFlexGridContratti.Text = Trim(Col29)
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 8
    MSFlexGridContratti.Text = Trim(Lib37)
    
    ' Modifica Elena - aggiunta nuova colonna - 20030622
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 9
    MSFlexGridContratti.Text = Trim(Col30)
    
    'Fine Modifica Elena 20030622
    
    Rs.MoveNext
    
    Do While Not Rs.EOF
    
    If Rs("libero14") <> vbNullString Then
        NumPolizza = Rs("libero14")
    Else
        NumPolizza = ""
    End If
    
    If Rs("libero9") <> vbNullString Then
        Lib9 = Rs("libero9")
    Else
        Lib9 = ""
    End If
    
    If Rs("libero10") <> vbNullString Then
        Lib10 = Rs("libero10")
    Else
        Lib10 = ""
    End If
    
    If Rs("libero11") <> vbNullString Then
        Lib11 = Rs("libero11")
    Else
        Lib11 = ""
    End If
    
    If Rs("libero12") <> vbNullString Then
        Lib12 = Rs("libero12")
    Else
        Lib12 = ""
    End If
    
    If Rs("libero13") <> vbNullString Then
        Lib13 = Rs("libero13")
    Else
        Lib13 = ""
    End If
    
    If Rs("libero15") <> vbNullString Then
        Lib15 = Rs("libero15")
    Else
        Lib15 = ""
    End If
    
    ' Modifica Elena Aggiunta nuove colonne 20030622
    
    If Rs("colonna29") <> vbNullString Then
        Col29 = Rs("colonna29")
    Else
        Col29 = ""
    End If
    
    If Rs("libero37") <> vbNullString Then
        Lib37 = Rs("libero37")
    Else
        Lib37 = ""
    End If
    
    If Rs("colonna30") <> vbNullString Then
        Col30 = Rs("colonna30")
    Else
        Col30 = ""
    End If
    
    ' Fine Modifica Elena 20030622
    
    
    '----------------------------------------------------------------------------
    Dim strListaCGrid As String
    
    strListaCGrid = ""
    strListaCGrid = strListaCGrid & Trim(NumPolizza)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib9)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib15)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib10)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib11)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib12)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib13)
    'Modifica Elena - Aggiunta colonne - 20030622
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Col29)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib37)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Col30)
    'Fine Modifica Elena - Aggiunta colonne - 20030622
    
    
    MSFlexGridContratti.AddItem strListaCGrid
    
    Rs.MoveNext
    Loop
    
    Exit Sub
    Trovate qualcosa di sbagliato?? o che manca??? :master:

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    a parte che prenderei il "programmatore" che ha scritto sto listato e lo sbatterei al muro: probabilmente con 5-6 righe fai la stessa cosa (apri il recordset e lo associ come datasource della grid opportunamente modificata nell'aspetto per visualizzare i campi)


    cmq: ti sei limitata ad usare la tecnica che ti sei trovata davanti. A questo punto le cose sono due:

    ti trovi due righe uguali perchè forse c'è settata la prorpietà DataSource della griglia sul record aperto (ed è quella che ti funziona, che ti visualizza anche gli ultimi 2 valori)

    mentre la riga che non ti visualizza i valori e quella aggiunga dopo (strListaCGrid) perchè magari i cmapi sono sporchi e la if ti restituisce sempre ""

    cmq sono supposizioni, prova a controllare quanto ti ho detto


  3. #3
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    a parte che prenderei il "programmatore" che ha scritto sto listato e lo sbatterei al muro: probabilmente con 5-6 righe fai la stessa cosa (apri il recordset e lo associ come datasource della grid opportunamente modificata nell'aspetto per visualizzare i campi)


    cmq: ti sei limitata ad usare la tecnica che ti sei trovata davanti. A questo punto le cose sono due:

    ti trovi due righe uguali perchè forse c'è settata la prorpietà DataSource della griglia sul record aperto (ed è quella che ti funziona, che ti visualizza anche gli ultimi 2 valori)

    mentre la riga che non ti visualizza i valori e quella aggiunga dopo (strListaCGrid) perchè magari i cmapi sono sporchi e la if ti restituisce sempre ""

    cmq sono supposizioni, prova a controllare quanto ti ho detto

    vado a controllare il codice..

  4. #4
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    L'errore è qui, credo:

    [I]
    Dim strListaCGrid As String

    strListaCGrid = ""
    strListaCGrid = strListaCGrid & Trim(NumPolizza)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib9)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib15)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib10)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib11)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib12)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib13)
    'Modifica Elena - Aggiunta colonne - 20030622
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Col29)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Lib37)
    strListaCGrid = strListaCGrid & Chr(9) & Trim(Col30)
    'Fine Modifica Elena - Aggiunta colonne - 20030622


    MSFlexGridContratti.AddItem strListaCGrid

    [I]

    Le colonne da 9 sono passate a 10.. quindi chr(9)deve diventare chr(10)

    Sono una ora testo

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212

    Re: Visual Basic6: Oggetto MsFlexGrid

    altra cosa:
    penso ci sia qalche errorino di flusso, aggiungo il codice che secondo me dovrebbe essere inserito (scritto in blu)
    codice:
    Set Rs = CnRdo.OpenResultset(SqlVisCoCli)
    Rs.MoveFirst 'per sicurezza, a volte si impallano i recordset alla prima apertura
    
    If Rs("libero14") <> vbNullString Then
        NumPolizza = Rs("libero14")
    Else
        NumPolizza = ""
    End If
    
    ...
    
    ' Modifica Elena - aggiunta nuova colonna - 20030622
    
    MSFlexGridContratti.Row = 1
    MSFlexGridContratti.Col = 9
    MSFlexGridContratti.Text = Trim(Col30)
    
    'Fine Modifica Elena 20030622
    
    Rs.MoveNext '<-- questo secondo me non c'entra niente 
                '    a meno che non metti tutto il codice 
                '    che c'è sopra in un ciclio  
                '    per ogni record presente nel recordset
    
    
    Rs.MoveFirst 'se invece il MoveNext qui sopra ti serve allora aggiungi questo movefirst prima di inziare il ciclo
    
    Do While Not Rs.EOF
    
    If Rs("libero14") <> vbNullString Then
        NumPolizza = Rs("libero14")
    Else
        NumPolizza = ""
    End If
    
    ...
    
    MSFlexGridContratti.AddItem strListaCGrid
    
    Rs.MoveNext
    Loop
    
    Exit Sub

    cmq, per come è scritto il codice, se il recordset (RS) contiene n record ti troverai n righe nella grid è strano trovarne 2 uguali a meno che non sia il contenuto della tabella dalla quale hai tirato fuori il recordset



  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da Elena78

    Le colonne da 9 sono passate a 10.. quindi chr(9)deve diventare chr(10)

    Sono una ora testo
    ehm...veramente chr() dovrebbe essere una funzione di vb che ti restituisce un char di sistema...

    per esempio chr(13) restituisce un carattere di Carriage Return e chr(10) di LineFeed


    il calssico ritorno a capo è fatto dall'insieme di Chr(13)+Chr(10)

    quindi non lo toccherei

  7. #7
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Complimenti Elena!!
    Dovrebbero darmi il mongolino d'oro sai perchè??

    Perchè sono una cazzutissima e per di +
    Vuoi sapere cosa ha combinato l'Elenina caro Gio??

    Per testare la griglia ho preso un record esistente, per non pastrugnarlo, e l'ho duplicato.
    In quello nuovo gli ho cambiato l'identificativo e ho valorizzato i campi che mi servivano, che nell'altre record non erano valorizzati.

    Ma la mia select nel ciclo ragiona per un campo codice cliente, che io ovviamente non ho modificato.

    Così lui giustamente trovava due record quasi identici, uno però non aveva le colonne valorizzate.. come il record iniziale non duplicato...

    Sono proprio una testa di

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212


    tranquilla...sono arrivato a fare di peggio!

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.