Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

potrebna pomoc oko ubacivanja u bazu POMOC

[es] :: Baze podataka :: potrebna pomoc oko ubacivanja u bazu POMOC

[ Pregleda: 2261 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 16:17 - pre 133 meseci
Radim aplikaciju Videoteka u WPF koristeci Linq To Sql kako bih povezao aplikaciju sa bazom podataka. Naime, kad god pokusavam da ubacim film u bazu iskoci mi greska :

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Film_Osoba". The conflict occurred in database "Videoteka", table "dbo.Osoba", column 'IdOsobe'.
The statement has been terminated.


Ovako izgleda moja baza.


Gde ja to gresim ?

Unapred hvala.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.isp.telekom.rs.



+373 Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 16:39 - pre 133 meseci
Verovatno ne postoji Osoba sa kojom zelis da povezes Film ili si zaboravio da je dodas jer ne moze biti null. Kako dolazis do OsobaId?
 
Odgovor na temu

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 16:51 - pre 133 meseci
Postavio sam printskrin u prvoj poruci, eno sve je lepo povezano tabela Osoba ima PK IdOsobe koji je povezan sa tabelom Film i poljem IdOsoba.

Ono sto mi je jos cudnije je to da ja pokusavam da ubacim informacije o filmu u tabeli Film i nije mi jasno zbog cega on izbacuje tu gresku kad uopste ne radim nista sa tabelom Osoba.
 
Odgovor na temu

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 17:07 - pre 133 meseci
Ovako inace igleda prozor preko kojeg se ubacuju podaci o filmu


 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 17:57 - pre 133 meseci
Problem nastaje zasto je u tabeli Filmovi polje OsobaId obavezno, a ga ne upisujes nigde kada unosis film.

Ili stavi da taj FK bude nulabilan ili prilikom dodavanja vezi Film za Osobu (sta god ta relacija znacila).

Pored toga, baza je lose dizajnirana.
Ovo cu pojasniti kasnije, trenutno nemam vremena.
 
Odgovor na temu

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 18:11 - pre 133 meseci
Uradio sam kako si mi rekao, postavio sam da IdOsobe dozvoljava null i opet dobijam istu gresku.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 20:10 - pre 133 meseci
Elem,

Prvo da ti se izvinim jer sam bio u zurbi pa sam mislio da se radi o nekoj bazi slicnoj imdb.com, a ne o aplikaciji za izdavanje.
I pored previda sledece promene bi trebao da uradis:

- Relacija izmedju tabele Film i Izdavanje ne postoji. Postoji polje ali ti fali FK constraint.
- U tabeli Film bespotrebna su ti polja OsobaId i UlogaId
- ImeGlumca je realizovano na pogresan nacin. Treba napraviti novu tabelu Cast(ne znam adekvatan srpski naziv, ali tu ces drzati informacije o ljudima koji ucestvuju u filmu - glumcima, rediteljima, svima njima), a onda napraviti tabelu Glumci vise-na-vise gde ces imati GlumacId, CastId, FilmId, NazivLika(omogucava pretragu po glumcima)
- Ovo iznad se odnosi i na reditelje samo umesto NazivLika ces imati FK ka tabeli FilmskaUloga u kojoj ces imati zapise Reditelj, Pisac, Audio Obrada, itd.. Desi se nekada da film ima vise reditelja stoga je ovo korisno, a i dozvoljava ti da u buducnosti prosiris podake koje zelis da imas o filmu. Takodje neki ljudi su i glumci i reditelji, tako da ces moci da izvuces sve od njih. Mozes cak ove 2 tabele spojiti u jednu gde ce ImeLika biti nulabilno, koliko je to dobra/losa ideja nisam siguran, morao bi neko iskusniji da kaze.
- Jedan film moze spadati u vise zanrova, stoga isto izdvojiti u tabelu i napraviti vise-na-vise relaciju
- U tabeli Film dodati bar godinu kada je film izasao, dodati ukupan broj kopija koje posedujes1, po zelji mozes i trenutno dostupne kopije, mada nema potrebe jer to mozes izvuci iz tabele Izdavanje.

1 - Zavisno od potreba moze se napraviti tabela KopijaFilma gde ces cuvati bar kod svakog diska koji se izdaje, a zatim promeniti tabelu Izdavanje tako da svaki izdat film bude zapis iz tabele KopijaFilma. Tako bi ubrzao vracanje i izdavanje filmova jer bi samo provukao npr clansku kartu (koja takodje sadrzi bar kod), zatim izabrao da li izdajes ili vracas i provukao konkretne kopije.
Moze to i sa unificiranim barkodom, ako te ne zanima koji si konkretan disk kome dao.
 
Odgovor na temu

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 20:52 - pre 133 meseci
Cenim sve ovo sto si napisao ali mislim da to nije potrebno. Ovu aplikaciju radim cisto kao projekat za faks i glavna stvar je bila osmisljanje projekta ove aplikacije
sto znaci radjenje Larmanove metodde (grafici i slicno) dok ova aplikacija treba da bude kruna swvega toga. Znaci ne mogu nista da menjam, onako sam rekao da cu uraditi aplikaciju i tako moram da uradim.

Sto se novog problema tice, obrisao sam relaciju izmedju tabele Osoba i tabele Film i kad ponovo pokusam da ih spojim dobijem upozorenje:

- Unable to create relationship 'FK_Film_Osoba'.
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_Film_Osoba". The conflict occurred in database "Videoteka", table "dbo.Osoba", column 'IdOsobe'.


Znaci tek sam sad u rebusu. Pre je mogal da postoji barem relacija a sad ne moze ni to.

 
Odgovor na temu

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 21:02 - pre 133 meseci
OK sredio sam ovo povezivanje nekako ali i dalje ostaje problem ubacivanja u bazu sa mog prvog posta.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 21:12 - pre 133 meseci
Ne mozes postaviti FK jer si verovatno uneo neki Film, a OsobaId ti je ostalo prazno i kada pokusas da postavis FK constraint on ti ne dozvoljava.

Da li ti OsobaId predstavlja zapravo korisnika koji je uneo Film? Ako je to u pitanju, onda moras u aplikaciji imati nekakvu autentifikaciju i cuvati podatke o trenutnom korisniku i prilikom dodavanja filma upisati njegov Id u OsobaId polje.
 
Odgovor na temu

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 21:27 - pre 133 meseci
Tabela Osoba je ili radnik u videoteci ili musterija a to zavisi od tabele Uloga jer u toj tabeli imamo IdUloga i i naziv, znaci zavisi od Uloge da li je Osoba radnik ili clan videoteke.


Nasao sam nacin da ponovo povezem tabele ali i dalje mi stoji problem ubacivanja u bazu. Evo postavicu code.


Ovo mi iz klase Admin u koju upisujem funkcije
Code:

   public static void DodajFilm(Film film)
      {
          using (VideotekaLINQDataContext conn = new VideotekaLINQDataContext())
          {
                             
              conn.Films.InsertOnSubmit(film);
              conn.SubmitChanges();
          }
      }



A ovo mi je iz xaml.cs
Code:


private void dodajFilm_Click(object sender, RoutedEventArgs e)
        {
            decimal trajanje;
            int redniBroj;
            if (imeFilmatextBox1.Text.Trim() == "")
            {
                MessageBox.Show("Niste uneli ime filma !","Paznja",MessageBoxButton.OK,MessageBoxImage.Warning);
            }
            if (redniBrojtextBox2.Text.Trim() == "")
            { MessageBox.Show("Niste uneli redni broj filma !","Paznja",MessageBoxButton.OK,MessageBoxImage.Warning); }
            if (int.TryParse(redniBrojtextBox2.Text, out redniBroj) == false)
            { MessageBox.Show("Morate uneti redni broj u opciju predvidjenu za to !","Paznja !",MessageBoxButton.OK,MessageBoxImage.Warning); }
            
            if (zanrTextBox3.Text.Trim() == "")
            { MessageBox.Show("Niste uneli zanr filma !", "Paznja", MessageBoxButton.OK, MessageBoxImage.Warning); }

            if (imeGlumcatextBox4.Text.Trim() == "")
            { MessageBox.Show("Niste uneli ime glumca !", "Paznja", MessageBoxButton.OK, MessageBoxImage.Warning); }

            if (opisTextBox5.Text.Trim() == "")
            { MessageBox.Show("Niste uneli opis filma", "Paznja", MessageBoxButton.OK, MessageBoxImage.Warning); }
            if (trajanjeTextBox6.Text.Trim() == "")
            { MessageBox.Show("Niste uneli trajanje filma !", "Paznja", MessageBoxButton.OK, MessageBoxImage.Warning); }
            if (decimal.TryParse(trajanjeTextBox6.Text, out trajanje) == false)
            { MessageBox.Show("Morate uneti broj u trajanje filma !", "Paznja", MessageBoxButton.OK, MessageBoxImage.Warning); }

            else 
            {
                Film film = new Film();
                film.Ime = imeFilmatextBox1.Text.Trim();
                film.RedniBroj = redniBroj;
                film.Zanr = zanrTextBox3.Text.Trim();
                film.ImeGlumca = imeGlumcatextBox4.Text.Trim();
                film.Opis = opisTextBox5.Text.Trim();
                film.Trajanje = trajanje;
                Admin.DodajFilm(film);
                MessageBox.Show("Film "+film.Ime+" je uspesno dodat !","Uspeh",MessageBoxButton.OK,MessageBoxImage.Asterisk);
                imeFilmatextBox1.Text = "";
                redniBrojtextBox2.Text = "";
                zanrTextBox3.Text = "";
                imeGlumcatextBox4.Text = "";
                opisTextBox5.Text = "";
                trajanjeTextBox6.Text = "";

            }
        }





I posle svega ovog mi izadje ona poruka sa pocetka tj da nece da se ubaci.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC19.04.2013. u 22:16 - pre 133 meseci
U bazi imas i polja OsobaId i UlogaId koje moras takodje dodeliti u delu:

Code (csharp):

                Film film = new Film();
                film.Ime = imeFilmatextBox1.Text.Trim();
                film.RedniBroj = redniBroj;
                film.Zanr = zanrTextBox3.Text.Trim();
                film.ImeGlumca = imeGlumcatextBox4.Text.Trim();
                film.Opis = opisTextBox5.Text.Trim();
                film.Trajanje = trajanje;

                // GetCurrentUser() je funkcija koja ce ti dohvatiti trenutnog korisnika koji koristi sistem
                // i koju moras sam realizovati nekako
                film.IdOsobe = GetCurrentUser().IdOsobe;                                                        
                film.IdUloga = GetCurrentUser().IdUloga;

                Admin.DodajFilm(film);
 
 
Odgovor na temu

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC20.04.2013. u 06:54 - pre 133 meseci
Hvala ti na kodu i na svemu ali nije u tome problem.

Izbrisao sam relaciju izmedju tabela Osoba i Film i onda sam lagano mogao da unosim filmove preko aplikacije, cim sam ponovo povezao te dve tabele aplikacija mi je prikazivala gresku onu koju sam pokazao u prvom postu:


The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Film_Osoba". The conflict occurred in database "Videoteka", table "dbo.Osoba", column 'IdOsobe'.
The statement has been terminated.



Hoces da ti posaljem preko privatne poruke projekat pa da vidis u cemu je problem, posto se ovako igramo gluvih telefona, ako si raspolozen ?
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC20.04.2013. u 19:45 - pre 133 meseci
Ne moras mi slati, ja znam gde je greska, a greska je sto kada pravis instancu klase Film moras uneti i FK IdOsoba i IdUloga sto ne radis pre nego sto snimis u bazu.

Evo, zabave radi izmeni kod da izgleda ovako:
Code (csharp):

                Film film = new Film();
                film.Ime = imeFilmatextBox1.Text.Trim();
                film.RedniBroj = redniBroj;
                film.Zanr = zanrTextBox3.Text.Trim();
                film.ImeGlumca = imeGlumcatextBox4.Text.Trim();
                film.Opis = opisTextBox5.Text.Trim();
                film.Trajanje = trajanje;

                film.IdOsoba = 1; //ako u bazi nemas osobu sa ID = 1, onda upisi broj koji imas

                Admin.DodajFilm(film);
 
 
Odgovor na temu

stevan314
Srbobran

Član broj: 176958
Poruke: 25
*.dynamic.stcable.net.

Sajt: industrialgod.blogspot.co..


Profil

icon Re: potrebna pomoc oko ubacivanja u bazu POMOC22.04.2013. u 14:38 - pre 133 meseci
Ovako radi sa ovim kodom ali tako ce ispasti da svi filmovi koju budu uneseni su iznajmljeni od clana sa brojem ID 1.

Zar ne postoji nacin da unosim samo filmove ?
 
Odgovor na temu

[es] :: Baze podataka :: potrebna pomoc oko ubacivanja u bazu POMOC

[ Pregleda: 2261 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.