2010-04-29 10 views
1

J'essaie de coller les valeurs d'une zone de texte dans Form1 à la zone de texte dans Form2. Je l'ai fait, mais pendant que je mettais à jour mon application, il a cessé de fonctionner. J'ai aussi besoin de cette erreur pour obtenir une erreur (type de données incorect dans une instruction conditionnelle) quand je veux insérer une valeur depuis une zone de texte (vers une base de données d'accès) qui n'apparaît pas sur le formulaire qui crée l'insertion. le code: string textFromForm1;Convertir une valeur d'une zone de texte en une zone de texte sous une autre forme

public Form2() 
    { 
     InitializeComponent(); 


    } 

    public void textBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     using (Form3 obrok = new Form3()) 
     obrok.ShowDialog(); 

    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     this.Hide(); 


    } 

    private void button2_Click(object sender, EventArgs e) 
    { 

    } 

    private void textBox1_TextChanged_1(object sender, EventArgs e) 
    { 

    } 
    Form1 bmr=new Form1(); 
    int masa; 
    private void Form2_Load(object sender, EventArgs e) 
    { 
     textBox1.Text = bmr.masaTextBox.Text;  
    } 

le code pour instruction d'insertion: chaîne conString = "Provider = Microsoft.Jet.OLEDB.4.0;" + "Source de données = C: \ Users \ Simon \ Desktop \ save.mdb";

 OleDbConnection empConnection = new OleDbConnection(conString); 


     string insertStatement = "INSERT INTO obroki_save " 
          + "([ID_uporabnika],[ID_zivila],[skupaj_kalorij]) " 
          + "VALUES (@ID_uporabnika,@ID_zivila,@skupaj_kalorij)"; 

     OleDbCommand insertCommand = new OleDbCommand(insertStatement, empConnection); 

     insertCommand.Parameters.Add("@ID_uporabnika", OleDbType.Char).Value = users.iDTextBox.Text; 
     insertCommand.Parameters.Add("@ID_zivila", OleDbType.Char).Value = iDTextBox.Text; 
     insertCommand.Parameters.Add("@skupaj_kalorij", OleDbType.Char).Value = textBox1.Text; 
     empConnection.Open(); 

     try 
     { 
      int count = insertCommand.ExecuteNonQuery(); 
     } 
     catch (OleDbException ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      empConnection.Close(); 
      textBox1.Clear(); 
      textBox2.Clear(); 
      textBox3.Clear(); 
      textBox4.Clear(); 
      textBox5.Clear(); 
     } 

Répondre

0

Généralement ce n'est pas une bonne chose à faire. Je ne suis même pas sûr que cette approche soit sûre pour les threads.

Au lieu de faire

textBox1.Text = bmr.masaTextBox.Text; 

essayer d'ajouter des propriétés publiques à votre form1 et garder vos données là-bas. Ou bien passez les données nécessaires au constructeur de form2. Quoi qu'il en soit, la zone de texte ne doit pas être un stockage de données où vous gardez une valeur puis un accès depuis un autre endroit ... textbox devrait être utilisé pour afficher les données et les lire.

+0

J'ai réussi à résoudre le problème, mais j'obtiens toujours l'erreur qu'il existe un mauvais type de données dans l'instruction conditionnelle. Pourquoi est-ce? Dans le formulaire 3 (où je veux insérer des données, toutes les données sont insérées à partir des boîtes de texte du formulaire 3. pourquoi ai-je ce problème si j'ai fait la même chose sur d'autres tables et ça marche?) – simon

Questions connexes