Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem sa linkovanjem

[es] :: Access :: problem sa linkovanjem

[ Pregleda: 2594 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

niknen

Član broj: 69798
Poruke: 67
*.beogrid.net.



Profil

icon problem sa linkovanjem19.04.2007. u 13:47 - pre 207 meseci
kako da napravim da kada promenim mesto linkovane baze aplikacija me pita npr izaberi mesto gde se nalazi baza. A kada ponovo ulazimo u aplikaciju da ako sam namestio novu lokaciju da me ne pita opet da izaberem lokaciju nego da proveri pa ako je lokacija dobra otvori formu a ako nije da mi opet izbaci msgbox da izaberem mesto gde se nalazi baza.

p.s; gledao sam na forumu ali mi nije bas najasnije pa sam zato okacio svoj primer ako neko moze da mi objasni na mom primeru hvala svima unapred pozdrav!
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: problem sa linkovanjem19.04.2007. u 15:03 - pre 207 meseci
Da malo preformulisemo zahtev:

1) Imas aplikaciju u jednom MDB fajlu i podatke u drugom (back end). tako i treba :-)
2) Lokacija back enda se ponekad menja
3) Kad se promeni lokacija back enda, aplikacija to ne zna i ne moze da koristi linkovane tabele
4) Ako j3 3) tacno, zelis da aplikacija prepozna situaciju i da trazi da pokazes lokaciju back enda

Im dva pristupa:
1) pri svakom startovanju aplikacije, trazi da korisnik pokaze gde je back end [pa se onda linkuju sve table, trebalo ne trebalo. Ako ti se back end cesto seli sa mesta na mesto, onda ovo nije tako losa opcija.

2) Aplikacija proveri na startu da li postoje tabele iz kojih se mogu citati podaci. Ako ne psotoje (zato sto se back end preselio) onda usmeri korisnika na formu sa koje se startuje proces pronalazenja back enda i linkovanje.

Za opciju 2) pretpostavis da ako je jedan tabela linkovana dobro onda su sve linkovane dobro. Treba ti nekakva funckija koja proverava da li je moguce citati iz neke table. Izaberes neku linkovanu tabelu, bilo koju, i napravis kveri "SELECT * FROM myTable WHERE 1=2" Ono 1=2 naravno nikad nije tacno i tvoj kveri ce vratiti prazan set ako je tabela linkovana, ili ce doci do RUN TIME ERROR. funkciji ulovis gresku, pa ako ima greske funkcija vrati jedan rezultat, a ako nema greske funkcija vrati drugi rezultat. Zavisno od rezultata, aplikacija ce pozvati formu za linkovanje ili ce nastaviti normalno sa radom.

Funkcija izgleda otprilike ovako (pseudo kod, cut/paste nece pomoci):


Function IsBackendAvailable() as Boolean
'Funkcija proverava da li je back end tamo gde je bio poslednji put
'Funkcija naravno moze da bude u modulu, a moze i u form-modulu
'startup forme

On Error Goto ERROR_HANDLING

DoCmd.OpenQuery "Tvoj kveri koji kaze SELECt * FROM nekatablea WHERE 1=2"
'Ako je back end premeste, OpenQuery ce da izazove gresku
'i egzekucija programa ida na ERROR_HANDLING, gde ce IsBackendAvailable
'da bude setovano na FALSE

'do ove linije dolzai se samo ako nema runt-time error
IsBackendAvailable = TRUE

EXIT_HERE:
exit function

ERROR_HANDLING:
Select Case Err.Number
case X 'x je broj greske koju dobijes kad je back end premesten
msgbox "Back end je premesten"
IsBackendAvailable = FALSE
resume EXIT_HERE

End Select


End Function


Onda negde u start up formi, recima na OnOpen, ili na neko dugme koje se mora pritisnuti da se nastavi rad, stavis nesto ovako:

IF IsBackendAvailable=TRUE THEN
.. otvori prvu 'radnu' formu aplikacije
ELSE
.. otvori formu za linkovanje
ENDIF


