Centar za edukaciju-BiH


Stranice (11):1,2,3 ... 10,11

#1 30.03.2011 08:00
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Baza za skladište
Imam tablicu tblTransakcije sa poljima

IDtransakcije
datum
IDDokumenta
BrDokumenta

itd

na dvije forme koje sluÅ¡e za upis ulaza i izlaza na kontroli "BrDokumenta" da bi spriječio dvostruki upis istog broja dokumenta na Before Updata stavi sam slijedeći kod:

PreuzmiIzvorni kôd (vbnet):
  1. Private Sub BrDokumenta_BeforeUpdate(Cancel As Integer)
  2. Dim Unos As String
  3. Dim stLinkCriteria As String
  4. Dim rsc As DAO.Recordset
  5. Set rsc = Me.RecordsetClone
  6. Unos = Me.BrDokumenta.Value
  7. stLinkCriteria = "[BrDokumenta]=" & "'" & Unos & "'"
  8. If DCount("BrDokumenta", "tblTransakcije", stLinkCriteria) > 0 Then
  9. Me.Undo
  10. MsgBox "Upozorenje dokument broj " & Unos & " ve je ranije upisan." & vbCr & vbInformation
  11. End If
  12. If IsNull(Me![IDdokumenta]) Then
  13.         MsgBox "Niste upisali broj dokumenta", , "GreÅ¡ka!"
  14.         DoCmd.GoToControl "IDDokumenta"
  15.  End If
  16. End Sub

I to radi. Međutim sada mi se pojavo problem da ipak ponekad imam porebu upisati isti broj dokumenta ali za zaličite vrste dokumenta.

Npr. imam MeđuskladiÅ¡nu otpremnicu sa kojom sa jednog skladiÅ¡ta skida stanje (izlaz) i na drugo skladiÅ¡te dodajem stanje (Ulaz)

Ili imama dvije različite vrste dokumenata (Otpremnicu ili izdatnicu), a dogodi se da imaju isti broj.

Zato mi treba provjera upisa po dva kriterija

Recimo BrDokumenta + IDdokumenta

Molim pomoć
Pozdrav
Ovaj post je ureden 1 puta. Posljednja izmjena 08.04.2011 10:55 od strane zxz. ↑  ↓

#2 30.03.2011 08:56
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Baza za skladište
Da ti slucajno ne prepisujes ovo sa teme proizvodnja hehehe.
Salim se. Ukoliko pratis temu proizvodnja trebao bi se malo ukljuciti da znamo tvoje misljenje.
Za ovo tvoje:
ako imas u tabeli transakcije polje status napr ili neko drugo polje koje razdvaja ulaz od izlaza onda je najbolje napraviti slozeni kljuc od 2 polja napr. Iddokumenta i status ili pak idDokumenta i idTransakcije.
U tom slucaju neces moci svakako unijeti dupli unos te kod mozes prepravti odnosno samo presretati gresku duplog kljuca.

Sad ako i to neces onda imas proceduru u korisnom kodu koja vrsi provjeru dali u nekoj tabeli u nekom polju postoji neki podatak.
Znaci provjeravao bi iz oba ova pšolja dali podatak postoji pa aako je istina u oba slucaja onda je dupli.

Oedluci se kako ces napraviti prvo.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 1 puta. Posljednja izmjena 08.04.2011 10:56 od strane zxz. ↑  ↓

#3 30.03.2011 09:52
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Baza za skladište
Ne, prepisujem veš radim na onome što smo prije radili.

Prelistao sam koristan kod, ani nisam uspio pronači proceduru.
Pozdrav
Ovaj post je ureden 1 puta. Posljednja izmjena 08.04.2011 10:55 od strane zxz. ↑  ↓

