Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190
iCentar » Racunari i oprema » Programirannje i baze podataka » Access » Baza za skladiÅ¡te
pmiroslav 30.03.2011 09:00
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ć

zxz 30.03.2011 09:56
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.

pmiroslav 30.03.2011 10:52
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.

zxz 30.03.2011 11:33
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

pmiroslav 30.03.2011 12:04
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
Prilozi:
kljuc.jpg (Velicina datoteke:36.85 KB)

zxz 30.03.2011 12:09
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.

pmiroslav 30.03.2011 12:52
Predmet:Re: Provjera duplog unosa

Pa onda još uvijek neznam kako da to najbolje riješim

zxz 30.03.2011 13:26
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.

pmiroslav 30.03.2011 13:46
Predmet:Re: Provjera duplog unosa

Evo primjer
Prilozi:
ProvjeraUnosa.rar (Velicina datoteke:33.97 KB)

zxz 30.03.2011 14:26
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