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 - c# problema con variabili
Forum - C# / VB.NET - c# problema con variabili

Avatar
daevoq (Normal User)
Newbie


Messaggi: 5
Iscritto: 01/12/2008

Segnala al moderatore
Postato alle 14:47
Lunedì, 01/12/2008
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)

Codice sorgente - presumibilmente C# / VB.NET

  1. 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:

Codice sorgente - presumibilmente C#

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


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

Codice sorgente - presumibilmente C++

  1. namespace WindowsFormsApplication1
  2. {
  3.  
  4.     public partial class formModifica : Form
  5.     {
  6.        
  7.         public formModifica(uint idRivenditore)
  8.         {
  9.             InitializeComponent();
  10.             recuperoDati(idRivenditore);
  11.             formModifica fmd = new formModifica(idRivenditore);
  12.            
  13.         }
  14.  
  15.        
  16.         public void recuperoDati(uint idRivenditore)
  17.         {
  18.             string connQuery = "Database=prova; Data Source=192.168.233.128; Port=3307; User Id=root; Password=";
  19.             //string queryRecupero = "SELECT citta FROM rivenditore WHERE id_rivenditore = " + idRivenditore + ";";
  20.            
  21.             MySqlConnection connessione = new MySqlConnection(connQuery);
  22.             //MySqlCommand query = new MySqlCommand(queryRecupero);
  23.  
  24.            
  25.             connessione.Open();
  26.  
  27.             DataTable data = new DataTable();
  28.            
  29.             MySqlDataAdapter masterDataAdapter = new MySqlDataAdapter("SELECT * FROM rivenditore WHERE id_rivenditore = " + idRivenditore + ";",connessione);
  30.             masterDataAdapter.Fill(data);
  31.             if (data.Rows.Count > 0)
  32.             {
  33.                 DataRow riga = data.Rows[0];
  34.                 tbMail.Text = (string)riga["mail"];
  35.                 tbRagioneSociale.Text = (string)riga["ragione_sociale"];
  36.                 tbSito.Text = (string)riga["sito"];
  37.                 tbCitta.Text = (string)riga["citta"];
  38.                 tbTelefono.Text = (string)riga["telef"];
  39.                 tbVia.Text = (string)riga["via"];
  40.             }
  41.             else
  42.             {
  43.                 MessageBox.Show("Selezionare un record");
  44.             }
  45.            
  46.  
  47.         }
  48.  
  49.         public void modifica(uint idRivenditore)
  50.         {
  51.             try
  52.             {
  53.                 string connQuery = "Database=prova; Data Source=192.168.233.128; Port=3307; User Id=root; Password=";
  54.                 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+ "' ";
  55.  
  56.                 MySqlConnection connessione = new MySqlConnection(connQuery);
  57.                 connessione.Open();
  58.                 MySqlCommand query = new MySqlCommand(queryModifica);
  59.  
  60.                 query.Connection = connessione;
  61.                 try
  62.                 {
  63.                     query.ExecuteNonQuery();
  64.                     MessageBox.Show("1 Record Modificato Correttamente");
  65.                 }
  66.                 catch (MySqlException e)
  67.                 {
  68.                     MessageBox.Show(e.Message);
  69.                 }
  70.  
  71.                 connessione.Close();
  72.                 Close();
  73.             }
  74.             catch (MySqlException e)
  75.             {
  76.                 MessageBox.Show(e.Message);
  77.             }
  78.         }
  79.  
  80.         private void btAnnulla_Click(object sender, EventArgs e)
  81.         {
  82.             Close();
  83.         }
  84.  
  85.         private void btConferma_Click(object sender, EventArgs e)
  86.         {
  87.            [b] modifica(idRivenditore); [/b] <--- errore qui
  88.         }
  89.    
  90.     }
  91.  
  92.  
  93. }



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? :-|

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:35
Lunedì, 01/12/2008
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:
Codice sorgente - presumibilmente C# / VB.NET

  1. partial class frmModifica
  2. {
  3.   uint id;
  4.  
  5.   public frmModifica(unit idPassato)
  6.   {
  7.     //...
  8.     id = idPassato;
  9.   }
  10.  
  11.   //...
  12. }


PM Quote
Avatar
daevoq (Normal User)
Newbie


Messaggi: 5
Iscritto: 01/12/2008

Segnala al moderatore
Postato alle 10:43
Martedì, 02/12/2008
grazie 1000, pensavo di poter utilizzare l'id passato come variabile anziche doverne dichiarare una nuova... grazie ancora :k:

PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 12:30
Martedì, 02/12/2008
sicuramente quello che ti ha suggerito totem è il metodo migliore!

PM Quote