Na formi za linkovanje, na OnClose, vratis se na start up formu ili ides na prvu radnu formu aplikacije.

Eto ti ideje, pa malo poradi na tome.

Predpostavljam da umes da otvoris file dialog box programski i da programski prelinkujes tabele. Ako ne umes, onda potrazi neku knjigu, predugacko je da na forumu objasnjavamo kako se to radi.



 
Odgovor na temu

niknen

Član broj: 69798
Poruke: 67
*.beogrid.net.



Profil

icon Re: problem sa linkovanjem19.04.2007. u 23:05 - pre 207 meseci
ok odprilike sam skapirao evo napravio sam da kada mi se otvori aplikacija da ako nije prepoznao putanju baze otvori formu da linkujem tabelu ali kako da napravim da kada je recimo tabela dobro linkovana da mi ne prikazuje tu formu za linkovanje nego otvori normalno tu moju glavnu formu na kojoj su podaci. Evo molim te pogledaj pa ako mozes da mi pomognes sa kodom koji treba da proveri da li treba ili ne pozdrav1
Prikačeni fajlovi
 
Odgovor na temu

niknen

Član broj: 69798
Poruke: 67
*.beogrid.net.



Profil

icon Re: problem sa linkovanjem20.04.2007. u 00:18 - pre 207 meseci
evo ovde gore sam ti okacio da vidis sta me muci! :-( Dakle radi mi to povezivanje sa linkovanim tabelama ali kada god otvorim program on me na pocetku pita da linkujem tabele kako mogu da uradim neku proveru pre otvaranja da ako su linkovane otvori glavnu formu e a ako nisu onda da mi izbaci ovu formu za linkovanje!!:-( Please help me zezam se sa ovim poludeo sam vise ne mogu da provalim! hvala ti unapred

[Ovu poruku je menjao niknen dana 20.04.2007. u 03:51 GMT+1]

[Ovu poruku je menjao niknen dana 20.04.2007. u 03:52 GMT+1]
 
Odgovor na temu

srdjan ub
-

Član broj: 25171
Poruke: 147
*.ptt.yu.



+1 Profil

icon Re: problem sa linkovanjem20.04.2007. u 09:42 - pre 207 meseci
Napraviš novi modul i u njega ubaciš kod:
Code:

Function IsLinked(strTableName As String) As Boolean
'Purpose: check if tables are linked OK
'strTableName - any of linked tables
'Returns = tRUE if all is OK, FALSE if relinking is needed
'Example:  ? IsLinked("tblRoba")

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim flgRetval As Boolean

On Error GoTo ERROR_HANDLER:
strSQL = "SELECT * FROM " & strTableName & " WHERE FALSE"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)
flgRetval = True

EXIT_HERE:
IsLinked = flgRetval
Exit Function

ERROR_HANDLER:
Select Case Err.Number
    Case 3024
        'do nothing, no message!
        '3024 is "Could not find the file ' ... where table strTableName is suposed to b
    Case Else
        MsgBox "IsLinked() ERROR " & Err.Number & vbCrLf & Err.Description
End Select
Resume EXIT_HERE

End Function

Zatim tu funkciju opozoveš recimo na OnOpen ulazne (logon) forme ili na neko dugme na formi, primer:
Code:
Private Sub Command0_Click()
    If IsLinked("tblTABELA") Then
        Call OpenForm("frmTABELA_koju pozivas")
    Else
        Call OpenForm("frmLinkovanje")
    End If
    DoCmd.Close acForm, Me.Name
End Sub


Pozdrav
 
Odgovor na temu

niknen

Član broj: 69798
Poruke: 67
*.beogrid.net.



Profil

icon Re: problem sa linkovanjem21.04.2007. u 12:16 - pre 207 meseci
uradio sam sve i nece da mi radi sto je najgore ne prijavljuje mi ni jednu gresku ne znam gde sam zeznuo stvar? Ti nije problem imas gore primen da mi na njemu objasnis?
 
Odgovor na temu

[es] :: Access :: problem sa linkovanjem

[ Pregleda: 2594 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.