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

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 » Autonumber se ponavlja
zxz 17.12.2010 17:25
Predmet:Re: Autonumber se ponavlja

Ok. Cini mi se da ti je getsbi vec dao kod za to.
Sada dolazi ono do pocetka kako ovaj kljuc zamijeniti za stari. Prvo u osnovnoj tabeli dodas jedno polje.
Najbolje tekstualno sa napr 8 cifara i onda treba naprabiti kod da se unesu cifre od:000000001 pa na dalje.
Ako pak neces tekst onda ti stavljaj brojeve 1 do...
Neznam hoces li ovaj kod pokusati sam napraviti a za prenos u ostale ja cu ti napraviti kada to zavrsis.
Znas racunar bolje i brze radi ako je kljuc string nego broj a ti kako hoces.

pmiroslav 17.12.2010 18:59
Predmet:Re: Autonumber se ponavlja

Evo napravio sam neÅ¡to za brojeve iako se i meni čini elegantije da to bude string ali neznam kako to napraviti.
Kako do sada u tablici imam 40.000 slogova mislim da će biti dovoljna 7 cifrena Å¡ifra i volio bih da bude u obliku
0000001, 0000002 itd.
Prilozi:
PrimjerID_2.rar (Velicina datoteke:78.26 KB)

zxz 17.12.2010 19:40
Predmet:Re: Autonumber se ponavlja

Prvo ID_String stavi da ima samo 8 karaktera.
Indeksiraj polje da nema duplikata
Iskljuci aktivx ili adoako ga ne koristis jer ima dao.

Stavi ovaj kod u neki modul i pokreni:
PreuzmiIzvorni kôd (Visual Basic):
  1. Function OnisiID()
  2. Dim Db As Database
  3. Dim Rs As Recordset
  4. Dim Sql As String
  5. Dim I As Single
  6. Dim IStr As String * 8
  7.  
  8. Sql = "SELECT PROCES.ID_String FROM PROCES"
  9.  
  10. Set Db = CurrentDb
  11. Set Rs = Db.OpenRecordset(Sql)
  12. Rs.MoveFirst
  13. Do While Not Rs.EOF
  14. I = I + 1
  15. IStr = Format(I, "00000000")
  16. Rs.Edit
  17. Rs.Fields(0) = IStr
  18. Rs.Update
  19. Rs.MoveNext
  20. Loop
  21. End Function

zxz 17.12.2010 19:45
Predmet:Re: Autonumber se ponavlja

Ako ovo gore prodje kako valja onda uradi sledece:

Postavi na formi za unos polje ID_String. Mozes ga napraviti nevidljivim tako da ti sve ostane isto.
Na on Current forme stavi ovaj kod:
PreuzmiIzvorni kôd (Visual Basic):
  1. Private Sub Form_Current()
  2. Dim Db As Database
  3. Dim Rs As Recordset
  4. Dim Sql As String
  5. Dim IDstr As String * 8
  6. Dim IDBroj As Single
  7.  
  8. Sql = "SELECT Last(PROCES.ID_String) AS LastOfID_String " _
  9.      & "FROM PROCES"
  10.  
  11. Set Db = CurrentDb
  12. Set Rs = Db.OpenRecordset(Sql)
  13. If Rs.Fields(0) <> "" Then
  14. IDBroj = Val(Rs.Fields(0))
  15. End If
  16. IDBroj = IDBroj + 1
  17. IDstr = Format(IDBroj, "00000000")
  18. Me.ID_String.DefaultValue = IDstr
  19. Rs.Close
  20. Set Db = Nothing
  21. End Sub

Ovo ostavi ovako da par dana radi da mozes pratiti da je sve uredu.
Onda ces napraviti ovo polje u svim tabelama koje su sad vezane za ovu.
Napravit cemo kod da prenese ovaj novi kljuc.
Raskines stru rel vezu te vezes reaciono ovim kljucem i to je to.

pmiroslav 17.12.2010 20:53
Predmet:Re: Autonumber se ponavlja

Evo napravio sam tako, ali mi se Å¡ifra ne upisuje u formatu 0000001 več kao običan broj 1, 2 itd
Prilozi:
PrimjerID_3.rar (Velicina datoteke:81.12 KB)

zxz 17.12.2010 21:02
Predmet:Re: Autonumber se ponavlja

Pobrisi format na polju u tabeli i popravi ovo ja sam pogrijesio.
PreuzmiIzvorni kôd (Visual Basic):
  1. Private Sub Form_Current()
  2. Dim Db As Database
  3. Dim Rs As Recordset
  4. Dim Sql As String
  5. Dim IDstr As String * 8
  6. Dim IDBroj As Single
  7.  
  8. Sql = "SELECT Last(PROCES.ID_String) AS LastOfID_String " _
  9.      & "FROM PROCES"
  10.  
  11. Set Db = CurrentDb
  12. Set Rs = Db.OpenRecordset(Sql)
  13. If Rs.Fields(0) <> "" Then
  14. IDBroj = Val(Rs.Fields(0))
  15. End If
  16. IDBroj = IDBroj + 1
  17. IDstr = Format(IDBroj, "00000000")
  18. 'ovo popravi:
  19. Me.ID_String.DefaultValue = "'" & IDstr & "'"
  20. Rs.Close
  21. Set Db = Nothing
  22. End Sub

pmiroslav 17.12.2010 23:13
Predmet:Re: Autonumber se ponavlja

Ispravio sam funkciju kako si rekao i primječujem da mi se sada popuni tablica ali polje u formi ostaje prazno, pa to malo zbunjuje.

zxz 17.12.2010 23:17
Predmet:Re: Autonumber se ponavlja

Mozda imas format na polju. To sam probao kada si drugi puta poslao i sve radi.
Mada ti to polje i nemora biti vidljivo.
Ako ne uspijes zakaci opet.
.

pmiroslav 17.12.2010 23:31
Predmet:Re: Autonumber se ponavlja

Nemam format na polju, ali ipak ne radi.
JoÅ¡ me zanima Å¡to će se desiti ako pronjenim ID polje u glavnoj tablici, a u aplikaciji ima puno Querya u kojima su postavljene veze na postojeće ID polje. Pa isto tako sa formama koje su vezane za tu tablicu. A ima i dosta funkcija koje se pozivaju na taj ID.
Prilozi:
PrimjerID_4.rar (Velicina datoteke:79.77 KB)

zxz 17.12.2010 23:41
Predmet:Re: Autonumber se ponavlja

Vjerovatno mislis na tvoj autonumber.
neznam kakve funkcije imas jer on se automatski upisivao. Mozda na after update.
Svejedno sve funkcije mozes prenijeti na ovo novo polje kada zazivi.