[ notebookFun @ 29.04.2015. 21:17 ] @
Treba mi primjer kako da ovo izvedem.
Imam tabelu korisnici i uz pomoc Form carobnjaka je napravljena forma za unos korisnika. Pored TextBox-eva sam dodao dugme SAVE... Kako da iskljucim automatsko unosenje u tabelu nakon UPDATE TextBox-a?
Desava mi se da po nekad unesem pola polja i odem na X, i ta mi se polja unesu u tabelu a ja to ne zelim, jedino ako ja kliknem na SAVE...

Mozda neki kod da me pita kad zatvaram formu da li zelim da sacuvam, ako ne zelim da obrise sva polja iz trenutnog RECORD-a.



[ SLOJ.1973 @ 29.04.2015. 21:28 ] @
Napravis tabelu korisniciTemp(identičnu tabeli korisnici),nad njom napraviš formu za unos,umesto nad tabelom korisnici.Klikom na dugme SAVE, postavis pitanje tipa "Podaci su promenjeni,da li želite da ih sačuvate,bla bla bla" Ako je odgovor DA,sledi kopiranje podataka iz tabele korisniciTemp u tabelu korisnici.Ako je odgovor NE,obrišeš pomocu delete query-a podatke iz tabele Temp,a ako slučajno izadješ ,ili dodje do nestanka struje ,a nisi imao vremena da sačuvaš podatke,prilikom sledećeg startovanja forme,pojaviće ti se započeti podaci nad tabelom Temp,ali u tabeli Korisnici neće biti tog zapisa sve dotle dok ne okineš dugme SAVE. Nadam se da sam bio jasan.Pozdrav.
[ notebookFun @ 29.04.2015. 22:14 ] @
Ne svidja mi se taj tvoj primjer nikako...

Uspjeo sam uz pomoc ovog koda, ali se sad javio sledeci problem...Znaci ako kliknem na NO, meni se ne unese nista u tabelu ali mi se AutoNumber poveca za +1 iako nista nije uneseno.



Code:
Private Sub Form_BeforeUpdate(Cancel As Integer)
 
    If MsgBox("Da li zelite sacuvati promjene", vbInformation + vbYesNo) = vbNo Then
        DoCmd.RunCommand acCmdUndo
        
    Else
        DoCmd.RunCommand acCmdSave
    End If

End Sub
[ Getsbi @ 30.04.2015. 05:29 ] @
Polje AutoNumber se povećava čim se inicira novi zapis. Ukoliko želiš uređene vrednosti za to polje, bolja varijanta je da ga kontrolišeš sa običnim tipom Number.
[ notebookFun @ 30.04.2015. 12:50 ] @
Citat:
Getsbi: Polje AutoNumber se povećava čim se inicira novi zapis. Ukoliko želiš uređene vrednosti za to polje, bolja varijanta je da ga kontrolišeš sa običnim tipom Number.


Hvala Getsbi.

Onda bi najbolje da ostavim autonumber i da dodam jos number, e sad kako da mi se poveca za 1 number kad sacuvam record?
Hocu da svaki korisnik ima svoj serijski broj, taj broj cu staviti da bude tipa number i da se kada kliknem na save doda broj za jedan veci od predhodnog.
[ Getsbi @ 30.04.2015. 13:42 ] @
Prouči ovu temu: http://www.elitesecurity.org/t326221-0#1974247
[ nenadmarkoni @ 30.04.2015. 21:12 ] @
Imate primjer na ovom linku http://www.praktikum.rs/office/access/acc_106.asp
[ mkaras @ 30.04.2015. 23:33 ] @
Citat:
notebookFun:
Treba mi primjer kako da ovo izvedem.
Imam tabelu korisnici i uz pomoc Form carobnjaka je napravljena forma za unos korisnika. Pored TextBox-eva sam dodao dugme SAVE... Kako da iskljucim automatsko unosenje u tabelu nakon UPDATE TextBox-a?
Desava mi se da po nekad unesem pola polja i odem na X, i ta mi se polja unesu u tabelu a ja to ne zelim, jedino ako ja kliknem na SAVE...

