Centar za edukaciju-BiH



#1 22.09.2011 07:56
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Razika između Last i Max funkcije
U bazi koristim slijedeću proceduru za zamjenu Autonumber-a o kojoj smo prije raspravljali:
PreuzmiIzvorni kôd (vbnet):
  1. Function SifraN()
  2.  
  3. Dim DB As Database
  4. Dim SQL As String
  5. Dim Rs As Recordset
  6. Dim I As String
  7.  
  8. Set DB = CurrentDb
  9. SQL = "SELECT Last(PROCES.ID) AS LastOfID " & "FROM PROCES"
  10. Set Rs = DB.OpenRecordset(SQL)
  11. If Format$(Rs.Fields(0)) <> "" Then
  12. I = Val(Rs.Fields(0))
  13. End If
  14. I = I + 1
  15. SifraN = Format(I, "0000000")
  16. Rs.Close
  17. Set DB = Nothing
  18.  
  19. End Function

Do jučer je sve radilo kako treba i onda odjednom se podatak ID počeo odjednom duplirati.

nakon Å¡to sam u dijelu funkcije:
SQL = "SELECT Last(PROCES.ID) AS LastOfID " & "FROM PROCES"
Last promjenio u Max sada sve opet radi kako treba:

Napravio sam i dva query-a sa Last i Max i oni mi ne daju isti rezultat.
Zanima me u čemu je razlika između Last i Max.
Pozdrav
↑  ↓

#2 22.09.2011 09:49
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Razika između Last i Max funkcije
Last je zadnji uneseni.
Max je najveci.

Last je sigurnije i ja nikada nisam imao problema. Problemi mogu naici ako se mijenja sifra, sto znaci da ivrsimo izmjenu neke sifre koja nije zadnja.

Sad ako je polje brojcano PROCES.ID i sa max nebi trebalo biti problema.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 22.09.2011 10:02
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Razika između Last i Max funkcije
Polje nije brojčano več tekst u obliku 0012395.
Access baza u kojoj radi podljeljena je na Front i Back i u međuvremenu sam primjetio da kada sam napravoi Compact BackEnd dijela da su mi se ID podaci opet počeli ponaÅ¡ati normalno.

Sada je problem da se ovo viÅ¡e nebi deÅ¡avalo, kako raditi Compact BackEnd dijela baze kada se on obično ne otvara več se otvara samo FronEnd dio baze,
Pozdrav
↑  ↓

#4 22.09.2011 10:29
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Razika između Last i Max funkcije
Pa uvijek se radi kompakt BackEnd, FronEnd je valčjda aplikacija i kodom i nemozes uraditi kompakt jer je podignuta.
Svi podaci su u BackEnd.
Mozes jos promijeniti ovo:
SELECT Last(PROCES.ID) AS LastOfID " & "FROM PROCES"
u
SELECT Max(Val(PROCES.ID)) AS Najveci FROM PROCES"
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 22.09.2011 10:33
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Razika između Last i Max funkcije
PreuzmiIzvorni kôd (Visual Basic):
  1. Function Kompakt()
  2. Dim StaroIme As String
  3. Dim NovoIme As String
  4.  
  5. 'On Error Resume Next
  6.  
  7. StaroIme ="Imesa putanjom do be baze"
  8. NovoIme = "Putanjadobebaze "\Nova.mdb"
  9.    If Dir(NovoIme) <> "" Then _
  10.        Kill NovoIme
  11.    DBEngine.CompactDatabase StaroIme, _
  12.        NovoIme
  13.        Kill StaroIme
  14.        Name NovoIme As StaroIme
  15. MsgBox "Baza je servisirana"
  16. End Function

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

#6 22.09.2011 13:23
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Razika između Last i Max funkcije
Tražio sam malo sa Googlom i naÅ¡ao slijedeču funkciju koja je interesantna jer sa njome se može:
1) Izraditi backup kopiju baze
2) Napraviti kompakt baze i preimenovati je
3) Napraviti samo kompakt baze

