Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 3.635 pregleda

Najnovija ↓

Provera duplog unosa 19.03.2013. u 19:22 · pre 165 meseci #1
Imam jedan problem, ali u sličnim temama ga nisam mogao rešiti.
Kako da me msgbox upozori po napuštanju trećeg polja da zapis sa istim podacima već postoji.
Imam polje ID i on se ne ponavlja, ali po unosu podatka u treće polje da mi javi da u sva tri polja postoje isti zapisi.
Evo postaviću primer pa će biti jasnije.
Re: Provera duplog unosa 19.03.2013. u 19:54 · pre 165 meseci #2
Otvori tabelu u dizajn modu
klikni na dugme indexes(nalazi se omah desno do kljuca na meni baru
u prvoj koloni (Index Name) upisi neki naziv (bilo koji)
u drugoj (Field name) izaberi prva
U redu ispod nje dodaj druga
U redu ispod nje dodaj treca
postavi unique na yes
Re: Provera duplog unosa 19.03.2013. u 20:07 · pre 165 meseci #3
Super, to je ono što mi treba.
Negde sam video još da umesto ovog windows-ovog msbox stavim svoje "upozorenje", moram da potražim.
Hvala Dexxxl.
Re: Provera duplog unosa 19.03.2013. u 22:28 · pre 165 meseci #5
npr. na on exit polja postavis sledeci kod:

Private Sub prva_Exit(Cancel As Integer)
Dim prva As String

prva = Me![prva]

If IsNull(DLookup("[prva]", "Table1", "[prva]= '" & prva &"'")) = False Then
Me![prva].Undo ' Ponistava vrednost unetog polja
DoCmd.RunCommand acCmdUndo ' ponistava unos sloga
Cancel = True
MsgBox "Pod nazivom polja " & prva & " 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
End Sub


' Napomena: Vazi samo za podatke tipa text
Re: Provera duplog unosa 20.03.2013. u 20:30 · pre 165 meseci #7
Code:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case DataErr

Case 3022
MsgBox "Ovaj red podataka je vec unesen"

Case Else

MsgBox "Greska Br: " & DataErr & vbCr _
   & Err.Description

End Select
Response = 0
End Sub
Potpis
zxz
Re: Provera duplog unosa 21.03.2013. u 14:37 · pre 165 meseci #8
Resenje sa Form_Error je bolje nego ono drugo predlozeno, sa Polje_OnExit. Evo zasto:

Tabela koja se stiti od duplog unosa vec ima Primary Key ili UNique index koji ne dozvoljava dupli unos (bez ikakvog programiranja, ovo je na nivou tabele). Resenje sa Polje_OnExit trazi da se pri SVAKOM unosu trazi uneta vrednost u tabeli, "If IsNull(DLookup("[prva]", "Table1", "[prva]= '" & prva &"'")) = False...". Dupli unosi u praksi su retka stvar, ili bar ne tako cesta. Dlookup je SPORA operacija. Na 20 rekorda se sporost ne primeti, ali na 200,000 se primeti i te kako. Znaci, usporili smo unos da bi jednom u 50 puta uhvatili duplikat, koji ionako ne bi prosao, samo da bi dali prevedenu poruku.

Resenje sa Form_Error radi ovako:
Nema pretrazivanja u nekim BeforeUpdate ili OnExit eventima. Rekord se podnosi programu za upis. Ako nema drugih gresaka, Access pokusava da upise rekord u tabelu. Ako tabela prihvati rekord (a prihvatice ga ako nije duplikat), sve je OK, ne pokazuje se poruka i nista se ne desava. Ako tabela ne prihvati unos zbog moguceg duplikata, desava se "Case 3022 MsgBox "Ovaj red podataka je vec unesen...". Znaci, nema nikakvog pretrazivanja, a poruka se pojavljue kad treba. Slican problem se javlja kad se naruse FOREIGN KEY - unosis artikl koji ne postoji u sifraniku. To se resava na slican nacin, dodavanjem nove linije u "Select Case DataErr.." blok. Ne znam tacno koji je broj greske u pitanju, ima u Bazi Znanja negde kod koji lista sve greske, pa potrazis i nadjes i primenis.

I usput, Kontroal_OnExit nije mesto z ana nekoliko mesta i tesko se odrzava.

Ako smo profesionalci, budimo pravi profesionalci i koristimo profesionalne metode :-)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme