Oppure

Loading
01/12/08 13:47
daevoq
salve gente, è il mio primo post e ne approfitto per presentarmi.

dunque dunque, in pratica ho sviluppato un programma che collegandosi ad un database mysql mi permette visualizzazione, aggiunta, eliminazione e modifica di record.
il prog in questione è strutturato in 4 form

formLogin= effettua il login al DB (funziona)
form1 = contiene datagridview e pulsati quali Modifica, Inserisci, elimina blabla. (funziona)

formNuovo= permette di inserire 1 nuovo record (funziona)

e infine formModifica = permette di modficare un record (è lui che ha 1 problema)

in pratica devo recuperare una variabile da Form1 (la quale recupera l'id_rivenditore dal datagrid)

uint idRivenditore = (uint)dataGridView1.CurrentRow.Cells[0].Value;


e passarla al formModifica che contiene 2 funzioni:

recuperaDati() - che mi prende i dati del record e me li incolla nelle textbox in modo da modificarli
&
modifica() - che mi fa la query di update.

ora, in form1 (quello col datagrid) io ho fatto in questo modo:

private void btModifica_Click(object sender, EventArgs e)
        {
            
            uint idRivenditore = (uint)dataGridView1.CurrentRow.Cells[0].Value;
            formModifica fmod = new formModifica(idRivenditore);
            fmod.Show();
        }

e passato il paramentro nella funzione recuperaDati() del formModifica in questo modo:

namespace WindowsFormsApplication1
{

    public partial class formModifica : Form
    {
       
        public formModifica(uint idRivenditore)
        {
            InitializeComponent();
            recuperoDati(idRivenditore);
            formModifica fmd = new formModifica(idRivenditore);
            
        }

        
        public void recuperoDati(uint idRivenditore)
        {
            string connQuery = "Database=prova; Data Source=192.168.233.128; Port=3307; User Id=root; Password=";
            //string queryRecupero = "SELECT citta FROM rivenditore WHERE id_rivenditore = " + idRivenditore + ";";
            
            MySqlConnection connessione = new MySqlConnection(connQuery);
            //MySqlCommand query = new MySqlCommand(queryRecupero);

            
            connessione.Open();

            DataTable data = new DataTable();
            
            MySqlDataAdapter masterDataAdapter = new MySqlDataAdapter("SELECT * FROM rivenditore WHERE id_rivenditore = " + idRivenditore + ";",connessione);
            masterDataAdapter.Fill(data);
            if (data.Rows.Count > 0)
            {
                DataRow riga = data.Rows[0];
                tbMail.Text = (string)riga["mail"];
                tbRagioneSociale.Text = (string)riga["ragione_sociale"];
                tbSito.Text = (string)riga["sito"];
                tbCitta.Text = (string)riga["citta"];
                tbTelefono.Text = (string)riga["telef"];
                tbVia.Text = (string)riga["via"];
            }
            else
            {
                MessageBox.Show("Selezionare un record");
            }
            

        }

        public void modifica(uint idRivenditore)
        {
            try
            {
                string connQuery = "Database=prova; Data Source=192.168.233.128; Port=3307; User Id=root; Password=";
                string queryModifica = "UPDATE rivenditore SET ragione_sociale = '" + tbRagioneSociale.Text + "', via = '" + tbVia.Text + "',citta = '" + tbCitta.Text + "', telef = '" + tbTelefono.Text + "', mail = '" + tbMail.Text + "', sito = '" + tbSito.Text + "'  WHERE id_rivenditore = '" +idRivenditore+ "' ";

                MySqlConnection connessione = new MySqlConnection(connQuery);
                connessione.Open();
                MySqlCommand query = new MySqlCommand(queryModifica);

                query.Connection = connessione;
                try
                {
                    query.ExecuteNonQuery();
                    MessageBox.Show("1 Record Modificato Correttamente");
                }
                catch (MySqlException e)
                {
                    MessageBox.Show(e.Message);
                }

                connessione.Close();
                Close();
            }
            catch (MySqlException e)
            {
                MessageBox.Show(e.Message);
            }
        }

        private void btAnnulla_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btConferma_Click(object sender, EventArgs e)
        {
           [b] modifica(idRivenditore); [/b] <--- errore qui
        }
    
    }

 
}


bene, funziona tutto tranne il fatto che la funzione modifica() non si vuole tirare il parametro che ho passato dando come errore:

Errore    1    Il nome 'idRivenditore' non esiste nel contesto corrente    C:\Users\XXX\Documents\Visual Studio 2008\Projects\WindowsFormsApplication1\WindowsFormsApplication1\formModifica.cs    98    22    WindowsFormsApplication1

suggerimenti? :-|
aaa
01/12/08 15:35
Il Totem
Infatti quella variabile non esiste: se ci fai caso, non l'hai dichiarata né nella funzione che gestisce l'evento né a livello di classe. Il fatto che il parametro del costruttore abbia lo stesso nome della variabile che vuoi utilizzare non ti permette di usare tale nome come se la variabile ci fosse, perchè non c'è.
Devi dichiararla a livello di classe, ed inizializzarla nel costruttore:
partial class frmModifica
{
  uint id;

  public frmModifica(unit idPassato)
  {
    //...
    id = idPassato;
  }
  
  //...
}
aaa
02/12/08 9:43
daevoq
grazie 1000, pensavo di poter utilizzare l'id passato come variabile anziche doverne dichiarare una nuova... grazie ancora :k:
aaa
02/12/08 11:30
Gianluca87
sicuramente quello che ti ha suggerito totem è il metodo migliore!
aaa