[ west_herc @ 17.11.2006. 15:45 ] @
Postovane kolege forumasi, zanima me sljedeće.

Kad unosim podatke u neku tablicu, sve sam ja to sredio, unos preko forme, ..., ali kad unesem isti PK javi mi error. Naravno to je onaj po defaultu, ali ja ne bih ovaj po defaultu.
Mene zanima kako da ja provjeravam da li je unesena ista vrijednost? Da li da pomoću indeksa očitam sve što s enalazi u prvom stupcu, pa preko for petlje ili foreach provrtim ono što sam ja uneo i na osnovu tog da mi javlja da li postoji ista vrijednoist ili ne u tablici.

Hvala unapred svima i duplo vraćam.
[ sstanko78 @ 21.11.2006. 06:35 ] @
Ako ti je PK AutoIncrement polje, onda i ne treba da ga menjas ili diras
vec samo posalji u INSERT-u podatke koje zelis da ubacis u tu tabelu.
On ce sam dodeliti novi PK.
Ako ti PK nije AutoIncrement vec npr int, onda treba da nadjes najveci
(predlazem da za to koristis neku stored proceduru)

Code:

SELECT @ZadnjiPk=MAX(Neki_PK) FROM NekaTabela


Ovo vazi ako ti je PK int tipa
[ sstanko78 @ 21.11.2006. 06:36 ] @
Ako ti je PK AutoIncrement polje, onda i ne treba da ga menjas ili diras
vec samo posalji u INSERT-u podatke koje zelis da ubacis u tu tabelu.
On ce sam dodeliti novi PK.
Ako ti PK nije AutoIncrement vec npr int, onda treba da nadjes najveci
(predlazem da za to koristis neku stored proceduru)

Code:

SELECT @ZadnjiPk=MAX(Neki_PK) FROM NekaTabela


Ovo vazi ako ti je PK int tipa
[ negyxo @ 21.11.2006. 11:32 ] @
Pretpostavljam kada kazes tablice da mislis na tipizirani DataTable. Ako je tako onda mozes da uradis sledecu stvar

Code:

try
            {
                MainBindingSource.EndEdit();
                //Save
                // ...
            }
            catch (Exception exp)
            {             
                if (exp is ConstraintException)
                {
                    // neki text
                }             
            }


MainBindingSource je BindingSource koji vodi racuna o dodavanju u DataTable, znaci u try bloku treba da ti bude snimanje podataka u DataTable na sta ce se izbaciti Exception ukoliko dodje do dupliranja PK u lokalnoj tabli. Ovo moze da ti koristi ukoliko imas samo lokalni pristup podacima odnosno jednog korisnika ali ukoliko je vise korisnika neko ce uvek biti u mogucnosti da pre tebe doda PK koji bas ti sad hoces da dodas, pa ces na kraju dobiti exception od baze, pod uslovom da si kreirao PK na DB-u.
Ja bi ti preporucio, iako ce neki mozda da se nesloze, da PK kod prostih tabela ostavis DB-u da sam generise, da li ce to biti GUID ili IDENTITY to je vec na tebi.
[ colke77 @ 21.11.2006. 13:25 ] @
Najbolje resenje za prost kljuc je kao sto negyxo rece da bude AutoIncrement ili nesto slicno, ako nije moguce imas i sledece resenje:

izvrsis upit
SELECT PK WHERE PK = PK_Koji_Zelis_Da_Upises

ako ti je set koji se vrati prilikom upita prazan, upisujes nov zapis sa kljucem PK_Koji_Zelis_Da_Upises, a ako nije prazan ispisujes neku poruku o gresci ili generises novi PK ili pak nesto trece.