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

Kako da startujem SQL izraz pomocju dugmeta na formi

[es] :: Access :: Kako da startujem SQL izraz pomocju dugmeta na formi

[ Pregleda: 2821 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

obradorriuss
Nikola Obradovic
CEO & Founder
NO SOLUTIONS
Novi Sad

Član broj: 30270
Poruke: 177
*.ptt.yu.

ICQ: 329831125
Sajt: www.nosolutions.rs


Profil

icon Kako da startujem SQL izraz pomocju dugmeta na formi19.02.2005. u 17:35 - pre 233 meseci
Ukoliko je neko pratio moje postove znace otprilike o cemu se radi ali ukratko da ponovim jos jednom.

Imam u formi polja PrijemnicaID, Datum, PoDokumentu i Dobavljac.
Imam i subformu koja sadrzi polja PrijemnicaID (preko ovog polja su spojena forma i subforma), SifraArtikla, NazivArtikla, Kolicina, JedinicnaCena, JedinicaMere, UKUPNO (ovo polje sam stavio da se izracunava kao [Kolicina]*[JedinicnaCena]).

U subformi sam imao opciju kada kursor napusti polje UKUPNO da mi se odigraju 3 stvari, a to izgleda ovako:

Private Sub UKUPNO_Exit(Cancel As Integer)
If Kolicina = 0 Or IsNull(Kolicina) Then
MsgBox "UNETI KOLICINU KOJA SE UNOSI U MAGACIN !!!"
Kolicina.SetFocus
Exit Sub
End If
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE [kartica] SET [kartica].[ulaz] = [kartica].[ulaz] + '" & Kolicina & "' WHERE (([kartica].[SifraPr]=" & NazivPr & "));"
DoCmd.RunSQL "UPDATE [kartica] SET [kartica].[MedjuVred] = [kartica].[MedjuVred] + '" & UKUPNO & "' WHERE (([kartica].[SifraPr]=" & NazivPr & "));"
DoCmd.RunSQL "UPDATE [kartica] SET [kartica].[TrCena] = (([kartica].[Kolicina]*[kartica].[NabCena])+[kartica].[MedjuVred]-[kartica].[MedjuOduz])/(([kartica].[kolicina]+[kartica].[ulaz])-[kartica].[izlaz])WHERE (([kartica].[SifraPr]=" & NazivPr & "));"

End Sub


Mene zanima, da li je moguce da obrisem ove SQL update izraze iz opcije UKUPNO_Exit i da postavim da mi se oni odigravaju kada kliknem na dugme "Dodaj" koje mi se nalazi u formi a ne u subformi.

To mi je potrebno jer za slucaj da pogresim nesto pri unosu kursor cim izadje iz polja UKUPNO on automatski vrshi sve to, a ja bi kad kliknem dugme DODAJ (na formi) da mi se pojavi MsgBox koji me pita da li zelim da dodam sve artikle u magacin, ukoliko zelim da odradi SQL izraze, a ukoliko ne zelim da ne radi nista, znachi postoji mogucnost izmene.

Mislim da bih ja znao odraditi ovaj deo sa MsgBox-om samo mi je problem kod ovog vezano za dugme DODAJ jer se sve to ne vrsi u samoj formi vecj u subformi.

Hvala unapred.
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
*.crnagora.net.



Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi19.02.2005. u 18:18 - pre 233 meseci
Koliko te ja kapiram tebi je jedini problem da pristupis poljima Kolicina i NazivPr i UKUPNO koji se nalaze u subformi, kada se nalazis u formi. To radis ovako:

Forms("ime_forme").[ime podforme].Form.[ime polja].Value

i te vrijednosti prosledjujes SQL izrazu.

Umjesto Forms("ime_forme") mozes da koristis Me kada se nalazis u formi na kojoj ti je dudme dodaj.

Inace bilo bi bolje da koristis objekat command za izvrsavanje SQL iskaza nego preko DoCmd.

Pozdrav



 
Odgovor na temu

obradorriuss
Nikola Obradovic
CEO & Founder
NO SOLUTIONS
Novi Sad

Član broj: 30270
Poruke: 177
*.ptt.yu.

ICQ: 329831125
Sajt: www.nosolutions.rs


Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi19.02.2005. u 19:10 - pre 233 meseci
Thx na brzom odgovoru,
evo sve varijacije sam isprobao i nikako da dobijem zeljeno resenje...

DoCmd.RunSQL "UPDATE [kartica] SET [kartica].[ulaz] = [kartica].[ulaz] + Me.[Dodavanje subform].Form.Kolicina.Value WHERE (([kartica].[SifraPr]=Me.[Dodavanje subform].[NazivPr].Value));"


I nikako necje...
Ja bih te zamolio ako ti nije problem da od mog recimo prvog izraza iz prvog posta napravis taj SQL statement kako bi trebao da izgleda, u principu najvaznije mi je da pristupim tim poljima ali ocigledno negde gresim a ne vidim gde je greska!


2. Mozes li napisati tu bolju opciju Command za RUNSQL da ne koristim DoCmd ??

Hvala
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
*.crnagora.net.



Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi20.02.2005. u 16:42 - pre 233 meseci
recimo ovako:

dim strsql as string
dim cmnd as new adodb.command

strsql = "UPDATE Kartica SET Ulaz = Ulaz + " + cstr(Me.[Ime tvoje podforme].Form.Kolicina.Value) + " WHERE SifraPr = " + cstr(Me.[Ime tvoje podforme].Form.NazivPr.Value)

with cmnd
.activeconnection = currentproject.connection
.commandtext = strsql
.commandtype = accommandtext (nesto tako ulavnom se pominje text)
.execute
end with
 
Odgovor na temu

obradorriuss
Nikola Obradovic
CEO & Founder
NO SOLUTIONS
Novi Sad

Član broj: 30270
Poruke: 177
*.panline.net.

ICQ: 329831125
Sajt: www.nosolutions.rs


Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi21.02.2005. u 02:01 - pre 233 meseci
Probao sam i sa tom funkcijom ali opet mi prijavljuje neku gresku....
Microsoft Office Access can't find the field '|' refered to in your expression.

Malo sam ispravio code jer mislim da necje raditi bez zagrada ali mi prijavljuje istu gresku

strsql = "UPDATE [Kartica] SET [Kartica].[Ulaz] = [Kartica].[Ulaz] + " + CStr(Me.[Dodavanje subform].Form.Kolicina.Value) + " WHERE SifraPr = " + CStr(Me.[Dodavanje subform].Form.NazivPr.Value)

Ubacio sam zagrade.... samo nije mi jasno zasto koristish znak + izmedju navodnika??
Ranije sam koristio znak &

Opet greska.......


 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
*.crnagora.net.



Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi21.02.2005. u 17:24 - pre 233 meseci
Pa plus radi isto kao i & koristi sta ti je god milije.

A sto se tice greske cini mi se da si nesto pogresno otkucao. Probaj [dodavanje_subform] umjesto [dodavanje subform]. Inace to mora da radi, malo se igraj.

Onda, zagrade koristis kad ti u okviru imena polja postoji prored ili neki od specijalnih simbola, inace ti ne treba. Isto tako ako ti sql upit vraca rezultate iz samo jedne tabele ne moras da ispred svako polja stavljas ime tabele. Pisanje sql upita se malo razlikuje u query buildery accessa i u VBA.

Pozdrav.
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi21.02.2005. u 17:59 - pre 233 meseci
A zasto uopste racunas i pamtis te vrednosti? Sve to mozes na reportu ili formi da pokazes upotrebom subkverija ili Dsum/Dcount funkcija. Mnogo se mucis i ti i program, a podaci ce vrlo brzo biti obezvredjeni nekom izmenom ili greskom. Svaka izmena u bilo kom rekordu u subformi baca sve prethodne kalkulacije u vodu.

:-)
 
