+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

[MshFlexgrid]Proprietà Datasource, prima vuoto poi pieno, selezione sballata

  1. #1
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    Post
    1,164
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno a tutti, era tanto che non ponevo più una domanda avevo quasi nostalgia.

    Ok, innanzitutto scusate il titolo, ma in 50 caratteri mi era impossibile spiegarmi, ora io sto realizzando un ocx che subclassa la mshflexgrid e che permette di fare un mare di cose che mi sono comodissime, ma ho incontrato un problema:

    Dal momento che i dati con cui popolare la griglia arrivano da un database ho scelto di popolare questa griglia tramite il metodo DataSource, tutto funziona a meravaglia ma c'è un problema che si verifica in questo caso:

    Assegno la datasource di un recordset vuoto, in teoria si dovrebbero vedere solo i nomi dei campi come intestazioni di colonna e infatti è così, poi cambio Datasource (nella realtà succede quando cambio ad esempio i filtri temporali delle fatture) e uso un recordset non vuoto, la griglia si riempie, ma non riesco più a selezionare le righe in maniera corretta, in genere se seleziono la quarta riga si seleziona la terza e così via.

    Problema irrisolvibile? No, è sufficente premere una volta sulla freccetta di scroll e tutto torna alla normalità.

    DANNAZZIONE, non capisco come risolvere questo problema, ne soprattutto perchè si verifica, mi sa quasi di bug

    Comunque ho preparato un esempio ridotto all'osso di quello che sto dicendo, per spiegarmi meglio, è una settimana quasi che ci batto la testa......

    Grazie mille in anticipo a chiunque tenterà di aiutarmi:
    File allegati File allegati
    ℹ️ Leggi di più su spikexx84 ...

  2. #2
    Post
    1,900
    Blogs
    21
    Like Inviati  
    14
    Like Ricevuti  
    13
    Ciao spykexx84,

    mi pare che la mshflexgrid "resti incaprettata" a causa della FixedRows=1 quando è vuota (non chiedermi perchè);

    prova a modificare cosi:
    Private Sub CmdVuotoDaForm_Click()
    
        Dim db_aggiorna As ADODB.Connection
        Dim rs_aggiorna As ADODB.Recordset
        
        Set db_aggiorna = New ADODB.Connection
        Set rs_aggiorna = New ADODB.Recordset
        
        db_aggiorna.CursorLocation = adUseClient
        db_aggiorna.Open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & App.Path & "\db1.mdb"
        
        
        rs_aggiorna.Open "Select Dato From Tabella Where Dato = ''",   db_aggiorna
    
    'MOD
    With obj_mshflexgrid
        Set .DataSource = rs_aggiorna
        .Rows = 1
        .FixedRows = 0
    End With
        
        rs_aggiorna.Close
        db_aggiorna.Close
        
        Set db_aggiorna = Nothing
        Set rs_aggiorna = Nothing
    
    End Sub
    
    
    Private Sub CmdPienoDaForm_Click()
    
        Dim db_aggiorna As ADODB.Connection
        Dim rs_aggiorna As ADODB.Recordset
        
        Set db_aggiorna = New ADODB.Connection
        Set rs_aggiorna = New ADODB.Recordset
        
        db_aggiorna.CursorLocation = adUseClient
        db_aggiorna.Open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & App.Path & "\db1.mdb"
        
        rs_aggiorna.Open "Select Dato From Tabella", db_aggiorna
    
    With obj_mshflexgrid
        .Rows = 2
        .FixedRows = 1
        Set .DataSource = rs_aggiorna
    End With
    
        rs_aggiorna.Close
        db_aggiorna.Close
        
        Set db_aggiorna = Nothing
        Set rs_aggiorna = Nothing
    
    End Sub
    
    EDIT
    anche senza questa modifica sembra funzionare impostando a designtime Rows=1 e FixedRows=0
    Ultima modifica di sspintux; 11-02-2010 17:35 
    ℹ️ Leggi di più su sspintux ...

  3. #3
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    Post
    1,164
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ora non faccio a tempo a provare, domani mattina provo e ti dico, intanto grazie mille per la risposta.
    ℹ️ Leggi di più su spikexx84 ...

  4. #4
    L'avatar di TheTruster
    TheTruster ora è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Post
    7,244
    Blogs
    3
    Like Inviati  
    19
    Like Ricevuti  
    13
    Confermo che si tratta di un bug.
    Mi sono scontrato anch'io con questo problema, risolvendolo controllando che il nuovo recordset fosse effettivamente non vuoto, prima di assegnarlo nuovamente alla DataSource.

    Sinceramente non ho provato con il sistema di sspintux, ma ritengo l'abbia provato e sia sicuramente efficace

    TheTruster
    ℹ️ Leggi di più su TheTruster ...

  5. #5
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    Post
    1,164
    Like Inviati  
    0
    Like Ricevuti  
    0
    Perfetto, KILL BILL, KILL BILL, KILL BILL, KILL BILL, KILL BILL, KILL BILL, maledetta Microsoft, il tuo metodo funziona alla perfezione spintux, anche se mi fa selezionare la prima riga di intestazione come fosse una riga normale, troverò il modo di aggirare il problema, l'importante è aver capito che c'era un bug e aver trovato il modo di aggirarlo, grazie ancora.

    @The Truster
    Grazie anche a te per la conferma.
    ℹ️ Leggi di più su spikexx84 ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. CheckedListBox - Proprietà DataSource
    Da Brontolo nel forum Visual Basic .Net
    Risposte: 0
    Ultimo Post: 23-11-2020, 12:16
  2. Selezione su MSHFlexGrid
    Da dade_n nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 12-01-2010, 19:46
  3. Proprietà Datasource
    Da Hollywood nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 20-05-2008, 13:48
  4. MshflexGrid - proprietà visible
    Da pietrorolli nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 01-08-2006, 14:44
  5. [Mshflexgrid] proprietà FixedRows
    Da francof nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 30-06-2006, 12:45