Mozda neki kod da me pita kad zatvaram formu da li zelim da sacuvam, ako ne zelim da obrise sva polja iz trenutnog RECORD-a.


Probaj da nabaviš knjigu Access 2002 za programere (+ CD). Mikro knjiga je još uvek ima. Jeste da obrađuje verziju 2002 ali ima veoma korisnih principa koje mogu da se upotrebe i u verziji 2007 i u verzij 2010.

Primer dat u temi http://www.elitesecurity.org/t326221-0#1974247 je sa sigurnošću primenljiv samo u jednokorisničkom okruženju. U višekorisničkom može da napravi haos.
Preporučujem da pročitaš knjigu, da se upoznaš sa nekim principima rada pa tek onda da se baciš na rešavanje konkretnih problema.
[ SLOJ.1973 @ 01.05.2015. 07:11 ] @
Citat:
notebookFunNe svidja mi se taj tvoj primjer nikako...

Uspjeo sam uz pomoc ovog koda, ali se sad javio sledeci problem...Znaci ako kliknem na NO, meni se ne unese nista u tabelu ali mi se AutoNumber poveca za +1 iako nista nije uneseno.



Code:
Private Sub Form_BeforeUpdate(Cancel As Integer)
 
    If MsgBox("Da li zelite sacuvati promjene", vbInformation + vbYesNo) = vbNo Then
        DoCmd.RunCommand acCmdUndo
        
    Else
        DoCmd.RunCommand acCmdSave
    End If

End Sub

To sto se tebi ne svidja ne znaci da nije dobro,ili ne znas kako da odradis!? Eto,pronasao si kod,ali i dalje ne radi kako si zeleo.Veruj mi i ja sam imao isti problem,kada sam pocinjao ali ovo sto sam ti predlozio je jedino sto mi je omogucilo da ne brinem u vezi sa zapisima. Temp tabele su ZAKON.Radis sta hoces,i sve dok ne okines dugme SAVE, glavna tabela ti se ne menja.Auto number je takodje nezahvalna "stvarcica". Napravi brojac,nesto tipa nz(DMax("ID";"tblkorisnici")+1;1).
[ notebookFun @ 01.05.2015. 16:21 ] @
Ne svidja mi se to rjesenje jer bez veze opterecuje memoriju racunara. Zamisli da imam preko 50000 korisnika... Obrazlozi sto nece raditi dobro ovaj moj kod? Ako objasnis ja cu uvaziti tvoje misljenje...
Ima li neko da hoce da mi proda koriscenju knjigu Access 2002 za programere (+ CD)? Saljite na PVT, trenutno stanujem u NS-u...
[ nenadmarkoni @ 01.05.2015. 17:25 ] @
Ako imate 50000 korisnika vjerovatno cete koristiti neku od "jacih" baza podataka a moci cete i da platite za izradu aplikacije koja ce njome upravljati.
Moj savjet Vam je da slusate iskusnije sa ovog foruma jer su sigurno dobronamjerni u djeljenju svog iskustva. Temporary tabele ne mogu opterecivati memoriju. Kad je zapis u njima onda je vec upisan na disk. U dodjeljivanju rednog brojaca takodje se mozete pouzdano na nju osloniti. Kad kliknete Sacuvaj kod u pozadini prepise zapis u pravu tabelu a zapis u temp tabeli obrise. Vjerujem da je to pravi nacin, mada ako nemate velikih prohtjeva i onih par programskih linija vrsi funkciju.
[ notebookFun @ 01.05.2015. 19:51 ] @
Ako Getsbi podrzava vasu ideju sa Temp tabelom ja cu da napravim tako da radi... :)
[ Getsbi @ 01.05.2015. 21:09 ] @
Nisam ja baš toliki autoritet da ti treba moje odobrenje ili podrška.
Što se tiče temporary tabela podržavam ih. Još dok sam radio u Clipper-u, pre skoro 30 godina, sve što nisam znao da rešim ili mi je bilo poteško, koristio sam privremene tabele koje bih punio i praznio po potrebi. One neće mnogo da opterete sistem. Danas ih koristim manje jer se trudim da napravim pouzdan model.

