Обновления в базе данных не сохраняются, в то время как добавления и удаления делают - PullRequest
0 голосов
/ 23 июня 2019

Я пишу программу, которая печатает физические метки. Вы создаете очередь меток (в таблице базы данных), которую программа позже запускает и печатает. В настоящее время я кодирую часть, которая позволяет вам изменить свою очередь. По сути, данные были экспортированы в визуальную форму в виде серии текстовых полей, которые вы можете изменять. Нажатие кнопки затем обновляет соответствующую строку из них. Обновление в строке работает нормально. Моя проблема в том, что обновление не сохраняется, программа закрывается. Сохраняются дополнения к базе данных, также как и удаления, что меня смущает. Проблема обновления несмотря на то, что я изменил базу данных «копировать в выходной каталог» на «Копировать, если новее», что решило проблему добавления / удаления (спасибо за это переполнению стека).

Я также пытался использовать метод LoadDataRow и изменять связанную сетку данных, но эффект тот же.

Это процедура обновления Это работает, но обновление отменяется, если вы закроете программу и перезапустите:

private void buttonUpdateQLine_Click(object sender, EventArgs e)
    {
        int indexOfRow = int.Parse(textBoxQ0.Text); //gets row to update

        for (int i = 1; i <= 25; i++) //move through textboxes and update appropriate column
        {
            TextBox curText = (TextBox)panelQueueUtilities.Controls["textBoxQ" + i.ToString()];
            string changeText = curText.Text.ToString();
            databaseLabelsDataSetMainQueue.Tables[0].Rows[indexOfRow].SetField(i, changeText);
        }
        databaseLabelsDataSetMainQueue.Tables[0].AcceptChanges();
        try
        {
            tableMainQueueTableAdapter.Update(databaseLabelsDataSetMainQueue.TableMainQueue);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show("Failed to update to Main Queue - " + ex);
        }


    }

Это процедура, которую я использую для добавления строки. Дополнение постоянное!

private void addRowToMainQ()
    {
        string[] queue = CollectQueueEntry(); // gets the data elsewhere
        DataRow row = databaseLabelsDataSetMainQueue.Tables[0].NewRow();

        //row["Id"] = "1";
        row["Name"] = queue[0];
        int answer = 0;
        int.TryParse(queue[1], out answer);
        row["qty"] = answer;
        row["Price"] = queue[2];
        row["PotSize"] = queue[3];
        row["Customer"] = queue[4];
        row["Barcode"] = queue[5];
        row["Description"] = queue[6];
        row["CommonName"] = queue[7];
        row["PictureFile"] = queue[8];
        row["ColourFont"] = queue[9];
        row["ColourFontColour"] = queue[10];
        row["FontBold"] = queue[11];
        row["FontItalic"] = queue[12];
        row["ColourBorderColour"] = queue[13];
        row["ColourBackgroundColour"] = queue[14];
        row["notes"] = queue[15];
        row["Genus"] = queue[16];
        row["Species"] = queue[17];
        row["Variety"] = queue[18];
        row["AGM"] = queue[19];
        row["Picture1"] = queue[20];
        row["Picture2"] = queue[21];
        row["Picture3"] = queue[22];
        row["Picture4"] = queue[23];
        row["OrderNo"] = queue[24];

        databaseLabelsDataSetMainQueue.TableMainQueue.Rows.Add(row);
        dataGridViewMainQ.EndEdit();
        try
        {
            tableMainQueueTableAdapter.Update(databaseLabelsDataSetMainQueue.TableMainQueue);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show("Failed to add to Main Queue - " + ex);
        }

Как я уже сказал, ошибки не получено. Просто продукт подпрограммы добавления и удаления (подпрограмма удаления не предусмотрена) действительно сохраняет работу программы, а эффекты процедуры обновления - нет. Любое руководство будет с благодарностью, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...