[ normandija @ 17.03.2011. 12:53 ] @
Na koji nacin mogu da sprecim da se u bazu unese ista sifra artikla, s time da sifra nije auto increment? U opciji Snimi imam dio koda koji proverava bas tu stvar,ali on kaze ako je istoimeni kljuc samo izvrsi editovanje i snimi izmene. A meni treba recimo da cim koirsnik unese u polje neki kljuc da mu odmah kaze da takav postoji, izuzev ako se vrsi edit,pa se klikne na rekord u subformi ispod pa on zalepi na formu podatke sa tim kljucem. Evo tog koda:
Code:

Set ev = d.OpenRecordset("select * from Racunar where Sifra_racunara ='" & Sifra_racunara_txt & "'")
   
  If ev.EOF() Then
     ev.AddNew  'ako ne postoji
  Else
  
     If vbYes <> MsgBox("Želite li da sacuvate izmene podataka?", vbYesNo + vbDefaultButton3) Then
        No = True
      
      Exit Sub
     Else
   
        No = False
   
    ev.Edit     'menjanje
    End If



[ SLOJ.1973 @ 17.03.2011. 13:23 ] @
Mozda PK za sifru artikla u tabeli bi resilo stvar?
[ normandija @ 17.03.2011. 13:26 ] @
hmmm, moze li pojasnjenje kako si mislio? Da li ce mi onda dopusiti update?
[ Zoran.Eremija @ 17.03.2011. 14:17 ] @
Okacite primer da bi Vam se lakse pomoglo.
[ normandija @ 17.03.2011. 16:30 ] @
Rado bih okacio primer baze,ali ne smem iz raznih razloga da sad ne objasnjavam, molim da me razumete i ako bi mogli da mi pomognete na ovakav nacin.Hvala
[ Getsbi @ 17.03.2011. 18:32 ] @
Ili šifra da bude primarni ključ kao što kaže SLOJ.1973 ili da napišeš Vba kod koristeći funkciju DLookup() na događaj BeforeUpdate polja. Ovo drugo je sporije. Evo primer kako to kod mene radi:
Code:

Nova_sifra = Me![BrojPrijemnice]
    
    If IsNull(DLookup("[BrojPrijemnice]", "Prijemnica", "[BrojPrijemnice]=" & Nova_sifra)) = False Then
        Me![BrojPrijemnice].Undo   ' Ponistava vrednost unetog polja
        DoCmd.RunCommand acCmdUndo ' ponistava unos sloga
        Cancel = True
        MsgBox "Pod sifrom  " & Nova_sifra & "  imate unete podatke", vbCritical, "Paznja"
        DoCmd.FindRecord Nova_sifra 'nadje i prikaze slog sa sifrom koja je pokusana da se duplo unese
                                     ' varijanta kada su dostupni svi slogovi ,a ne samo novi
    End If
[ normandija @ 18.03.2011. 06:02 ] @
@Getsbi ovo je odlican primer,ali me zanima ako uradim Undo polja, kako onda da mu odpustim ako hocu da radimeditovanje podataka sa vec upisanim rekordom pod tom sifrom, kako da "mu" to kazem da bi razlikovao kad je rucno unesen neki broj u to polje, a kada kad je klinut iz suborfme pa zalepljen na formu (sto bi znacilo da zelim editovanje podataka) ??
[ Getsbi @ 18.03.2011. 07:07 ] @
Ako ti ne dopušta editovanje već upisanog podataka u prvoj tabeli, onda je moguće da je taj podatak iskorišćen u drugoj tabeli prema kojoj postoji veza jedan prema više, odnosno forsira se referencialni integritet. Za ažuriranje bi trebalo omogućiti opciju Cascade Update Related Fields u Relationships. Tako se obezbeđuje korektno povezivanje objekata, odnosno da se nikad ne pojavi siroče ili zapis u tabeli deteta kome ne odgovara ni jedan zapis u roditeljskoj tabeli.
Ako nije ovo gore naveeno, onda nisam razumeo problem.
[ normandija @ 18.03.2011. 07:21 ] @
Dopusta on meni edit, to radi normalno, kad kliknem na neki lekord iz liste ispod i to treba tako da radi,ali je problem, kada korisnik hoce da uradi novi unos klikne na Ocisti formu i tad se sva polje resetuju (budu prazna nema nista na njima), e sad bi tu trebalo da cim on unese recimo "AD-12" sifru, da se pre klikanja na dugme Snimi javi Msg koji upozorava da je taj kljuc vec zauzet. Jer ako ga pustim da pokrene opciju snimanja u bazu doci ce do opcije gde se vrsi porvera da li psotoji kljuc ili ne, pa ne znam kako da mu to ogranicim, da ako je rekord vec snimljen u bazi da to smatra kao da hocu da editujem,ako me razumes?
[ Getsbi @ 18.03.2011. 07:40 ] @
Obzirom da postoji dugme Snimi, verovatno se radi o formi sa nevezanim poljima (unbound). Trebalo bi u kodu kojim se radi snimanje izvršiti doradu. Najbolje je da napraviš primer sa nekoliko zapisa, ako već ne možeš da zakačiš celu bazu. Naći će se već neko, ko će to da pogleda i doradi. Zoran je ipak bio u pravu.
[ normandija @ 18.03.2011. 07:45 ] @
upravo je tako kako ste napisali, procitajte pp poslao sam vam.

da li bi se moglo pomoci keyPress opcije,ali opet to reaguje na svaki karakter,a treba proveru uraditi kad upise celu sigru

[Ovu poruku je menjao normandija dana 18.03.2011. u 09:40 GMT+1]
[ Trtko @ 18.03.2011. 09:47 ] @
Kad unese sifru ti samo u funkciji recimo na lost_focus ispitaš i ispišeš u sva polja podatke iz tablice
naravno ako postoje u tablici pod tom šifrom ispisat će ti ih.

Onako kako ti je gore @Getsbi napisao

If IsNull(DLookup("[BrojPrijemnice]", "Prijemnica", "[BrojPrijemnice]=" & Nova_sifra)) = False Then

nazivclana = DLookup("Naziv_clana", "tblclanovi", "sifra_clana='" & Format(sifraclana, "000") & "'")
adresa = DLookup("adresa_clana", "tblclanovi", "sifra_clana='" & Format(sifraclana, "000") & "'")
mjesto = DLookup("grad", "tblclanovi", "sifra_clana='" & Format(sifraclana, "000") & "'")
telefon = DLookup("telefon", "tblclanovi", "sifra_clana='" & Format(sifraclana, "000") & "'")
mobitel = DLookup("mobitel", "tblclanovi", "sifra_clana='" & Format(sifraclana, "000") & "'")

end if
[ normandija @ 18.03.2011. 10:47 ] @
Upio sam da resim tako ....hvala