[ daddydrazen @ 18.07.2008. 11:51 ] @
Pozdrav svima,

pravim neki program u VB2005 i imam problem oko stvari koja bi trebalo da je toliko jednostavna a koja mi zivce pokida. Imam na jednoj formi grid u koji ucitavam podatke iz tabele u bazi. Dataset i dataadapter koji ucitavaju tabelu iz baze mi se nalaze u modulu i oni fino ucitaju podatke. Stavim da mi je datasource za grid taj dataset koji je smjesten u modulu. I na gridu mi prikaze fino podatke. Znaci da je dataset korektno popunjen.

E sad nastaje problem kad ja hocu da izbrisem nesto iz dataseta i iz baze uopste. Kod koji koristim:
Code:

    Private Sub cmdIzbrisi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdIzbrisi.Click
        
        Dim cmb As New OleDb.OleDbCommandBuilder(daOsoba)
        dsOsoba.Tables("Osoba").Rows(1).Delete()
        daOsoba.Update(dsOsoba, "Osoba")

    End Sub


Zakacio sam i sliku sa Relationship-om baze tako da otprilike mozete da vidite o cemu se radi. E sad on meni ovdje izbaci gresku, :"No value given for one or more required parameters.", kada treba da odradi update dataadapter-a,a ja ne kontam zasto. Kada stavim da mi taj isti dataadapter i dataset ucitaju neku drugu tabelu iz baze, recimo Tabela1 ili Tabela2 onda mi ovaj isti kod to odradi. Nista mi nije jasno.

I da, nije samo problem sa delete. Problem je i sa Update i sa Insert. Uvijek puca kada treba da update-uje dataadapter.

Da li neko moze reci u cemu grijesim. I naravno, pomoci mi :)

Unaprijed zahvaljujem svima!
[ zenmorke @ 18.07.2008. 12:19 ] @
Iz tabele "Osoba" je spusten kljuc u druge tabele,znaci ne mozes da obrises unos iz te tabele ako postoji podaci iz iste u drugim tabelama.
[ daddydrazen @ 18.07.2008. 12:39 ] @
Kad sam pravio relacije stavio sam da ako se obrise iz te tabele da brise i u tabeli Veza tj oznacio sam na relaciji Cascade delete related records kad sam je kreirao. Tom logikom ne bih mogao izbrisati ni iz Tabela1 jer mi se i iz nje spusta primarni kljuc u tabelu Veza1 Al nema veze, izbrisem relacije izmedju Osoba i svih tabela Veza i pokusam da obrisem iz tabele Osoba i opet nece. Palo mi je i to na pamet. Inace Tabela Osoba ima jos nekih polja al su to obicni podaci tipa telefon, adresa itd al su nebitni pa sam skratio samo da prikazem ono bitno.
[ Igor Gajic @ 18.07.2008. 12:43 ] @
Kako glase naredbe insert,update, delete od dataadaptera?

Da li si ih generisao preko CommandBuilder-a ili rucno?

Ako si ih rucno kodirao onda je problem najverovatnije sa
lose definisanim parametrom.
[ zenmorke @ 18.07.2008. 12:45 ] @
I ja isto mislim da je problem parametar,tj da to nisi dobro obradio....proveri to opet...
[ daddydrazen @ 18.07.2008. 12:58 ] @
Jesam radio preko comandbuildera. Radio sam kao sto sam naznacio u prvom postu. To je procedura za dugme koje se zove Izbrisi. Deklarisao sam comandbuilder za dataadapter daOsoba i onda dole liniju gdje brise iz dataseta prodje a kad treba da update-uje dataadapter onda pukne. Probavao sam i na neke druge nacine al isto. I nije mi jasno zasto hoce kad tom datasetu i dataadapteru dodijeli neka druga tabela iz baze hoce a sa ovom nece. Siznucu majke mi!
[ daddydrazen @ 23.07.2008. 08:25 ] @
Ljudi, jel iko skont'o sta bi me moglo zezat. Ja ovo jos nisam rijesio. A niko da mi se javi.
[ zenmorke @ 23.07.2008. 08:46 ] @
Na koji nacin ti u stvari brises odredjeni red ovde?
pored toga jesi siguran da je ovo ok,slabo znam VBA script,bolji sam sa C#,ali opet mi je ovo malo cudno....