Rešenje je svakako u korišćenju funkcije Nz(DMax()). Zato sam ti i dao onaj prvi link. Takođe treba voditi računa i o tome da li je aplikacija jedno-korisnička ili više-korisnička, što je Marko lepo primetio. Za konkurentne baze treba drugačiji pristup ali ja nisam iz tvojih poruka shvatio da se o njima radi. U svakom slučaju to moraš da naglasiš da kolege ne bi lutale u traženju rešenja. I još nešto:

Za adekvatan i brz odgovor uvek je dobro zakačiti fajl sa primerom rasterećenim od suvišnih podataka i objekata.
[ mkaras @ 02.05.2015. 02:03 ] @
@notebookFun: Upotrebom ADO modela upravljanja podacima dobijaš sve blagodeti pune kontrole bez upotrebe fizičkih privremenih tabela, bez update ili delete query-ja. Naravno, svaki ADO recordset je privremena tabela formirana u memoriji klijenta ( na računaru na kome se program izvršava). Upitom odabereš skup podataka koji obrađuješ, učitaš ga kod klijenta, obradiš ga na sve moguće i nemoguće načine i jednom prostom update ili cancel metodom snimiš ili odbaciš.

Dok se malo ne navikneš sve će ti biti čudno ali posle vrlo kratkog vremena ćeš se pitati kako si uopšte mogao da živiš bez toga.

Već sam ti dao link za knjigu, pročitaj je, više kao roman, da sagledaš sve mogućnosti koje ti se nude u programiranju a na koje sam, bez da ti neko ne ukaže na njih, teško da bi i pomislio kao na moguće rešenje. Ne može se sve naći u helpu pa čak ni u knjigama tipa biblija za ovo biblija za ono. Ovo je jedna od retkih knjiga koja može da posluži kao neka vrsta univerzalnog priručnika za pisanje programa za obradu podataka.

Kada sam se već raspisao o knjigama da pomenem i Whil Hentzen-a. Njegove knjige su pravi biseri programiranja. Vrede višestruko svaku paru datu na njih. Knjiga koju je davno napisao (maja 1995.g.) za VisualFox Pro 3.0 je i dan danas veoma primenljiva čak i programirajući u .NET alatima.
[ nenadmarkoni @ 02.05.2015. 09:27 ] @
@notebookFun, dajte tu tabelu sa par probnih zapisa pa da napravimo primjere na razne varijacije a onda odlučite koja je najbolja. Biće koristan primjer i za ostale....
[ nenadmarkoni @ 02.05.2015. 10:30 ] @
U prilogu najprostija varijanta gdje se unos kontroliše obaveznim poljima, u slučaju da se želi odustati dva puta pritisnete taster ESC. Primarni ključ je polje KorisnikID pa neće dozvoliti unos dvije iste vrijednosti i u pitanju je programerski stvoren AutoNumber. U slučaju da želite veću kontrolu nad njim samo omogućite Locked=No. Matični broj je indeksiran da ne dozvoli duplikate ali nije obavezan u unosu. Obavezna polja su ID, Ime i Prezime.
Ja sam za ovu varijantu jer što reče @Zoran.Eremija sve ostalo je ubijanje vola radi kilo mesa. :-)
Napravićemo i ostale primjere...
[ BiloKoje @ 03.05.2015. 09:02 ] @
@nenadmarkoni