Odgovor na temu

obradorriuss
Nikola Obradovic
CEO & Founder
NO SOLUTIONS
Novi Sad

Član broj: 30270
Poruke: 177
*.panline.net.

ICQ: 329831125
Sajt: www.nosolutions.rs


Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi21.02.2005. u 18:25 - pre 233 meseci
Radi se o tome da kada cenu unosim po jednoj ceni ne trebujem je iz magacina po toj istoj. Zato moram da pamtim sve te stvari jer u bazi mora da mi postoji tacna trenutna cena odredjenog artikla, jer kada se pisu trebovanja onda mi se treboju po toj tacnoj trenutnoj ceni! Napisao sam funkciju koja automatski kalkulishe trenutnu jedinicnu cenu nekog artikla i sada mi je neophodno da se ta trenutna cena nonstop nalazi u bazi tj. u tabeli kartica kao sto je kod mene slucaj! Zatim kada se trebuje iz magacina, automatski se na slichan nacin samo po unosu sifre ili artikla iz combo boxa dodeljuje jedinicna cena tog artikla i dalje se sve vrshi najnormalnije!
Mozda neko vidi i drugo resenje za sve to, ali ja ga ne vidim...
Sve mi za sada radi OK...
Samo kada bih mogao da mi se te funkcije odigravaju kada stisnem dugme DODAj koje je van subforme, tj. na glavnoj formi!
 