PreuzmiIzvorni kôd (vbnet):
  1. Public Sub Compact_MDB(()
  2. Dim PutanjaBaze As String, staroImeBaze As String, novoImeBaze As String, DbBackup As String
  3. Dim Response As Integer, fs As Object
  4. PutanjaBaze = Application.CurrentProject.Path
  5. staroImeBaze = "Proces_be" & ".mdb"   ' ovdje staviti ime svoje baze, putanja nije potrebna
  6. novoImeBaze = "Proces_BeNew" & ".mdb"
  7. DbBackup = Mid(staroImeBaze, 1, Len(staroImeBaze) - 4) & "_" & Format(Date, "mmddyy") & ".mdb"
  8. Response = MsgBox("Želite li napraviti Back-Up kopiju ove baze koja e se zvati " & vbCrLf & "'" & DbBackup & "'", vbYesNo, "Continue")
  9. If Response = vbYes Then
  10. Set fs = CreateObject("Scripting.FileSystemObject")
  11. fs.CopyFile PutanjaBaze & "\" & staroImeBaze, PutanjaBaze & "\" & DbBackup
  12. Set fs = Nothing
  13. Else
  14. If MsgBox("Želite li uraditi kompakt ove baze i preimenovati je kao " & vbCrLf & "'" & novoImeBaze & "'", vbYesNo, "Continue") = vbYes Then
  15. Set fs = CreateObject("Scripting.FileSystemObject")
  16. fs.CopyFile PutanjaBaze & "\" & staroImeBaze, PutanjaBaze & "\" & DbBackup
  17. DBEngine.CompactDatabase PutanjaBaze & "\" & DbBackup, PutanjaBaze & "\" & novoImeBaze
  18. Kill PutanjaBaze & "\" & DbBackup
  19. Set fs = Nothing
  20. Else
  21. If MsgBox("Želite li uraditi samo kompakt ove baze?", vbYesNo, "Continue") = vbYes Then
  22. CommandBars("Menu Bar"). _
  23. Controls("Tools"). _
  24. Controls("Database utilities"). _
  25. Controls("Compact and repair database..."). _
  26. accDoDefaultAction
  27. Else
  28. DoCmd.CancelEvent
  29. End If
  30. End If
  31. End If
  32. End Sub

Pozdrav
Ovaj post je ureden 2 puta. Posljednja izmjena 22.09.2011 13:24 od strane pmiroslav. ↑  ↓

#7 22.09.2011 13:27
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Razika između Last i Max funkcije
Mogao si je staviti i u koristan kod.
Jedina moja neka zamjerka je jer radi preko menija compact.
Za one koji hoce raditi compakt trenutno podignute baze je jedino rjesenje.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 22.09.2011 13:44
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Razika između Last i Max funkcije
Citiraj zxz:
Za one koji hoce raditi compakt trenutno podignute baze je jedino rjesenje.
U tome i jest stvar. Jer na moj BackEnd znaju biti prikvačena i 4-5 korisnika pa se onda ne možeÅ¡ niÅ¡ta raditi na bazi.
Pa me zanima što se dešava ako se radi Kompat baze, a neki od korisnika radi sa njom?
Pozdrav
↑  ↓

#9 22.09.2011 15:04
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Razika između Last i Max funkcije
Mozes na 2 nacina.
Jedan je da provjeravas jeli koji korisnik nakacen te ako nije tada uraditi.
Mislim da negdje ima i procedura koja provjerava jeli koji korisnik nakacen na bazu.
Drugi nacin je da ostavis jedno polje u bazi u nekoj od tabela napr. provjera.
Ta tabela moze imati samo jedan red podataka. Ja napr. imam takvu tabelu gdje upisujem podatke o korisniku programa.

Sada u to polje kada pokrenes compakt upises napr beoj 1.
Sve app. provjeravju non stop ovu vrijednost te ako nadju 1 izbaci se msg box da ce se napr. za 3 min. app. zatvoriti.
Pri zatvaranju se pise u ovo polje 1+1 =2 sledeci 2+1=3 itd.
Kada se sve zatvore odradi se compakt.

Da napomenem.
Nemora se app. cijela zatvoriti, samo je bitno da se ne koriste tabele iz udaljene baze.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 10: 59 pm.