Code:
dsOsoba.Tables("Osoba").Rows(1).Delete()
[ daddydrazen @ 23.07.2008. 10:12 ] @
Citat:
zenmorke: Na koji nacin ti u stvari brises odredjeni red ovde?
pored toga jesi siguran da je ovo ok,slabo znam VBA script,bolji sam sa C#,ali opet mi je ovo malo cudno....



Code:
dsOsoba.Tables("Osoba").Rows(1).Delete()


dsOsoba mi je u stvari dataset. Ova linija koda radi provjereno. Ona brise red broj 1 u tabeli koja je ucitana kroz dataset. Ja sam stavio 1 samo da vidim hoce li mi proci uopste. Inace imam jednu promjenjivu koja stoji umjesto 1 i koja govori koji u stvari red u dataset-u treba da se izbrise. E sad problem nastaje kod sledece linije koda.

Code:
daOsoba.Update(dsOsoba, "Osoba")


Dataadapter daOsoba treba da se update-uje i ujedno da update-uje zapis u samoj tabeli u bazi i to sve u odnosu na novonastali dataset dsOsoba sa izbrisanim redom 1. Data adapter treba da se update-uje preko comand builder-a cmb koji sam deklarisao prije nego sam kreuo sa brisanjem reda.

Kada izbrisem ovaj kod za update program prodje i odradi brisanje dataset-a i kada ga ja ponovo ucitam u grid on ne prikazuje taj izbrisani red. Al sta mi to vrijedi kad se u samoj bazi ne izbrise, i kada se ponovo pokrene program taj "izbrisani" red je ponovo ucitan.
[ zenmorke @ 23.07.2008. 10:24 ] @
Znaci brise ti u dataset-u ali ne radi promene u bazi...probaj sa nekom metodom koja potvrdjuje update dataadaptera na kraju,nesto kao acceptChanges() npr.


http://www.elitesecurity.org/t120494-Update-DataGrida

[Ovu poruku je menjao zenmorke dana 23.07.2008. u 12:18 GMT+1]
[ fpedja @ 23.07.2008. 11:05 ] @
Code:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dsOsoba As New DataSet
        Dim putanja As String = "c:\MyData\Proba.mdb"
        Dim constr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & putanja
        Dim con As New OleDbConnection(constr)
        con.Open()
        Dim upit As String = "SELECT * FROM Lst"
        Dim oCom As New OleDbCommand(upit)
        oCom.Connection = con
        Dim daOsoba As New OleDbDataAdapter(oCom)
        Dim cmb As New OleDb.OleDbCommandBuilder(daOsoba)
        daOsoba.Fill(dsOsoba)
        DataGridView1.DataSource = dsOsoba.Tables(0)

        If MsgBox("Siguran?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
            dsOsoba.Tables(0).Rows(1).Delete()
            daOsoba.Update(dsOsoba)
            DataGridView1.Refresh()
        End If
        con.close()
    End Sub


Evo ti jedan prost primer. Ovo sigurno radi (sad sam proverio). Postavio sam i tabelu Lst1 i stavio kaskadno brisanje i radi.
[ daddydrazen @ 25.07.2008. 13:13 ] @
Nisam htio da se ponovo javljam dok sve ne isprovjeravam dobro i dok ne vidim jesam li sve napisao kako treba. Sve ovo sto ste vi pisali sam ja znao i radio po tom ili malo drugacije ali mi je uvijek pucao na tom mjestu. Cudno mi bilo sto kad ucitam neku drugu tabelu iz iste baze kroz taj dataset i taj dataadapter, iz nje hoce da brise a iz ove nece. I na kraju krenem brisat kolonu po kolonu iz tabele. Uspostavi se da je naziv kolone stvarao probleme. Stavio sam da mi se jedna kolona zove Opstina/Mjesto. Ispostavilo se da je ovo "/" pravilo problem. Ne znam sto sam to uopste koristio. Debil.

U svakom slucaju hvala svima na trudu i pomoci. Ako nista znao sam da mi je kod dobro napisan. :) Jos jednom hvala svima.

Pozz