Odgovor na temu

slavko13

Član broj: 49045
Poruke: 41
*.243.EUnet.yu.



Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi21.02.2005. u 23:06 - pre 233 meseci
Imam formu Orders gde unosim otpremnice i subformu Orders subform gde unosim proizvode, sad hocu kad izadjem iz polja Quantity da mi u tabeli Products za taj proizvod doda u polju UnitsOnOrder ovu vrednost Quantity ali nemogu nikako.Ako ti nije tesko pogledaj sta radim, posto je slicno tvog primera a kod tebe radi, pa mi reci sta nevalja

Private Sub Quantity_Exit(Cancel As Integer)
DoCmd.RunSQL "UPDATE [Products] SET [Products].[UnitsOnOrder] = [Products].[UnitsOnOrder] + '" & Quantity & "' WHERE (([Order Details].[ProductID]=" & ProductName & "));"
End Sub
 
Odgovor na temu

obradorriuss
Nikola Obradovic
CEO & Founder
NO SOLUTIONS
Novi Sad

Član broj: 30270
Poruke: 177
*.panline.net.

ICQ: 329831125
Sajt: www.nosolutions.rs


Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi22.02.2005. u 13:28 - pre 233 meseci
Pazi ovako, prvo meni je polje "NazivPr" ComboBox koji mi ustvari prikazuje sva polja iz tabele kartica, samo sam mu ja stavio da su sve kolone shirine 0cm, a samo druga kolona (takav je slucaj kod mene) je sirine 2,54 cm...tako kada kliknem na combobox on mi prikaze samo naziv proizvoda ali u sushtini da nisam sakrio ostale kolone, program bi tom polju dodelio ustvari sifru npr. 1. Nadam se da si me razumeo za ovo.

E sada druga stvar koju mislim da greshis je sledeca:
Citat:

Private Sub Quantity_Exit(Cancel As Integer)
DoCmd.RunSQL "UPDATE [Products] SET [Products].[UnitsOnOrder] = [Products].[UnitsOnOrder] + '" & Quantity & "' WHERE (([Order Details].[ProductID]=" & ProductName & "));"
End Sub


Ti kao updatujes tabelu "Products" i u toj tabeli polje "UnitsOnOrder" i izraz ti je skroz dobar do
Citat:
WHERE (([Order Details].[ProductID]=" & ProductName & "));"


Naime ti treba da updatujes ProductID u tabeli Products a ne u tabeli "Order Details" !
Bar sam ja tako uradio.
znachi tvoja cela funkcija bi trebala da izgleda ovako (ako i samo ako imas ta polja u toj tabeli ):

Private Sub Quantity_Exit(Cancel As Integer)
DoCmd.RunSQL "UPDATE [Products] SET [Products].[UnitsOnOrder] = [Products].[UnitsOnOrder] + '" & Quantity & "' WHERE (([Products].[ProductID]=" & ProductName & "));"
End Sub



Aj probaj pa javi...
 
Odgovor na temu

slavko13