Jedno pitanje. Vidim da si izračunavanje novog ID smestio u poseban TextBox, pa ga, kao DefauultValue preuzimaš kroz kod, zašto? Ako istu formulu, za vrednost nezavisnog TexBoxa stavimo kao DefaultValue polja ID, rezultat je isti, ako je se ne radi o novom zapisu, Default value se neće ni unositi, pa ne vidim potrebu da se kroz kod kontroliše kada je akada nije potrebno uneti podrazumevanu vrednost.
Ili nešto previđam?
[ nenadmarkoni @ 03.05.2015. 09:23 ] @
Prikazani nacin sam preuzeo od @ Zoran.Eremija ne sumnjajuci ni najmanje da on nije ispitao razloge ovakvog nacina. Nisam ispitivao, ali sigurno postoji razlog.
[ nenadmarkoni @ 03.05.2015. 14:54 ] @
Isprobano više varijacija i zaključak je da mora onako kako je postavljeno sa posebnim poljem i kodom koji ce dodjeljivati vrijednost. Nimam ni sumnjao.
[ nenadmarkoni @ 03.05.2015. 15:36 ] @
Varijanta 2 : Novi zapis se dodaje kroz formu KorisnikLista sa obaveznim poljima koja se zahtjevaju, dok se u formi za pregled i dodavanje podataka kontroliše svaka izmjena pri zatvaranju forme. Najbolja varijanta po meni. Toliko od mene, ako mogu neka ostali prikazu svoje nacine.
[ BiloKoje @ 03.05.2015. 16:08 ] @
Meni sve to ipak liči na savršeno rešenje za problem koji ne postoji.
Pristup koji sugeriše kolega mkaras, po mom mišljenju nema grešku, numeraciju vršimo kroz Default Value koju postavimo na polje forme, kontrolu da li su uneti obavezni podaci radimo na nivou tabele, postavimo osobinu required na Yes za ime, prezime i gde već treba.
Da bih koristio komlikovaniji put, postavljanje i kontrolu uslova kroz kod, očekujem valjan razlog jer, mislim, da je po pravilu, bolje koristitu ugrađene alate i postupke nego pisati procedure. Dozvoljavam mogućnost da grešim, da ne vidim razlog a da je tvoj pristup bolji, znam da godinama koristm programe, neke sam i sam napravio u kojim koristim upravo tu numeraciju, povećanje broja za jedan, za brojeve dokumenata, nigde nemam problema sa unosom.
[ nenadmarkoni @ 03.05.2015. 17:51 ] @
Način sa prostim Default Value u Columnar prikazu ne pravi problem koliko vidim, dok u Tabular prikazu pravi. Primjer u prilogu
[ nenadmarkoni @ 03.05.2015. 20:43 ] @
...medjutim ako se na After Update Tabular forme postavi:
Code:

Me.Requery
DoCmd.GoToRecord,,acNewRecord 

tad radi ok. :-/
Nemam argumenata protiv tvrdnje @BiloKoj i izgleda da je u pravu. Jedino ako Zoran ima.
[ mkaras @ 03.05.2015. 21:24 ] @
Pogledajte i temu: http://www.elitesecurity.org/t...ey-iskljucen-Kako-je-to-moguce . Ima intersantnih načina za kontrolu unetih podataka pa i njihovo snimanje ili odbacivanje. Nema univerzalnog principa rada. Bira se onaj koji je u datom momentu primereniji. AutoNumber je prosto nemoguće kontrolisati. Uveća se za jedan svaki put kada se i pomisli na unos novih podataka. Zašto se onda patiti sa njim i kontrolisati ga. Koristi se samo za vezivanje forma-podforma a pravi primarni kluč se reguliše na neki način lakši za kontrolu. Sa druge strane tako naknadno formiran primarni ključ bi bio prava noćna mora za povezivanje forma-podforma. Isto tako je i puna kontrola unetih podataka mnogo lakša upotrebom ADO RecordSet-a nego upotrebom mehanizama koje obezbeđuje Access forma. Naravno ovo je sve subjektivno mišljenje i stvar navike.


[Ovu poruku je menjao Getsbi dana 04.05.2015. u 06:09 GMT+1]
[ Zoran.Eremija @ 03.05.2015. 23:04 ] @
Citat:
nenadmarkoni:
Jedino ako Zoran ima.


Primer koji ste dali može da se koristi ako nema konkurentnog rada, a ako je konkurentni rad prisutan onda nije dovoljan u prilogu imate primer na formi Grad.
[ nenadmarkoni @ 04.05.2015. 07:05 ] @
Znaci razlog ovakvog pristupa je visekorisnicko okruzenje?
[ Zoran.Eremija @ 04.05.2015. 07:52 ] @
Tako je, probajte prethodni Korisnik3 KorisnikZE kao u prilogu.