[ Untouchabble @ 17.02.2006. 20:45 ] @
Citat:
Private Sub Mesta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=D:\Documents and Settings\Srdjan\My Documents\Visual Studio Projects\Kartoteka\Baza.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
'"SELECT Mesto, [Pozivni broj] FROM Mesta WHERE (Mesto = ?)"

AdapterMesta.SelectCommand().Parameters("Mesto").Value = "Novi Sad"
AdapterMesta.Fill(DataSetMesta)

ListBoxAdapter.Fill(ListBoxDataSet)
ListBoxMesto.DataSource = ListBoxDataSet.Tables("Mesta")
ListBoxMesto.ValueMember = "Mesto"

Dim keys(0) As DataColumn
keys(0) = DataSetMesta.Tables("Mesta").Columns("Mesto")
DataSetMesta.Tables("Mesta").PrimaryKey = keys

TextBoxMesto.DataBindings.Add((New Binding("Text", DataSetMesta, "Mesta.Mesto")))
TextBoxPozivni.DataBindings.Add((New Binding("Text", DataSetMesta, "Mesta.Pozivni broj")))

End Sub


Private Sub ButtonPromeni_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPromeni.Click

Dim IzmeniRed(1) As Object
IzmeniRed(0) = TextBoxMesto.Text
IzmeniRed(1) = TextBoxPozivni.Text
MsgBox(TextBoxMesto.Text)

DataSetMesta.Tables("Mesta").BeginLoadData()
DataSetMesta.Tables("Mesta").LoadDataRow(IzmeniRed, False)

Dim xDataSet As DataSet
xDataSet = DataSetMesta.GetChanges(DataRowState.Modified)

DataSetMesta.AcceptChanges()
DataSetMesta.Tables("Mesta").EndLoadData()

AdapterMesta.Update(xDataSet)

End Sub

Ovaj kod gore povezuje DataSet sa dve TextBox kontrole i nakon pritiska na dugme Promeni treba da unese promene dva polja (Mesto i Pozivni broj) u bazu. Sve radi korektno kada se menja samo polje pozivni broj, ali kada pokušam da promenim polje Mesto koje je Primary Key, dobijam poruku o grešci:
Citat:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
Pitanje je: da li je uopšte moguće promeniti vrednost polja koje je naznačeno kao Primary Key i da li ovo ima veze s tim što koristim Visual Basic.NET (prvu verziju), a baza potiče iz Access-a 2003?
[ Untouchabble @ 17.02.2006. 20:48 ] @
Zaboravio sam da objasnim onaj dugačak komentar u početku koda - hteo sam samo da pokažem kako sam konfigurisao DataConnection i DataAdapter, u slučaju da sam tu nešto pogrešio.

Hvala unapred :)
[ Oliver Klaćik @ 18.02.2006. 08:22 ] @
Možeš promeniti vrednost polja koje je PrimaryKey, ako time ne povređuješ nijedan Constraint, što ti očigledno radiš. Probaj to isto da uradiš direktno u Access-u, pa vidi gde grešiš. Btw, nema veze koja je verzija...
[ Untouchabble @ 18.02.2006. 22:46 ] @
Pokušao sam iz Accessa i sve regularno radi. Ako neko kapira u čemu je problem, pogledajte kod iznad i recite da promenim.
[ Untouchabble @ 20.02.2006. 21:51 ] @
Ljudi stvarno mi gori pod nogama, ako neko zna kako da rešim ovu kvaku nek ne bude lenj.
[ dusans @ 21.02.2006. 07:54 ] @
Prvo, otarasi se ovoga ako ti nije potrebno, a mislim da nije:

Code:

Dim keys(0) As DataColumn
keys(0) = DataSetMesta.Tables("Mesta").Columns("Mesto")
DataSetMesta.Tables("Mesta").PrimaryKey = keys


Takođe, neke linije ti ne trebaju u click događaju a mogle bi da naprave problem, pa bi kod na kraju izgledao ovako
Code:

Private Sub ButtonPromeni_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPromeni.Click

Dim IzmeniRed(1) As Object
IzmeniRed(0) = TextBoxMesto.Text
IzmeniRed(1) = TextBoxPozivni.Text
MsgBox(TextBoxMesto.Text)

Dim xDataSet As DataSet
xDataSet = DataSetMesta.GetChanges(DataRowState.Modified)

DataSetMesta.AcceptChanges()

AdapterMesta.Update(xDataSet)

End Sub


Ako i dalje ne radi onda pošalji i na kojoj liniji ti se ovo dešava...
Pozdrav!
[ Untouchabble @ 22.02.2006. 10:12 ] @
Kada uradim sve navedeno, dobijam novu grešku na liniji "AdapterMesta.Update(xDataSet)" - Value cannot be null. Što mi je ustvari i logično, jer nigde nije učitan niz IzmeniRed u DataSetMesta (linija "DataSetMesta.Tables("Mesta").LoadDataRow(IzmeniRed, False)" je izbačena).