Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    27

    [VB 2010 ] Refresh Data

    Salve sono alle prime armi con Visual Basic 2010,
    e ho il seguente problema
    ho tre textbox controllati da un bindingnavigator , il movimento suo e giu per il database va bene, anche l'inserimento funziona!, ma purtroppoproprio qui c'è il problema perchè una volta inserito per far vedere il nuovo/i elementi inseriti devo riavviare!! e questo non mi va bene
    Come posso fare ?
    Posto il codice di tutto il programma da me scritto fin mo:

    codice:
    Imports System.Data.OleDb
    
    Public Class Form1
        Dim Conn As OleDb.OleDbConnection
        Dim stringaconn As String
        Dim Cmd As New OleDb.OleDbCommand
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: questa riga di codice carica i dati nella tabella 'GestioneCampioDataSet.Socio'. È possibile spostarla o rimuoverla se necessario.
            Me.SocioTableAdapter.Fill(Me.GestioneCampioDataSet.Socio)
            
            stringaconn = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & "C:\Documents and Settings\Simone\Desktop\Visual Basic-Studio\Visual Studio\Gestione Dati\Gestione Dati\gestioneCampio.mdb "
            Conn = New OleDb.OleDbConnection(stringaconn)
            Conn.Open()
        End Sub
    
        Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
            TxtCognome.Text = ""
            TxtNome.Text = ""
            TxtTelefono.Text = ""
            TxtNome.Focus()
    
        End Sub
        Private Sub Refresh()
            If Not Conn.State = ConnectionState.Open Then
                'Apre connessione
                Conn.Open()
            End If
    
            'Chiude connessione
            Conn.Close()
            ' Select Socio.* From Socio order by Socio.Nome"
        End Sub
    
    
        Private Sub ToolStripButton5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton5.Click
            If Not Conn.State = ConnectionState.Open Then Conn.Open()
    
            Dim stringasql As String '= "INSERT into Socio(Nome,Cognome,Telefono) values ('" & Me.TxtNome.Text & "'" & Me.TxtCognome.Text & "'" & Me.TxtTelefono.Text & ")"
            stringasql = "Insert into Socio(Nome,Cognome,Telefono) values('"
            stringasql = stringasql & Me.TxtNome.Text & "'" & ","
            stringasql = stringasql & "'" & Me.TxtCognome.Text & "'" & ","
            stringasql = stringasql & "'" & Me.TxtTelefono.Text & "'" & ")"
            MsgBox(stringasql)
    
            Cmd = New OleDbCommand(stringasql, Conn)
            Cmd.ExecuteNonQuery()
            Refresh()
            Conn.Close()
    
    
    
    
    
        End Sub
    
    
    End Class
    Spero in un vostro aiuto sarebbe molto importante

  2. #2
    per far vedere il nuovo/i elementi inseriti devo riavviare!! e questo non mi va bene
    Prova a ragionare ..... riavviando l'applicazione cosa succede?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    27
    Certamente , quando riavvio vuol dire che ho chiuso le comunicazioni con il database e quindi riaprendola dovrebbe riportarmi alla condizione inziale ma gia aggiornato ; però anche se faccio

    Conn.Close()
    Conn.Opern()
    poi lo stesso non si è aggiornato vedi lo scritto qui

    codice:
     Private Sub Refresh()
            If Not Conn.State = ConnectionState.Open Then
                'Apre connessione
                Conn.Open()
            End If
    
            'Chiude connessione
            Conn.Close()
             ' Select Socio.* From Socio order by Socio.Nome"
        End Sub
    Nonf ar caso a quel pezzo di sql non so perchè stia li visto che non è nemmeno giusto

    Ps dopo la sub refresh faccio Conn.Open() non Conn.Close()

  4. #4
    Aprire e chiudere la connessione, non comporta nessun aggiornamento automatico.
    In realtà, volevo farti notare che nell'evento Load del Form esiste un'istruzione
    codice:
     Me.SocioTableAdapter.Fill(Me.GestioneCampioDataSet.Socio)
    SocioTableAdapter è l'oggetto che si occupa di "sincronizzare" Db e Dataset(a seconda del comando).
    Nel caso specifico, il comando Fill, recupera i dati dalla tabella del Db(tabella Socio) per popolare il Dataset(tabella Socio).
    Per quanto riguarda la gestione della connessione .... se ne occupa lui stesso.
    Non serve alcuna istruzione Open e Close.

    Facci sapere...
    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    27
    Grazie non avevo capito che mi poteva essere d'aiuto e servisse proprio quell'istruzione ma nonostante ciò non riesco a farla funzionare
    Sono io che nn sono capace , ma inserisco quella stringa in questo modo,nel pulsante che da l'ok per inserire

    codice:
     Private Sub ToolStripButton5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton5.Click
            If Not Conn.State = ConnectionState.Open Then Conn.Open()
    
            Dim stringasql As String '= "INSERT into Socio(Nome,Cognome,Telefono) values ('" & Me.TxtNome.Text & "'" & Me.TxtCognome.Text & "'" & Me.TxtTelefono.Text & ")"
            stringasql = "Insert into Socio(Nome,Cognome,Telefono) values('"
            stringasql = stringasql & Me.TxtNome.Text & "'" & ","
            stringasql = stringasql & "'" & Me.TxtCognome.Text & "'" & ","
            stringasql = stringasql & "'" & Me.TxtTelefono.Text & "'" & ")"
            MsgBox(stringasql)
    
            Cmd = New OleDbCommand(stringasql, Conn)
            Cmd.ExecuteNonQuery()
    
            Me.SocioTableAdapter.Fill(Me.GestioneCampioDataSet.Socio)
            Conn.Close()
    Però non mi si aggiorna prima gli elmenti erano 40, inserito diventano 40 e riavviato chiudendo e riaprendo sono 41
    Forse sbaglio dove inserirla?

  6. #6
    Prova a modificare questo codice
    codice:
            Cmd.ExecuteNonQuery()
            Me.SocioTableAdapter.Fill(Me.GestioneCampioDataSet.Socio)
            Conn.Close()
    con questo
    codice:
            Cmd.ExecuteNonQuery()
            Conn.Close()
            Me.SocioTableAdapter.Fill(Me.GestioneCampioDataSet.Socio)
    ed a fare un ResetBindings del BindingNavigator.


    Facci sapere...
    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    27
    Ciao grazie ancora una volta del tuo aiuto purtroppo non riesco a capire ancora il problema ho scritto come mi hai detto tu poi
    ho provato a scrivere al di sotto BindingNavigator1.ResetBindings()
    ma purtroppo non me la dato non esiste per il mio visual studio quindi ho cercato un pò e il massimo che ho trovato è questo e lo collocato in questo modo

    codice:
    Cmd.ExecuteNonQuery()
    
              Conn.Close()
            Me.SocioTableAdapter.Fill(Me.GestioneCampioDataSet.Socio)
    
            BindingNavigator1.BindingSource.ResetBindings(False)
    però il problema non si risolve perchè inseririsco , e il massimo che mi fa è che mi visualizza i dati del primo record ma il nuovo non viene visualizzato fino a riavvio programma

  8. #8
    Ciao
    Mi è vunuto un dubbio ....
    Siccome il tuo codice è un pò confusionario .... nel senso che, in realtà, usi 2 stringhe di connessione per la gestione dei dati nel db .... vedo che nel codice che hai postato
    codice:
    stringaconn = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & "C:\Documents and Settings\Simone\Desktop\Visual Basic-Studio\Visual Studio\Gestione Dati\Gestione Dati\gestioneCampio.mdb "
    sembra che tu non faccia riferimento allo stesso db .... ma questo lo puoi sapere solo tu.
    In conclusione ... bisogna che ti decidi .... O usi il Wizard di VisualStudio per creare gli oggetti necessari alla gestione dei dati nel db .... o ti fai tutto a manina.
    Usare due tipi di automatismi insieme crea solo confusione.
    Ad ogni modo, rimango a disposizione per eventuali chiarimenti.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    27
    Allora oggi farò cosi :
    ricomincio tutto da capo e faccio tutto a manina( dicono che sia meglio mi confermi? per una più efficiente gestione di query e tutto il resto) tanto se non sbaglio devo solo fare la connessione e basta giusto ? perchè appunto come avrai capito io ho usato prima il wizard e poi ho fatto la connessione con stringa ora per avere il medesimo risultato che ho ottenuto con il wizard ma solo a mano ,devo solo fare la connessione con stringa nella form load o devo anche aggiungere qualche cosa nel binding navigator o aggiungere altri oggetti. come avrai capito ho un pò tanta confusione

  10. #10
    ..... dicono che sia meglio mi confermi?
    Assolutamente si.

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.