#4 30.03.2011 10:33
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Provjera duplog unosa
PreuzmiIzvorni kôd (Visual Basic):
  1. Function NadjiVrijednost(ImeTabele As String, ImePolja As String, _
  2.                         Vrijednost As Variant) As Boolean
  3.  
  4. Dim db As Database
  5. Dim rst As DAO.Recordset
  6. Dim SQL, A As Variant
  7. '*****************************************************************************************
  8. 'Ova funkcija sluzi za trazenje zadanog podatka u zadanoj Tabeli u
  9. 'zadatom polju i vraca vrijednost
  10. 'ako ima True i ako nema podatka False
  11. 'Ulazne vrijednosti su: ImeTabela kao string ImePolja kao string i
  12. 'Vrijednost kao trazena vrijednost
  13. 'Ako je vrijednost string onda se pise pod znacimea navoda
  14. 'Ako je vrijednost datum onda se pise kao: "#05/05/2000#"
  15. 'Ako je vrijednost Yes/No onda se pise kao: Yes=-1 No=0
  16. 'Ako je vrijednost broj?ana onda se pise broj bez znakova navoda
  17. 'Autor funkcije(ZXZ)
  18. '********************************************************************************************
  19. Set db = CurrentDb() 'Setovanje baze
  20. A = Val(Vrijednost) 'Brojcana vrijednost ulaznog podatka ako je ima  
  21. If A <> Vrijednost Then 'Ako je brojcana vrijednost razlicita od _
  22.                         vrijednosti onda nije broj
  23. If Left(Vrijednost, 1) <> "#" Then 'Ako je na prvom mjestu znak # _
  24.                                     onda je datum
  25. Vrijednost = "'" & Vrijednost & "'" 'Posto je string treba dodati znake _
  26.                                     navoda " "
  27. End If
  28. End If
  29. SQL = "SELECT " & ImeTabele & "." & ImePolja & " FROM " & ImeTabele _
  30. & " WHERE (((" & ImeTabele & "." & ImePolja & ")=" & Vrijednost & "));"
  31.  
  32. Set rst = db.OpenRecordset(SQL) 'Setovanje tabele
  33.  
  34. If rst.RecordCount = 0 Then 'Ako je broj redova 0 tada
  35. NadjiVrijednost = False ' NadjiVrijednost je False
  36. Else 'Inace
  37. NadjiVrijednost = True 'NadjiVrijednost je True
  38. End If
  39. Set db = Nothing
  40. rst.Close 'Zatvori rekordset(Qyery)
  41. End Function

Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 30.03.2011 11:04
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Baza za skladište
Ja sam prije ovoga pokuÅ¡ao naprviti trostruki ključ u tablici tblTransakcije, ali ona nisam uspio napraviti relaciju sa tblUlaz_Izlaz (ulazi i izlazi su mi u jednoj tablici)

tblTransakcija.IDTransakcije <=> tblUlaz_Izlaz.IDTransakcije

javlja se poruka:

No unique field found

Slicice prilozenih slika:
kljuc.jpg
Tip datoteke:Informacije o tipu datoteke za:jpg jpg
Preuzimanja:615
Velicina datoteke:36.85 KB
Velicina slike: 485 x 340 Pikseli


Pozdrav
Ovaj post je ureden 1 puta. Posljednja izmjena 08.04.2011 10:56 od strane zxz. ↑  ↓

#6 30.03.2011 11:09
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Provjera duplog unosa
Sa autonumber poljem je bezvrijedno praviti slozeni kljuc jer autonamber je sam jedinstven broj.
Primjer:
Imas polja ime prezime i ime oca
sada kada stavis sva tri polja kao kljuc onda ti se nemogu ponoviti samo oni koji imaju sve sva polja isto inesena. Mislim na ova 3.
Na kraju se mouze indeksirati da nema duoplikata a i nemora biti kljuc.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#7 30.03.2011 11:52
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Provjera duplog unosa
Pa onda još uvijek neznam kako da to najbolje riješim
Pozdrav
↑  ↓

#8 30.03.2011 12:26
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Provjera duplog unosa
Zakaci samo ovu tabelu i formu ili opet evo da ponovim.
Najbolje je indeksirati po ta 2 polja da nemaju duplikata. Po poljima koja nesmiju imati dupli onuos.
Onda ti ostaje da presretnes gresku na eng. ako hoces pa da napises svoj msgbox.

Drugi nacin je sa ovom procedurom.
Moras je pozvati 2 puta jednom da provjeris dali postoji prvi podatak iz prvog polja te da provjeris dali postoji drugi podatak upisani u drugom polju te ako oba imaju znaci da je duplikat.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#9 30.03.2011 12:46
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Provjera duplog unosa
Evo primjer

Prilozi:
Informacije o tipu datoteke za:rar  ProvjeraUnosa.rar
Preuzimanja:427
Velicina datoteke:33.97 KB


Pozdrav
↑  ↓

#10 30.03.2011 13:26
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Provjera duplog unosa
Jel hoces bez obziora na status da broj dokumenta nemoze biti isti.
Ako to hoces stavi u tabeli na to polje da nema duplikata tj.
Indexed: no duplicates

Onu gore proceduru kopiraj u modul neki.

na on exit polja broj dokumenta postavi ovo:
PreuzmiIzvorni kôd (Visual Basic):
  1. Private Sub BrDokumenta_Exit(Cancel As Integer)
  2. Dim Podatak As String
  3.  
  4. Podatak = Me.BrDokumenta
  5. If NadjiVrijednost("tblTransakcije", "BrDokumenta", Podatak) = True Then
  6. MsgBox "broj dokumenta ve postoji"
  7. Cancel = True
  8. End If
  9. End Sub

Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (11):1,2,3 ... 10,11


Sva vremena su GMT +01:00. Trenutno vrijeme: 6: 28 pm.