Član broj: 49045
Poruke: 41
*.17.EUnet.yu.



Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi22.02.2005. u 14:05 - pre 233 meseci
Prijavljuje mi gresku
Run-time error `3075`:
Syntax error (missing operator) in qery expression
`(([Products].[ProductID]=ProductName))`
isto mi je kao kod tebe ProductID Combo box, ako ti nije problem pojasni mi ovaj drugi deo naredbe, sta on u stvari radi, posto je u njemu problem.(Jas am pocetnik, imam knjigu Acces 200, sta mi drugo preporucujes.)
 
Odgovor na temu

obradorriuss
Nikola Obradovic
CEO & Founder
NO SOLUTIONS
Novi Sad

Član broj: 30270
Poruke: 177
*.panline.net.

ICQ: 329831125
Sajt: www.nosolutions.rs


Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi22.02.2005. u 14:42 - pre 233 meseci
Ja isto imam knjigu Access 2000, ali veruj mi najvishe sam naucio tako sto sam sam chachkao i iz raznih problema i primera sa ovog sajta, tj. foruma. Isto tako imas odlichne primere i funkcije na www.mvps.org, isto tako bio sam prijavljen na Experts-Exchange forum ali ti se on placja oko 12$ mesecno....Ne znam koliko radis, da li zaradjujes nesto pa ako imas mogucjnosti i sredstva ti uplati i tamo jedan nalog.
Mada, ovde ima mnogo struchnih ljudi od kojih bi najpre izdvojio ZIDARA (nash Wizzard) koji je do sada resavao nase neresive probleme!

E sad chek da vidimo sta radi taj deo...
(([Products].[ProductID]=ProductName))

Naime deo SQL izraza WHERE (([Products].[ProductID]=" & ProductName & "));" ti u stvari govori kako da updatuje tj gde da updatuje tvoje podatke...
Znachi on ti updatuje ono polje Quantity sto si imao, za onaj proizvod koji si izabrao iz ComboBoxa. Npr. prevod onog tvog SQL izraza bi bio:
Private Sub Quantity_Exit(Cancel As Integer)
DoCmd.RunSQL "UPDATE [Products] SET [Products].[UnitsOnOrder] = [Products].[UnitsOnOrder] + '" & Quantity & "' WHERE (([Products].[ProductID]=" & ProductName & "));"
End Sub

Kada kursos napusti polje "Quantity" uradi sledece:
Startuje se SQL code koji updatuje (azurira) tabelu "Products" gde je polje"UnitsOnOrder" u toj tabeli = prvobitna vrednost tog polja + Kolicina koju unosish u magacin (to je tvoje polje "Quantity"), ali za proizvod koji je jednak tom proizvodu koji si izabrao oz ComboBoxa (ProductName u tvom slucaju). Taj zadnji deo za WHERE ti je to sto sam zadnje napisao.
Problem moze biti po mom misljenju u 2 stvari:
1. Proveri da li si imena tabele i polja u njima dobro napisao i proveri da li sva ta polja (Quantity, ProductID i UnitsOnOrder) postoje u tvojoj tabeli "Products"

2. Nemoj stavljati da ti se taj SQL update izraz startuje kada kursor napusta polje "Quantity" vecj mozda neko drugo polje koje imas u subformi a koje je posle tog polja. Ili stavi da se to odigrava After update....... Mozda ovo nema nikakve veze ali probaj ako ne uspesh pod brojem 1 sto sam ti napisao!

Veseli pozdrav

 
Odgovor na temu

slavko13

Član broj: 49045
Poruke: 41
*.132.EUnet.yu.



Profil

icon Re: Kako da startujem SQL izraz pomocju dugmeta na formi22.02.2005. u 16:54 - pre 233 meseci
Polje Quantity unosim u Subformi a u stvari ti podaci se unose u Tabelu "Order Details" i nepostoji u tabeli ProductS.Tabele Products i "Order Details" su povezane preko polja ProductID.
 
Odgovor na temu

[es] :: Access :: Kako da startujem SQL izraz pomocju dugmeta na formi

[ Pregleda: 2821 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

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