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

Pozivanje querya iz procedure?

[es] :: Access :: Pozivanje querya iz procedure?

[ Pregleda: 2952 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rribaric
romano ribarić
rijeka

Član broj: 31410
Poruke: 165
*.net.htnet.hr



Profil

icon Pozivanje querya iz procedure?07.10.2004. u 16:43 - pre 207 meseci
DoCmd.SetWarnings (False)
tSQL = " SELECT komitenti.* INTO edupla "
tSQL = tSQL & "FROM komitenti "
tSQL = tSQL & " ORDER BY naziv ;"
DoCmd.RunSQL (tSQL)


Imam ovaj sql izraz u proceduri .Ponavlja mi se na više mjesta.
Dali je bolje da ga upišem u queryu i onda pozivam iz procedure ili da ga ovako ostavim u kodu.
Dali to utječe na veličinu baze.
I kako pozivat ovaj query iz procedure?????

romano
 
Odgovor na temu

JogyII

Član broj: 29257
Poruke: 623
*.SMIN.panline.net.



Profil

icon Re: Pozivanje querya iz procedure?07.10.2004. u 17:25 - pre 207 meseci
pa ako ti se javlja na vise mesta mozda je najbolje da odvojis u posebnu proceduru :
(Skracena verzija)
Code:

Public Function UbaciKomitente(Optional GdeUbaciti AS String = "edupla")
Dim tSQL As String
    tSQL = " SELECT * INTO [" & GdeUbaciti & "] " _
         & " FROM komitenti " _
         & " ORDER BY naziv; "
    call CurrentDB.Execute(tSQL, dbFailOnError)
End Function

(isto to samo sa jos nekim standardnim stvarcicama)
Code:

Public Function UbaciKomitente(Optional GdeUbaciti AS String = "edupla") As String
Dim tSQL As String
ON Error Goto ERR_UbaciKomitente

    tSQL = " SELECT * INTO [" & GdeUbaciti & "] " _
         & " FROM komitenti " _
         & " ORDER BY naziv; "
    call CurrentDB.Execute(tSQL, dbFailOnError)

Exit Function
ERR_UbaciKomitente :
    UbaciKomitente = Err.Description
End Function


ovakvu funkciju pozoves sa UbaciKomitente() kada treba da ubacis u tabelu edupla poredjane komitente, a sa UbaciKomitente("NekiNazivTabele") kada treba da ubacis u tabelu koja se zove NekiNazivTabele

par stvari :
- umesto kombinacije SetWarnings (False) / DoCmd.RunSQL (tSQL) / SetWarnings (True) treba napisati samo CurrentDB.Execute(tSQL, dbFailOnError), i neces dobijati upozorenja (mozes cak da napises samo Execute(tSQL)), plus zauzvrat dobijas dodatnu fleksibilnost ako recimo radis sa vise baza istovremeno u kodu

- oblik
Code:

    tSQL = " SELECT * INTO [" & GdeUbaciti & "] " _
         & " FROM komitenti " _
         & " ORDER BY naziv; "

je obicno citljiviji od
Code:

tSQL = " SELECT komitenti.* INTO edupla "
tSQL = tSQL & "FROM komitenti "
tSQL = tSQL & " ORDER BY naziv ;"

(ustvari najbolje je koristiti kombinaciju ta dva kada recimo radis sa subquerijima)

- u produzenoj verziji imas i error handling (koji naravno moze da se radi na dosta nacina, ovo je samo jedan od njih)

- broj querija koje sacuvas utice zanemarljivo na velicinu baze
- ako se ipak odlucis da pozivas staticki (sacuvan) query to radis ovako
Code:

Call CurrentDb.QueryDefs("ImeTvogQuerija").Execute(dbFailOnError)

ili kraca opcija koju ne preporucujem
Code:

Call QueryDefs("ImeTvogQuerija").Execute()



So Long, and Thanks for All the Fish


 
Odgovor na temu

Simke
Marko Simic
Sandfield Associates (Solution
Developer)
Novi Zeland

Član broj: 1158
Poruke: 751
*.dialup.xtra.co.nz

ICQ: 71578686
Sajt: www.sandfield.co.nz


Profil

icon Re: Pozivanje querya iz procedure?08.10.2004. u 06:32 - pre 207 meseci
Nebi trebao da imas query strings koje pravis u kodu, vec bi trebao da korists querys za sve. Onda za izvrsavanje query-ja koristi Qerydef objekat.
All beer is good. Some beer is better.
 
Odgovor na temu

rribaric
romano ribarić
rijeka

Član broj: 31410
Poruke: 165
*.net.htnet.hr



Profil

icon Re: Pozivanje querya iz procedure?08.10.2004. u 13:33 - pre 207 meseci
Kako da koristim Qerydef objekat?
Ima li još koji primjer !

romano
 
Odgovor na temu

JogyII

Član broj: 29257
Poruke: 623
*.SMIN.panline.net.



Profil

icon Re: Pozivanje querya iz procedure?08.10.2004. u 13:57 - pre 207 meseci
Iako se neslazem sa gosn. Simketom da treba praviti zasebne querije u bazi
vec sam ti dao kod pri kraju :
Code:

Call CurrentDb.QueryDefs("ImeTvogQuerija").Execute(dbFailOnError)

ili prostije
Code:

Call QueryDefs("ImeTvogQuerija").Execute()


naravno nadam se da netreba da ti objasnim kako da napravis query ImeTvogQuerija




So Long, and Thanks for All the Fish


 
Odgovor na temu

rribaric
romano ribarić
rijeka

Član broj: 31410
Poruke: 165
*.net.htnet.hr



Profil

icon Re: Pozivanje querya iz procedure?08.10.2004. u 15:33 - pre 207 meseci
Joggy II,Puno ti hvala na pomoći ovo funkcionira na osnovnom primjeru!Sviđa mi se ovaj način,pregledniji je i lakši za radit.
Malo me zbunio ovaj drugi odgovor.
Sve sam savladavam tako da mi treba više vremena ali trudim se.......!
Sad ću se malo pozabavit s time i prilagodit ovu proceduru svom codu.
Imam malo problema s prosljeđivanjem podataka u modul.I povratak nazad ali svladat ću i to.
Ako gdje zapnem javit ću!
romano
 
Odgovor na temu

JogyII

Član broj: 29257
Poruke: 623
*.SMIN.panline.net.



Profil

icon Re: Pozivanje querya iz procedure?08.10.2004. u 15:38 - pre 207 meseci
Nema na cemu, i drugi put

So Long, and Thanks for All the Fish


 
Odgovor na temu

rribaric
romano ribarić
rijeka

Član broj: 31410
Poruke: 165
*.net.htnet.hr



Profil

icon Re: Pozivanje querya iz procedure?08.10.2004. u 18:27 - pre 207 meseci
Public Function ftable()
Dim tSQL As String
Dim tb As DAO.Recordset
Dim db As DAO.Database
Dim br As Integer
UbaciKomitente ("edupla")
Set db = CurrentDb
Set tb = db.OpenRecordset("edupla")
tb.MoveFirst
br = -1
Do While Not tb.EOF
With tb
……

Iz ove procedure pozivam modul koji si mi napisao:
Public Function UbaciKomitente(Optional GdeUbaciti As String) As String
Dim tSQL As String
On Error GoTo ERR_UbaciKomitente

tSQL = " SELECT * INTO [" & GdeUbaciti & "] " _
& " FROM komitenti " _
& " ORDER BY naziv; "
Call CurrentDb.Execute(tSQL, dbFailOnError)

Exit Function
ERR_UbaciKomitente:
UbaciKomitente = Err.Description
End Function

Problem je sljkedeći:Ako tablica Edupla ne postoji ova procedura se izvršava bez zamjerke ,međutim problem nastaje kad nakon rada više puta pozivam proceduru iz modula Public Function UbaciKomitente(Optional GdeUbaciti As String) As String
Ta ista ne briše tablicu s podacima I ne radi novu.Jednostavno preskoči a podaci ostaju oni koji se prvi izvrše.
Zašto I što bi trebalo još dodat ?Dali sam ja nešto krivo napravio.
Kad sam radio ono s
DoCmd.SetWarnings (False)
tSQL = " SELECT komitenti.* INTO edupla "
tSQL = tSQL & "FROM komitenti "
tSQL = tSQL & " ORDER BY naziv ;"
DoCmd.RunSQL (tSQL)
To isto je izvršavalo.
To su mi u biti pomoćne tablice za izvršenje koda.I potrebno ih je više puta upisat I izbrisat.To jest izvršit obradu podataka!

romano
 
Odgovor na temu

Simke
Marko Simic
Sandfield Associates (Solution
Developer)
Novi Zeland

Član broj: 1158
Poruke: 751
*.dialup.xtra.co.nz

ICQ: 71578686
Sajt: www.sandfield.co.nz


Profil

icon Re: Pozivanje querya iz procedure?09.10.2004. u 01:20 - pre 207 meseci
Ako ti se upit ponavlja na vise mesta u kodu, onda bi stvarno trebao da ga stavis u query. Ako treba da promenis taj upit, menjas ga onda na samo jednom mestu, a ne na vise. Sta ako se ponavlja 5 puta, ti ga promenis na 4 mesta i zaboravis jedno?

All beer is good. Some beer is better.
 
Odgovor na temu

JogyII

Član broj: 29257
Poruke: 623
*.SMIN.panline.net.



Profil

icon Re: Pozivanje querya iz procedure?11.10.2004. u 12:30 - pre 207 meseci
ako ga ubaci u jednu funkciju/proceduru onda treba samo na tom jednom mestu da promeni, a tu funkciju/proceduru moze na vise mesta da poziva.

a sto se tice brisanja, samo pre pozivanja funkcije za kreiranje pozovi ovu za brisanje
Code:

'Drop Object funkcija treba poveca citljivost koda, i smanji mogucnost greske - ocigledno je sta radi
Public Function DrOb(DatabaseObjectToDelete As String, Optional ObjectType As AcObjectType = acTable, Optional AutoResume As Boolean = True)
On Error GoTo ERR_DrOb
    If DatabaseObjectToDelete <> "" Then Call DoCmd.DeleteObject(ObjectType, DatabaseObjectToDelete)
    Exit Function
ERR_DrOb:
If AutoResume Then
    Resume Next
Else
    DoCmd.Close acForm, "sacekajte"
    MsgBox "Greska!" & Chr(13) & Err.Description, vbInformation, "Upozorenje!!!"
End If
End Function



poziva se sa
Code:

Call DrOb("edupla")

znaci stavi sledeci kod u onu funkciju (nezaboravi da i kod za DrOb ubacis u neki modul) :


Code:

Public Function UbaciKomitente(Optional GdeUbaciti As String) As String
Dim tSQL As String
On Error GoTo ERR_UbaciKomitente

  Call DrOb(GdeUbaciti)
  tSQL = " SELECT * INTO [" & GdeUbaciti & "] " _
       & " FROM komitenti " _
       & " ORDER BY naziv; "
  Call CurrentDb.Execute(tSQL, dbFailOnError)

Exit Function
ERR_UbaciKomitente:
UbaciKomitente = Err.Description
End Function


kod mene tako radi, javi dali je uspelo.

So Long, and Thanks for All the Fish


 
Odgovor na temu

rribaric
romano ribarić
rijeka

Član broj: 31410
Poruke: 165
*.net.htnet.hr.



Profil

icon Re: Pozivanje querya iz procedure?11.10.2004. u 16:18 - pre 207 meseci
Funkcionira!
Hvala!
Malo me zbunjuje to : »što kad sam u proceduri stavio DoCmd.RunSQL (tSQL) naredbu za iskaz tSQL=SELECT * INTO edupla FROM komitenti .Ista mi izvršava taj sql izkaz,bez obzira dali "edupla" postoji ili ne”. Za razliku od ovog coda koji neće da prebriše postojeću tabelu(preskače-ostavlja staru).Nego prvo zahtjeva da je obrišem a tek nakon toga je zapiše!
To me malo zbunjuje.Ako znaš u čemu je kvaka volio bih da mi još to odgovoriš.

Inače ovaj kod ti je izvrstan.Oduševio me je I nadalje ću ga koristit jer je jako pregledan I smanjuje mogućnost greške a I kod izmjene konstrukcije koda lako ga se prilagođava!
Sad ću ga prilagodit I za druge querye!: )
Sve u svemu SUPER!Puno bi hvala na trudu!

Inače sam radio mali programčić za pretraživanje unutar listboxa i pozicioniranje na traženi kriterij ili prvi manji!To će mi koristit kao jedan univerzalni šifrarnik(komitenti,radnici ,idr….)
Malo me namučilo a i brdo querya sam morao napisat.Sad ću to malo prilagodit!








romano
 
Odgovor na temu

[es] :: Access :: Pozivanje querya iz procedure?

[ Pregleda: 2952 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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