Vidi, nemoj da se ljutis, ali imas izgleda problema sa osnovnim konceptom unosa podataka (vidim to po onoj zbrci "dodaj", "ponisti".... i koristenjem locked svojstva koje nema nikakve veze sa bilo cim) ne znam gde si "pokupio" primer za takav unos, ali je prilicno tragican i samo pokazuje tvoje osnovno nerazumevanje nacina rada sa rekordsetima.
Da samo banalizujem ono osnovno, posto bi ova tema zahtevala bar jednu knjigu:
1. Koristis surogat kljuceve (long tipa)
2. Koristis prirodne kljuceve (sifre, jmbg... i sl.)
1.1 Koristis usluge DBMS-a i kljucevi su ti autonumber
1.2 Koristis sopstvenu proceduru za dodelu vrednosti kljuca pri unosu novog podatka
1.1.1 Koristis dinamicki rekordset (ServerSide, Dynamic, informacije o autonumber kljucu su odmah "vidljive")
1.1.2 Ne koristis to, vec ClientSide, KeySet npr.
1.2.1 Takodje ClientSide, KeySet, jer nema potrebe za necim drugim.
Dodatne varijacije:
a) Radis unos na SQL upitu koji sadrzi samo jednu tabelu
b) Radis unos na slozenom SQL upitu
Predvidjene operacije:
I) Dodavanje
II) Odustajanje od dodavanja
III) Cuvanje
Sta je sa izmenom postojecih podataka, pozicioniranjem na postojece podatke, brisanjem postojecih podataka ...
Ako si me sve ovo razumeo, odgovori mi koja je tvoja varijanta, pa da idemo dalje.
P.S.
Moras shvatiti da kada pozoves metodu rsRecordset.Open pozicioniran si na prvi zapis (ako ga ima), a kada pozoves AddNew metodu, upises podatak pa zatim pozoves metodu Save nema potrebe da ponovo radis ono Close/Open osim u slucaju b) kada treba da se pozove Requery metoda da bi dobio vrednosti iz "stranih tabela" , a sve to naravno ako nije u pitanju slucaj pod 1.1.1
vidi GoranVucicevic #28045
www.clickersoftware.com