Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - VISUAL BASIOC 2010 - INSERIMENTO DATI E LORO LETTURA
Forum - C# / VB.NET - VISUAL BASIOC 2010 - INSERIMENTO DATI E LORO LETTURA

Avatar
neriton (Normal User)
Newbie


Messaggi: 12
Iscritto: 16/01/2013

Segnala al moderatore
Postato alle 10:15
Martedì, 05/03/2013
Salve a tutti voi.
Vi pongo il seguente problema. Sto creando un'applicazione che utilizza un database creato con mysql; è formata, al momento, da due form: nel primo vi è un datagrid che mostra tutti i dati inseriti, nel secondo ci sono due textbox dove inserisco i dati e un pulsante di inserimento dati. Una volta inseriti i dati vado nel form1 per vedere i dati inseriti ma nel datagrid non compare la tabella; solo uscendo dall'applicazione e rientrando si vedono i dati aggiornati. Perchè? Dove si trova il mio errore?
Vi ringrazio in anticipo per il vostro aiuto.
Neriton
Allego il codice dei due form
Imports MySql.Data.MySqlClient
Public Class Form1
    Dim connetti As MySqlConnection
    Dim comando As New MySqlCommand
    Dim adatta As New MySqlDataAdapter
    Dim archivio As New DataTable
    Dim domanda As String
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        connetti = New MySqlConnection
        connetti.ConnectionString = "server = localhost;user id= root; password = 12345; database = rubrica"
        connetti.Open()
        domanda = "select * from telefoni;"
        comando.Connection = connetti
        comando.CommandText = domanda
        adatta.SelectCommand = comando
        adatta.Fill(archivio)
        DataGridView1.DataSource = archivio
    End Sub

    Private Sub cmdVaiForm2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdVaiForm2.Click
        Me.Hide()
        Form2.Show()
    End Sub
End Class

Imports MySql.Data.MySqlClient
Public Class Form2
    Dim connetti As MySqlConnection
    Dim comando As New MySqlCommand
    Dim adatta As New MySqlDataAdapter
    Dim archivio As New DataTable
    Dim domanda As String
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.Hide()
        Form1.Show()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        connetti = New MySqlConnection
        connetti.ConnectionString = "server = localhost; user id = root;password = 12345;database = rubrica"
        connetti.Open()
        domanda = "insert into telefoni values (null,'" & TextBox1.Text & " ','" & TextBox2.Text & "');"
        comando.Connection = connetti
        comando.CommandText = domanda
        adatta.SelectCommand = comando
        adatta.Fill(archivio)
        Form1.DataGridView1.DataSource = archivio
    End Sub
End Class

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 12:41
Martedì, 05/03/2013
Pensaci bene è semplice ... cioè nel costruttore form1 esegue una query di select e ti fa visualizzare i record letti, form2 ad ogni evento click sul pulsante esegue una query di insert nel database , poi ti pare che il datagrid del form1 venga aggiornato?? A me non sembra:)

Dovresti aggiungere un pulsante al form1 per aggiornare il datagrid, ovvero eseguire la query select

PM Quote
Avatar
neriton (Normal User)
Newbie


Messaggi: 12
Iscritto: 16/01/2013

Segnala al moderatore
Postato alle 16:40
Martedì, 05/03/2013
Ti ringrazio Bonny,
ma ( se sto sbagliando dimmelo ) nel momento in cui inserisco un pulsante per aggiornare i dati, di volta in volta il programma aggiunge tutti i records, compresi i nuovi, ai record esistenti (es. i record n° 1,2,3,4 sono aggiunti ai recors n° 1 e 2 già esistenti. Come fare per evitare le ripetizioni?
perdona la mia "ignoranza".
Ti saluto
                   NERITON

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 18:52
Martedì, 05/03/2013
Non sono  un esperto di .Net e non conosco i datagrid, ho guardato un pò in giro nel web e noto che viene usato anche il dataTable abbinato, quindi potresti svuotare il dataTable e riempirlo con il risultato della la nuova query di select (datatable.clear() -> cancella il contenuto)

PM Quote
Avatar
neriton (Normal User)
Newbie


Messaggi: 12
Iscritto: 16/01/2013

Segnala al moderatore
Postato alle 10:41
Mercoledì, 06/03/2013
Caro Bonny,
ho risolto il problema inserendo in un pulsante il seguente codice:
[DataGridView1.DataBindings.Clear()
DataGridView1.DataSource = Nothing
DataGridView1.DataMember = Nothing
DataGridView1.Rows.Clear()
DataGridView1.Refresh()
]
Spero di aver inserito bene il codice; se ho commesso qualche errore comunicatemelo.
Ti saluto
             NERITON

PM Quote