aktualizacja bazy danych - błąd

0
namespace Bazodanowy
{
    public partial class Form1 : Form
    {
        OleDbConnection połączenie;
        OleDbDataAdapter pompa;
        OleDbCommandBuilder bob;
        DataSet pojemnik;
        string constring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Komputer\Documents\Visual Studio 2010\Projects\Bazodanowy\Bazodanowy\firma.mdb;Persist Security Info=True";
        public Form1()
        {
            InitializeComponent();

        }

        private void wczytaj_Click(object sender, EventArgs e)
        {
            połączenie = new OleDbConnection(constring);
            pompa = new OleDbDataAdapter("SELECT Imię, Nazwisko, Miasto FROM Pracownicy", połączenie);
            pojemnik = new DataSet();

            pompa.Fill(pojemnik, "Pracownicy");

            dataGridView1.DataSource = pojemnik;
            dataGridView1.DataMember = "Pracownicy";

        }

        private void zapisz_Click(object sender, EventArgs e)
        {
            bob = new OleDbCommandBuilder(pompa);
            pojemnik.Tables["Pracownicy"].Rows[0]["Miasto"] = "Pszczyna";
            pompa.Update(pojemnik, "Pracownicy");

        }
    }
}

Po wywołaniu metody zapisz_Click dostaje błąd:

Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

co jest nie tak?

0

Wyraźnie napisał, co chce.
Primo: brak UpdateCommand. Jest potrzebna do .Update
Jeśli jej nie ma, to próbuje na podstawie SelectCommand stworzyć odpowiedni.
Ale...
Duo: w SelectCommand brak kolumny jednoznacznie identyfikującej dany rekord (key column). I dlatego nie potrafi utworzyć UpdateCommand...

0

a jak powinno wyglądać to UpdateCommand?

0

Dla ciebie najszybszym rozwiązaniem będzie, jak dodasz do SelectCommand kolumnę z ID. Możesz przecież tę kolumnę ukryć w DGV...

0

niestety nadal nie wiem o co chodzi z tym ID dla kolumn, jestem początkujący więc proszę o wyrozumiałość :)
jakby ktoś mógł napisać co ma dokładnie się znaleźć w UpdateCommand?

0

pokaż strukturę tabeli (skrypt CREATE TABLE)

0
CREATE TABLE Pracownicy
(
id_pracownika INT(5) NOT NULL PRIMARY KEY,
Imię CHAR(20) NOT NULL,
Nazwisko CHAR(50) NOT NULL,
Miasto CHAR(50) NOT NULL,
Pensja FLOAT (6,2) NOT NULL
)
0

pompa = new OleDbDataAdapter("SELECT id_pracownika, Imię, Nazwisko, Miasto FROM Pracownicy", połączenie);

Dałeś PLiterki w nazwie pola? Zrezygnuj z tego. Tak jak i z typu CHAR. A id_pracownika powinieneś mieć AUTOINCREMENT.
0

dzięki, teraz już wiem o co chodziło :) i jeszcze jedno, jak ukryć z tą kolumnę z ID? co to jest DGV?

0

DGV = DataGridView
Jak ukryć? pewnie tak (strzelam):

dataGridView1.Columns[0].Visible=false;

1 użytkowników online, w tym zalogowanych: 0, gości: 1