Centar za edukaciju-BiH



#21 23.02.2014 19:21
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Relink sa više kompjutera
Aha ok postavit cemo opcionalnu variablu pa kad je ukucas da ti ponudi novu putanju.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#22 23.02.2014 20:54
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Relink sa više kompjutera
Evo prepravljena procedura pa probaj.
PreuzmiIzvorni kôd (Visual Basic):
  1. Function Relink_Godina(Godina As String)
  2. Dim Db As Database
  3. Dim Rs As Recordset
  4. Dim Tdf As TableDef
  5. Dim SQL As String
  6. Dim ImeTabele As String, Putanja As String
  7. Dim R As String
  8. Dim Link As Boolean
  9.  
  10. Set Db = CurrentDb
  11. SQL = "SELECT Database,Name FROM MSysObjects WHERE Database Like '*20??_be*' ORDER By Database"
  12. Set Rs = Db.OpenRecordset(SQL)
  13. Do While Not Rs.EOF
  14. ImeTabele = Rs!Name
  15. If Link = False Then
  16. Putanja = Rs!Database
  17. End If
  18. Putanja_Godina Putanja, Godina
  19. Set Tdf = Db.TableDefs(ImeTabele)
  20. Tdf.Connect = ";DATABASE=" & Putanja
  21. err = 0
  22. On Error Resume Next
  23.     Tdf.RefreshLink
  24.     If err <> 0 Then
  25.     Dim iResponse As String
  26.     R = MsgBox("Ne postoji baza na putanji:" & vbCrLf & Putanja & vbCrLf & _
  27.     "Nova putanja?  ", vbOKCancel + vbExclamation + vbApplicationModal + vbDefaultButton1, Putanja)
  28.           If R = vbOK Then
  29.            Link = True
  30.            Putanja = NadjiBazu("")
  31.           Else
  32.           Exit Function
  33.           End If
  34.        
  35.     End If
  36. Rs.MoveNext
  37. Loop
  38. MsgBox "Linkovana:" & vbCr & Godina & "_ta godina"
  39. End Function
  40.  
  41. Function Putanja_Godina(Baza As String, LinkGodina As String)
  42. Dim Polozaj As Integer
  43.  
  44. Polozaj = InStr(1, Baza, "_be.mdb") - 4
  45. Mid(Baza, Polozaj) = LinkGodina & "_be.mdb"
  46. End Function

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

#23 23.02.2014 21:09
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Relink sa više kompjutera
Greška: Sub or Function not defined
na liniji
Putanja = NadjiBazu("")
Pozdrav
↑  ↓

#24 23.02.2014 21:12
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Relink sa više kompjutera
hehe pa to je tvoj modul u kome se nalazi ta procedura kojoj si ti dao ime.
modLinkovanje
Mozda ga nemas u toj bazi.
Ja nisam nista tu htio mijenjati jer pretpostavljam da to koristis i to sam i ja koristio u svim ovim procedurama.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#25 23.02.2014 21:40
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Relink sa više kompjutera
Citiraj zxz:

Ovu proceduru trebas pozvati pri podizanju baze.
Netrebaju ti vise tvoje procedure:
RelinkTables1
RefreshLinks1
ProvjeraLinka
IsLinked

Ovo si mi napisao prije pa sam to obrisao iz ove baze sa kojom isprobavam. Našao sam te funkcije i sada je OK.
Pozdrav
↑  ↓

#26 23.02.2014 21:50
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Relink sa više kompjutera
Modul ti treba ali ti netrebaju procedure koje sam napisao.
U tom modulu imaju procedure za otvaranje prozora.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#27 25.02.2014 13:31
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Relink sa više kompjutera
Da se vratimo na Funkciju Relink2() i problemu sa greÅ¡kom koja se javaljala (o tome smo raspravljali do posta #14). NaÅ¡ao sam problem, a bio je u tome Å¡to mi dvije tablice imaju naziv od dva odvojena stringa (Nacin Placanja i Nacin Isporuke). Znam da je to početnička greÅ¡ka ali to je ostalo od ranije i taj naziv vuče se u dosta Querya i funkcija pa mi je problem to ispraviti. Možemo li onda u funkciji Relink2 napraviti neku promjenu da se može koristiti takav string. Koliko sam primjetio ovo se odnosi na dio

ImeTabele = Rs!Name
Set Rst = Db.OpenRecordset("SELECT * FROM " & ImeTabele & " WHERE False<>False")

jer se ovdje procedura zaustavi.
Pozdrav
↑  ↓

#28 25.02.2014 14:17
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Relink sa više kompjutera
Set Rst = Db.OpenRecordset("SELECT * FROM [" & ImeTabele & "] WHERE False<>False")
Treba staviti u srtednje zagrade.
Moja greska i navika.
Nikad ne pravim ime sa dvije rijeci tako da sam naucio da ne kucam zagrade u imenu tabele.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#29 26.02.2014 16:02
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Relink sa više kompjutera
Sta bi sa ovim.
Mozda ne funkcionise.
Nisam ja puno gledao samo dao odgoc+vor pa ako ne radi da pogledam.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#30 27.02.2014 10:31
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Relink sa više kompjutera
Ovo sada radi, ali još nisam zadovoljan jer ne mogu uvijek birati putanju, a to mi treba.
Zato sam pokušao nešto napraviti sam pa sam napravio tablicu 'tblPutanja' sa poljema 'Putanja' u koje sam upisao putanje do baza koje me zanimaju.
Npr:
D:\Radno\Prodaja_2011_be.mdb
D:\Radno\Prodaja_2012_be.mdb
D:\Radno\Prodaja_2013_be.mdb
D:\Radno\Prodaja_2014_be.mdb
\\Server\RadneBaze\Prodaja_2011_be.mdb
\\Server\RadneBaze\Prodaja_2012_be.mdb
\\Server\RadneBaze\Prodaja_2013_be.mdb
\\Server\RadneBaze\Prodaja_2014_be.mdb

Zatim sam napisao kod:
PreuzmiIzvorni kôd (vbnet):
  1. Function Relink(Putanja As String)
  2. Dim db As DAO.Database
  3. Dim SQL As String
  4. Dim Rs As Recordset
  5. Dim ImeTablice As String
  6.  
  7. Set db = CurrentDb
  8. SQL = "SELECT Name FROM MSysObjects WHERE Database<>Null"
  9. Set Rs = db.OpenRecordset(SQL)
  10. DoCmd.Hourglass True
  11. Do While Not Rs.EOF
  12.     ImeTablice = Rs!Name
  13.     db.TableDefs(ImeTablice).Connect = ";DATABASE=" & Putanja
  14.     db.TableDefs(ImeTablice).RefreshLink
  15. Rs.MoveNext
  16. Loop
  17. Rs.Close
  18.  
  19. DoCmd.Hourglass False
  20. DoCmd.OpenQuery "Q_MsysObjects"
  21.  
  22. End Function

Pozivam ga iz forme na kojem je txtPutanja sa
Call Relink(txtPutanja)
To radi ali jako sporo, treba 3 - 4 minute da se relinkuje oko 40 tablica
Pozdrav
↑  ↓

Stranice (5):1,2,3,4,5


Sva vremena su GMT +02:00. Trenutno vrijeme: 5: 57 am.