Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    19

    Problema inserimento riga in un Datagrid

    Salve ho un problema, che non mi era mai capitato fino adesso:

    Ho un Datagrid che contiene vari dati presi da una tabella MySQL
    La aggiorno, cancello righe e modifico righe senza nessun problema, ma appena vado ad inserire nuove righe, me le aggiunge in maniera anomala.
    Vorrei aggiungere una riga sempre alla fine del datagrid, ma ogni due o tre inserimenti, la nuova riga viene creata in testa al datagrid e non in fondo.
    Il seguente codice viene eseguito ad ogni click su un CommandButton.
    Questo è il codice:

    codice:
     'Creo la stringa di connessione
         Stringa = .......................
        
      'Imposto le variabili cs e rs come istanze degli oggetti Connection e Recordset'
        Set cs = New ADODB.Connection
        Set rs = New ADODB.Recordset
      
        cs.ConnectionTimeout = 20
        
        'Apro la connessione
        cs.Open Stringa
     
        rs.Open "SELECT * FROM "nome_tabella"", cs, adOpenKeyset, adLockOptimistic
        
        'Aggiungo un nuovo record ed aggiorno la tabella
        If (rs.Supports(adAddNew) And Me.LstControllo.List(0) = 0) Then
                rs.AddNew
                    rs.Fields("Tipo_analisi") = Me.TxtAnalisi.Text
                    rs.Fields("Nome_Procedura") = Me.TxtProcedura.Text
                    rs.Fields("Data_Ini") = DateFinalIni
                    rs.Fields("Data_Fin") = DateFinalFin
                    rs.Fields("Flag1") = Click1
                    rs.Fields("Flag2") = Click2
                rs.Update
                Set frmPrincipale.DataGrid1.DataSource = rs
                frmPrincipale.DataGrid1.Refresh
                MsgBox "Inserimento effettuato con successo.", vbInformation, "OPERAZIONE EFFETTUATA"
        Else
            rs.CancelUpdate
        End If
        LstControllo.Clear
    Dove sbaglio???
    Esiste un modo per indicargli qual'è l'ultima riga del datagrid e quindi aggiungerne una sempre dopo questa???

    Grazie della disponibilità, spero di essere stato chiaro.

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Questa frase
    Vorrei aggiungere una riga sempre alla fine del datagrid, ma ogni due o tre inserimenti, la nuova riga viene creata in testa al datagrid e non in fondo.
    risulta molto strana perchè non ha proprio senso che il problema si verifichi 'ogni 2 o 3 inserimenti'. O si verifica sempre, o si verifica in determinate condizioni.

    Premesso che se:
    a) il record viene aperto con una query senza ORDER BY
    b) non viene usato il metodo Sort del recordset

    è pacifico, che il recordset mostra i record nell'ordine naturale.
    Questo non è una opinione, ma un fatto inconfutabile.

    Ciò significa che c'è qualcos'altro che modifica l'ordine dei record.
    Magari qualcosa che non ci hai detto, o di cui non ti sei accorto. Verifica bene.
    A meno che tu non abbia qualche folletto informatico nel computer.

    A parte la battuta,
    un paio di suggerimenti:
    1)
    da quello che vedo apri la connessione con il cursore predefinito (lato server).
    Io uso sempre un cursore lato client, è sempre preferibile (a parte quando si usano le transazioni per le quali e d'obbligo il cursore lato server).

    2)
    Aggiungi l'opzione adCmdText nel rs.Open.... così aiuti ADO.

    3)
    Ovviamente do per scontato che tu abbia
    a) installato il SP6
    b) referenziato ADO 2.8
    ...


  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Come espressamente indicato nel regolamento interno ci sono delle semplici regole da seguire, tra le quali:

    1) Il linguaggio (e la versione) va obbligatoriamente indicato nel titolo
    2) Il codice va postato indentato usando gli appositi tag CODE


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    19
    mi spiace per la dimenticanza.
    Il linguaggio è VB6.
    Per fortuna sono riuscito a risolvere il problema, una volta effettuato il 1° inserimento, la posizione del recordset veniva alterata da una semplice funzione implementata da me.

    grazie per la disponibilità a tutti.

  5. #5

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.