Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Προβλημα με update/add μεταξυ related tables

Îåêßíçóå áðü ôï ìÝëïò Sheik. Τελευταία δημοσίευση από το μέλος pap στις 13-02-2009, 14:46. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-02-2009, 16:55 48392

    Προβλημα με update/add μεταξυ related tables



    Καλησπερα.
    Εχω ενα νεο πρόβλημα τωρα.Προσπαθώ να υλοποιήσω add λειτουργια σε 2 πινακες της βασης μου.Ο ενας ειναι ο Employees και ο αλλος ο Logins ο οποιος εχει ενα ξενο κλειδι EmployeeID που αντιστοιχει σε εναν υπάλληλο.Το προβλημα ειναι οτι πατωντας το addnew button της φορμας, αυτοματα το νεο ID που μου δινει στο αντιστοιχο πεδιο, ειναι -1,-2 κλπ και οχι ενας θετικος αριθμος, μεγαλυτερος της τελευταιας εγγραφης στη βαση, οπως θα επρεπε(το εχω βαλει το ID να ειναι incremented στον ορισμο του table).

    Αν συμπληρωσω ολα τα πεδια του Employees και μετα συμπληρωσω αυτα στον Logins, μου βγαζει το εξης error: the INSERT statement conflicted with FOREIGN KEY constraint μπλα μπλα......

    Στη συνεχεια, οταν παω στην βαση να δω εαν ενημερωθηκε τπτ, ο πινακας employees εχει κανονικα ενημερωθει, ενω ο Logins οχι.
    Να σημειωσω πως την Add λειτουργια την εχω αλλαξει ως εξης:

    private bool Save()

            {
                bool saved = false;
                DataRow[] employeeUpdates = new DataRow[1];
                DataRow[] loginUpdates = new DataRow[1];


                if (this.addEmployeeDataSet.HasChanges())
                {
                    try
                    {
                   
                    employeeUpdates = this.addEmployeeDataSet.Employees.Select("","",DataViewRowState.Αdded);

                   
                    loginUpdates = this.addEmployeeDataSet.Logins.Select("","", DataViewRowState.Added);

                    this.employeesTableAdapter.Update(employeeUpdates);
                    this.loginsTableAdapter.Update(loginUpdates);
                   


                    saved = true;
                }
                    catch (System.Exception ex)
                    {
                        System.Windows.Forms.MessageBox.Show(ex.Message);
                    }
                }
                   
           

                return saved;

            }

    ---------------------------------------------------------------------------------------------------------------

            private void employeesBindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
                this.Validate();
                this.employeesBindingSource.EndEdit();
                this.loginsBindingSource.EndEdit();
                if (this.Save())
                {
                    MessageBox.Show("mpravisimo!");     //  :-p
                }
            }
    -----------------------------------------------------------------------------------------------------------------
  •  13-02-2009, 14:46 48410 σε απάντηση της 48392

    Απ: Προβλημα με update/add μεταξυ related tables

    Για το θέμα της τιμής που δίνει -1, -2 κλπ. μπορείς να σετάρεις τις παραμέτρους των insert και upate commands χωρίς το id κάπως έτσι:

       insertCommand.CommandText = @"INSERT INTO Employee(lastName, firstName) VALUES(@lastName, @firstName, )";
       insertCommand.Connection = _sqlCon; // SqlConnection objecct
       insertCommand.Parameters.Add("@lastName", SqlDbType.VarChar, 30, "lastName");
       insertCommand.Parameters.Add("@firstName", SqlDbType.VarChar, 30, "firstName");

        // ...

       da.InsertCommand = insertCommand;
       da.Fill(ds, "Contact");

    Και έπειτα σε μια public method:

      public void Insert(string firstName, string lastName)
      {
           insertCommand.Parameters["@firstName"].Value = firstName;
           insertCommand.Parameters["@lastName"].Value = lastName;
           insertCommand.ExecuteNonQuery();
      }

    Το id δε χρειάζεται να γίνει set, γίνεται αυτόματα ανάθεση στην τιμή του, εφόσον είναι auto-increment.

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems