|
[ bdrago @ 07.05.2004. 14:41 ] @
| Potrebna pomoc iskusnijih korisnika!
Pitanje:
Ako imam tabelu KNJIGE gdje je primarni kljuc na polju InvBr (inventarni broj knjige = 1,2,3 itd.) i formu za unos novih knjiga
Potreban mi je kod za:
Kada kliknem na dugme za dodavanje nove knjige, potrebno je da program provjeri vec unesene inventarne brojeve u tabeli KNJIGE i da u formi za unos knjiga u polje InvBr, za novu knjigu, upise sledeci inventarni broj po redu.
Kada je novi inventarni broj (primarni kljuc) upisan u polje forme, a zelim da odustanem od upisivanja, da ga sa zatvaranjem forme obrise iz polja forme (tj. tabele).
Unaprijed zahvaljujem!
|
[ Zidar @ 10.05.2004. 14:29 ] @
Ako nije prekasno za to, napravi da ti polje InvBr bude Autonumber. U tom slucaju ne treba ti nikakkav kod. Sve se desava samo od sebe. Ako sacuvas record, Access ce da sacuva autonumbr, ako odustanes, nece se desiti nista, novi autonumber bice zaboravljen.
Druge opcije su komplikovanije. lako je automatski povecati invBr za 1. Tesko je spreciti nezeljeno snimanje recorda. Objasnjenje trazi vise vremena, pa cemo ga preskociti, osim ako to ne zatrazis izricito. Mozda iskustva drugih pomognu u ovom slucaju.
:-)
[ bdrago @ 11.05.2004. 06:43 ] @
Hvala na javljanju (vec sam pomislio da niko nece da prica sa mnom).
Nije prekasno ni za kakve promjene. To je baza koju radim da bi nesto naucio.
Ajde da kazem da se prilicno dobro snalazim u osnovnim stvarima (tabele, upiti , forme itd) ali dodje vrijeme kada treba preci i korak dalje.
Polje AutoNumber koristim u tabeli Zaduzivanje i to nije problem. Ali u tabeli Knjige
polje InvBr mi odredjuje svaku knjigu, jer moze se desiti da imam knjige sa istim naslovom.
Sto se tice snimanja zapisa, na formi imam dugme "Zaduzi" koje pritisnem kada hocu da zaduzim nekog clana sa knjigom, pa ono automatski oduzme broj zaduzenih kopija od trenutnog stanja te knjige u biblioteci i snimi zapis (uz to imam uslov da datum zaduzivanja mora biti popunjen a datum razduzivanja prazan).
Ako hocu da u toku unosa odustanem od zaduzivanja imam dugme "Odustani od zaduzivanja" kojim ne snimam zapis (CancelEvent).
Na isti nacin radim i razduzivanje, gdje gledam da je datum razduzivanja prazan, pa kada ga upisem, vratim broj zaduzenih kopija na stanje, tj. razduzim knjigu.
Dakle, trebao bih da napravim: npr.
If... Ako se dodaje novi zapis(AddNewRecord) ... Then
... procitaj vrijednost zadnjeg InvBr (Last) ...
... pa upisi u polje InvBr=Last + 1
Ali mi ne idu naredbe za ono "procitaj" i upisi".
Gdje bih mogao da nadjem nesto prevedeno sto bi mi pomoglo da naucim nesto vise o pisanju koda u Accessu. Imam Knjigu Visual Basic 6. Ne znam da li je ona za to. ako jeste, predebela je.
Zahvaljujem na javljanju!
[ Zidar @ 11.05.2004. 14:45 ] @
Ovako. Imam utisak da nije bas sve kako treba sa dizajnom same baze. Los dizajn neizbezno proizvodi potrebu za mnogo programiranja i cesto te dovodi u neresive situacije za naizgled jednostavne probleme. Posto ovo radis da naucis nesto, onda imamo vremena, pa bih te molio da nam ovde na forumu opises kako tvoja baza izgleda (tebele, primarni kljucevi, relacije). Onda cemo da krenemo odatle.
Isto mi se cini da ti tretiras Access aplikaciju kao da je to VB. Nije i u principu je mnogo lakse napisati Access aplikaciju koja radi sa Access bazom nego VB. Access aplikacije uglavnom ne zahtevaju mnogo koda za osnovne stvari. Ostavimo to za posle, prvo nam opisi bazu i sta ta baza treba da radi (da podrzi rad jedne biblioteke).
Sto se tice knjiga za ucenje, ne znam gde si, pa ne znam sta da preporucim. Ako si negede na YU prostorima i knjige na engleskom ti nisu dostupne, onda mora neko da pomogne iz bivse YU. Ako si u USA/AU/GB i slicno, potrazi "Mastering Access xxxx", author Alisson Balter. Jest debela ali je mnogo laksa za citanje nego VB knjige. Kad tu knjigu lepo savladas i nekoliko meseci se sluzis Accessom, onda si spreman za knjige koje pise Ken Getz.
:-)
[ bdrago @ 12.05.2004. 08:58 ] @
Posto toga ima dosta, najbolje bi bilo da mi neko objasni kako da za ovu poruku prikacim zipovanu bazu (trnutno stanje = 300 Kb), pa da se iz nje sve vidi.
A ako to nije moguce, onda cu se baciti na pisanje.
Inace, samoj postavci baze mi se ne svidjaju 3 stvari, ali ih nisam mogao rijesiti na drugi nacin:
1) ubacivanje sledeceg InvBr za knjigu
2) ubacivanje sledeceg Brc za clana
3) nacin dovodjenja na ekran zapisa knjige koju treba razduziti (rijeseno preko
combo-boxa, ali mislim da nije bas zgodno da se na formi vidi AutoNumber zapisa
posto mi on odredjuje odredjeno zaduzivanje knjige.
Molim vas da mi neko objasni kako da prikacim bazu za poruku ili da je posaljem na drugi nacin.
[ Zidar @ 12.05.2004. 16:20 ] @
Mozda je bolje da nam napises koje tabele imas i sta se u koju pakuje. Onda nam opisi kako si to zamislio da izvedes. Na taj nacin cemo imati 'big picture' i dacemo neke generalne odgovore, pa ce i drugi imati koristi od ove teme.
[ bdrago @ 13.05.2004. 06:46 ] @
Evo ovako:
Imam tri glavne tabele: Clanovi, Knjige i Poslovanje sa poljima:
(polja napisana velikim slovima su primarni kljuc)
Clanovi (BRC, PrezimeIme, Zanimanje, Adresa, Mjesto, Telefon, DatRodjenja,
DatUpisa, DatClan, Napomena)
Knjige (INVBR, Signatura, SifraZanra, NazivDjela, BrKopija, Stanje, Pisac, Izdavac,
GodIzdav, Napomena)
Poslovanje (IDZAPISA, Brc, InvBr, DatZad, ZadKopija, DatRazd, Bibliotekar,
Napomena)
Tabele Clanovi i Knjige su preko primarnog kljuca povezane sa tabelom poslovanje vezom: jedan prema vise.
Isto tako imam i pomocne tabele za sledeca polja: Bibliotekar, Pisac, Izdavac,
Zanr, Signatura i InvBr koje mi sluze za unos novih podataka: npr. ako dobijem novog izdavaca, unesem ga u tabelu Izdavac, a poslije gdje god treba, biram ga iz combo-box-a.
Baza bi trebala da radi ovako:
Kada dobijem novog clana upisujem mu podatke preko forme frmClanovi u tabelu Clanovi (DatClan=datum kada je platio clanarinu itd.)
Kada dobijem novu knjigu, upisujem je preko forme frmKnjige u tabelu Knjige (InvBr odredjuje svaku knjigu, BrKopija=ukupan broj kopija knjige, Stanje=broj kopija knjige koji se trenutno nalazi u biblioteci, itd.)
Na forni frmZaduzivanje imam dugme "Unesi podatke za novo zaduzivanje" pa preko njega unesem podatke za novo zaduzivanje (DatZad mora biti popunjen a DatRazd mora biti prazan).
Kada popunim podatke imam dugme "Zaduzi" pa kada ga pritisnem, program oduzme broj zaduzenih kopija od stanja.Kod je sledeci:
Private Sub Command25_Click()
If Not IsNull(Me!DatRazd) Then
MsgBox "Da bi mogli zaduziti knjigu morate unijeti podatke za novo zaduzenje!"
Exit Sub
End If
If Forms!frmZaduzivanje!pfmKnjige.Form.Stanje = 0 Then
Beep
MsgBox "Ova knjiga nema ni jednu slobodnu kopiju!"
InvBr.SetFocus
Exit Sub
End If
If IsNull(Me!DatZad) Then
MsgBox "Da bi mogli zaduziti ovu knjigu morate upisati datum zaduzivanja!"
DatZad.SetFocus
Exit Sub
End If
If MsgBox("Da li zelite zaduziti ovu knjigu?", vbExclamation + vbYesNo, "UPOZORENJE!") = vbYes Then
Forms!frmZaduzivanje!pfmKnjige.Form.Stanje = Forms!frmZaduzivanje!pfmKnjige.Form.Stanje - Forms!frmZaduzivanje.ZadKopija
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Else
DoCmd.CancelEvent
End If
End Sub
Ako hocu da odustanem od zaduzivanja (u toku unosa) imam dugme "Odustani i obrisi zapis" sa kodom:
Private Sub Command32_Click()
DoCmd.SetWarnings False
If MsgBox("Da li zelite odustati od zaduzivanja?", vbExclamation + vbYesNo, "UPOZORENJE") = vbYes Then
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Brc.SetFocus
Exit Sub
Else
InvBr.SetFocus
End If
End Sub
Na frmZaduzivanje imam dvije podforme: pfmClanovi i pfmKnjige, obe sa Enable=No, pa kada u formi izaberem Brc, dole se prikazu svi podaci za tog clana. Isto je i za knjigu.
Za razduzivanje je potrebno pronaci zapis koji hocemo da razduzimo i dovesti ga da bude tekuci, pa upisem DatRazd i vratim broj zaduzenih kopija na stanje. To radim preko combobox-a (preko IdZapisa, a imam u njemu i Brc, InvBr, DatZad i DatRazd=Null koji je nevidljiv). Kod je:
Private Sub Text54_AfterUpdate()
With CodeContextObject
DoCmd.GoToControl "[IDZapisa]"
DoCmd.FindRecord .Text54, acEntire, False, , False, acCurrent, True
End With
DatRazd.SetFocus
End Sub
Problem mi je sto IdZapisa odredjuje zadizivanje a ja u combo-box-u gledam Brc i InvBr.
Kada nadjem zapis, upisem DatRazd i pritisnem dugme "Razduzi" sa kodom:
Private Sub Command53_Click()
If IsNull(Me!DatRazd) Then
MsgBox "Da bi mogli razduziti ovu knjigu morate upisati datum razduzivanja!"
DatRazd.SetFocus
Exit Sub
End If
If MsgBox("Da li zelite razduziti ovu knjigu?", vbExclamation + vbYesNo, "UPOZORENJE!") = vbYes Then
Forms!frmZaduzivanje!pfmKnjige.Form.Stanje = Forms!frmZaduzivanje!pfmKnjige.Form.Stanje + Forms!frmZaduzivanje.ZadKopija
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Else
DoCmd.CancelEvent
DatRazd.Value = ""
End If
End Sub
Imam i dugme "Vrati stanje knjige" za prisilne intervencije, gdje mozemo prepraviti stanje, sa kodom:(gdje mozemo ispraviti stanje)
Private Sub Command39_Click()
DoCmd.OpenQuery "QVratiStanjeKnjige"
End Sub
Imam i obicno dugme za brisanje zapisa.
Svi ovi dugmici su na TabControl sa tri strane: Zaduzivanje, Razduzivanje i Ispravke.
Izvjestaji nisu problem pa necemo o njima.
Znaci, bilo bi dobro da: kada pritisnem dugme za dodavanje novog clana, program sam procita vrijednost iz polja Brc na poslednjem zapisu i doda novi Brc za jedan veci. Isto vrijedi i za InvBr nove knjige (i za bilo koju drugu Access bazu moze se iskoristiti).
Eto, nadam se da se vidi osnovno.
Zahvaljujem na javljanju!
[ Zidar @ 13.05.2004. 15:28 ] @
Wow! Odlicno opisan problem. Daj mi malo vremena da prodjem kroz listinge pa cu ti odgovoriti jedno po jedno. Odgovoricu ti na sva pitanja, cisto da bi pokazali odredjene tehnike pristupa i manipulisanja podacima. Sto se tice dizajna baze, nije bas najbolji za izabrani problem. Table su OK, ali model nije kompletan i u praksi bi stvorio vise problema nego sto bi resio. No, o tome posle. Sada cemo da se bavimo tehnikom programiranja. Molim te daj mi malo vremena.
Za sada samo dva kratka saveta. Prvo, kad pises kod koji zahteva referencu na trenutno otvorenu formu, ne moras da upotrebis Forms!MojaForma!txtBox. Mozes (i treba) da pises me!txtBox. Rec "me" znaci "ja, tekuca forma" i moze se koristiti u formama i reportima. Drugo, pozivanje menu komandi na nacin
Code:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
je zastareo i nepouzdan. Bolje je koristiti na primer
Code:
Docmd.RunCommand accmdSaveRecord
Pogledaj u helpu RunCommand.
:-)
[ bdrago @ 14.05.2004. 06:13 ] @
Hvala na javljanju!
Vec sam rekao da mi ne ide bas najbolje pisanje koda.
Kod sam sastavio gledajuci razne primjere gotovih baza podataka i primjere sa ovog foruma itd. Koristio sam i sistem da napravim neko dugme pomocu carobljaka pa onda pogledam kod za tu operaciju koji je napisao carobnjak, pa ga ugradim u svoj kod itd.
Pozdrav!
[ Zidar @ 14.05.2004. 14:16 ] @
Da probamo ovako. Tvoja pitanja su:
Citat:
Inace, samoj postavci baze mi se ne svidjaju 3 stvari, ali ih nisam mogao rijesiti na drugi nacin:
1) ubacivanje sledeceg InvBr za knjigu
2) ubacivanje sledeceg Brc za clana
3) nacin dovodjenja na ekran zapisa knjige koju treba razduziti (rijeseno preko
combo-boxa, ali mislim da nije bas zgodno da se na formi vidi AutoNumber zapisa
posto mi on odredjuje odredjeno zaduzivanje knjige.
Za 1) i 2) princip bi trebalo da bude isti. Za tabele Clanovi i Knjige ti imas po jednu formu, frmClanovi i frmKnjige. Te forme pokazuju podatke iz tabela Clanovi i Knjige. Mogu da imaju subforma, ali nije bitno. Kad otvoris bilo koju od ovih formi, forma ce biti pozicionirana na neki rekord, najverovatnije prvi po redosledu primarnog kjuca.
Najprostiji nacin da dodas novog clana je da iabere komandu new Record sa glavnog menija, ili kliknes na * navigation button. To ti otvara praznu formu i ceka da uneses podatke. Sto tebi treba jeste da Primary key polje bude popunjeno vrednoscu Max(PK)+1.
Ima vise nacina da se ovo postigne, a jedan je sledeci:
a) Uslov je da Brc nije autonumber polje. Ako jeste, nikakva funkcija nema smisla, autonumber je pod kontrolom Accessa, a ne korisnika. recimo da Brc nije autonumber. Napisi public funkciju koja izracunava Max(PK)+1. Na primer:
Code:
Function NextClan() as Long
dim lngBroj as long
lngbroj = 1+nz(Dmax("Brc","Clanovi"),0)
NextClan=lngbroj
End Function
Dmax("Brc","Clanovi") treba da pronadje maximalnu vrednost polja Brc u tabeli Clanovi. Posto je Brc autonumber, MAx je istovremno i poslednji koji je unesen. Kad je tabela prazna Dmax vraca NULL, a NULL+1 = NULL pa bi funkcija pukla. Stoga, funkciaj NZ pretvara potencijalnu NULL value u 0 (zero, matmaticka nula).
b) Za polje Brc na formi, u property DefaultValue, stavi =NextClan()
c) ako vec nemas, na formi Clanovi postavi dugmad cmdAddNewRecord, smdUndoRecord, cmdSaveRecord. OnClick za ove dugmice sledi. Sav kod je napisan upotrebom wizarda, a zatim malo modifikovan. Primeti kako je Error kod poboljsan ubacivanjem broja greske i naziva funkcije u kojoj se greska javila.
Code:
Private Sub cmdUndo_Click()
On Error GoTo Err_cmdUndo_Click
'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
DoCmd.RunCommand acCmdUndo
DoCmd.GoToRecord acDataForm, Me.Name, acPrevious 'dodao Zidar
Exit_cmdUndo_Click:
Exit Sub
Err_cmdUndo_Click:
MsgBox Err.Description, Title:="Errror " & Err.Number & " in cmdUndo_Click()"
Resume Exit_cmdUndo_Click
End Sub
Private Sub cmdSave_Click()
On Error GoTo Err_cmdSave_Click
'DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
'Dodao Zidar:
If Me.Dirty Then
DoCmd.RunCommand acCmdSaveRecord
Else
MsgBox "No changes made to the data. There is nothing to Save"
End If
Exit_cmdSave_Click:
Exit Sub
Err_cmdSave_Click:
MsgBox Err.Description, Title:="Errror " & Err.Number & " in cmdSave_Click()"
Resume Exit_cmdSave_Click
End Sub
Private Sub cmdAddNewRecord_Click()
On Error GoTo Err_cmdAddNewRecord_Click
DoCmd.GoToRecord , , acNewRec
Exit_cmdAddNewRecord_Click:
Exit Sub
Err_cmdAddNewRecord_Click:
MsgBox Err.Description, Title:="Errror " & Err.Number & " in cmdAddNewRecord_Click()"
Resume Exit_cmdAddNewRecord_Click
End Sub
[ Zidar @ 14.05.2004. 15:18 ] @
U prethodnom postu imas za pitanja 1) i 2). Da vidimo sad
Citat:
3) nacin dovodjenja na ekran zapisa knjige koju treba razduziti (rijeseno preko
combo-boxa, ali mislim da nije bas zgodno da se na formi vidi AutoNumber zapisa
posto mi on odredjuje odredjeno zaduzivanje knjige.
Umesto "dovodjenja na ekran zapisa knjige koju treba razduziti", meni se vise svidja sledece. Zamisli kveri koji lista sve rekorde iz tebele Poslovanje, za zadati Brc. Taj kveri ce da pokaze sve knjige koje je ikada uzeo clan Brc. Tebe zanimaju nerazduzene, pa ces da ubacis WHERE u kveri i tako dobijes samo nerazduzene knjige za datog Brc. Dakle,
Citat:
qryNerazduzeni =
"SELECT IDZAPISA,Brc,InvBr,DatZad,DatRazd WHERE DatRazd IS NULL".
Mozes da dodas JOIN na Knjige pa da ubacis i naslov knjige. Napravis datasheet formu baziranu na ovom kveriju, naprimer frmNerazduzeni_DS. Sad ovu formu stavis kao subformu na frmClanovi, a isto tako i na formu frmKnjige. Kad god se pozicioniras na nekog clana, vidis njegove nerazduzene knjige. Kako niko nema stotine nerazduzenih knjiga, verovatno je da ces ih sve videti na jednom ekranu. Onda lepo pogledas knjigu koju je tvoj Brc doneo da razduzi i pogledas na ekran i vidis koja je to knjiga u pitanju. Kako da je razduzis? Razduzivanje ima dva koraka:
1) Upisi DatRazd u odgovarajuci zapis u tabeli Poslovanje
2) U tabeli knjige postavi Stanje=Stanje+1
Hoces ovo da "Undo"? prosto,
1) Postavi DatRazd=NULL [bold](tvoja procedura Command53_Click() kaze DatRazd="" sto NE VALJA, DatRazd je DateTime podatak i ne moze da primi "")[bold]
2) U tabeli knjige postavi Stanje=Stanje-1
Samo razduzenej bi mogao da uradis direktno u subformi - jednostavno upises datum razduzenja. Odustajes? Obrisi datum razduzenja. Problem je promena stanja. Ovo su vezane operacije i moraju da se izvrse ili obadve ili ni jedna. Razduziti knjigu a ne promeniti stanje nema smisla. Zato se mora raditi TRANSAKCIJA, koja sadrzi obe ove operacije i ako se negde desi greska, obe operacije se ponistavaju (ROLLBACK).
Trebaju ti dve funkcije, koje ces da pozoves po potrebi sa tvoje forme ili subforme. prvo funkcije. Kod pisem napamet, direktno u poruku, pa moze da zapne, ali tro ti je ideja:
Code:
public function Razduzi(lngIDZAPISA as long, lngBrknjige as long, datDatRazd as Date) as boolean
ON ERROR goto ERROR_CODE
dim db as DAO.database
dim rs as DAO.recordset
dim rsStanje as DAO.recordset
dim strSQL as string
dim strSQLstanje as string
dim flgInTransaction as boolean
set db=currentdb()
strSQL = "SELECT IDZAPISA, DatRazd FROM Poslovanje WHERE IDZAPISA=" & lngIDZAPISA
strSQLstanje="SELECT Stanje FROM Knjige WHERE InvBr=" & lngBrknjige
set rs=db.openrecordset(strSQL )
set rsStanje=db.openrecordset(strSQLstanje)
Begin Transaction
flgInTransaction = TRUE
'razduzimo knjigu
rs.edit
rs!DatRazd = datDatRazd
rs.update
'promenimo stanje
rsStanje.edit
rsStanje!Stanje=rs!Stanje+1
rsStanje.Update
Commit Transaction
EXIT_HERE:
OnError resume next
rs.close
rsStanje.close
set db=nothing
Exit function
ERROR_CODE:
if flgInTransaction then
Rollback Transaction
endif
select case err.number
case else
MsgBox Error.description, Title:="Error " & err.number & " in Razduzi()"
resume EXIT_HERE:
end select
end function
Funkcija "PonistiRazduzenje" izgleda isto, sem sto ide
Code:
rs.edit
rs!DatRazd = NULL
rs.update
'promenimo stanje
rsStanje.edit
rsStanje!Stanje=rs!Stanje-1
rsStanje.Update
Ove funkcije pozivas na neki zgodan nacin i saljes im parametre. Na primer, u subformi frmNerazduzeni_DS, mozes da pozivas funRazduzenje posto uradis DoubleClick() na DatRazd, a funPonistiRazduzenje mozes da pozivas sa DoubleClick na DatZad.
Toliko o ucenju nekih novih nacina da se rese problemi. Sto se tice dizajna baze, o tome detaljnjie neki drugi put. Ovo je OK za vezbu ali u praksi bi bilo katasrofa, posle samo nedelju dana rada. Dobar dizajn bi te oslobodio razmisljanja o brojanju knjiga i azuriranjustanja kad god se knjiga uzneme ili vrati. A sta ces kad ti neko ostavi kjigu na stolu i ode kuci. Ko je razduzio knjigu? Znamo da je Stanje=Stanje+1, ali koga da razduzimo? O tome drugi put, za sada imas dovoljno zabave, a ja moram da nesto i radim da zaradim platu.
:-)
[ bdrago @ 16.05.2004. 05:51 ] @
Hvala Zidaru!
Trebace mi vremena da ovo malo prostudiram.
Pozdrav!
[ bdrago @ 17.05.2004. 14:37 ] @
Probao sam ovaj prvi dio za sledeci InvBr i to radi bez problema.
Za drugi dio napravio sam upit (DatRazd=Null) pa na osnovu njega formu, pa sam je prevukao na formu gdje biram broj clana (sada je ona podforma).
Sve je to u redu ali program mi neda da vrsim bilo kakve izmjene u podformi, npr. da upisem DatRazd. Probao sam preko Properties dijaloga: Allow Edit je Yes a opet neda izmjene. Ne znam zasto???
Sto se tice koda za drugi dio (razduzivanje i stanje) to mi nije bas najjasnije (ali bice bolje).
P.S. Jeste li nekad imali problem da vam umjesto slova z (kao zvaka) otkuca obicnu liniju: I (prebacivac tastature je na latinici)
Razumio bih da to radi na svim formama ,ali nije tako. Negdje radi a anegdje ne (u istom programu (.mdb).
Istovremeno, ostala slova sa kvacicama su dobra.
[ Zidar @ 17.05.2004. 18:40 ] @
YU slova - to ne znam.
Subforma ne dozvoljava edit/insert. To se desava kad je upit na kome se forma bazira non-updateable, a to se desava kad neka od tabela koje su JOINovane u upitu nema PK. probaj da otvoris dataheet formu samu za sebe, pa vidi da li moze da se modifikuju podaci. Jos bolje, otvori kveri i vidi da li mozes da editujes podatke.
Ako je tvoja datasheet forma bazirana na tabeli transakcije, jedina polja koja smes da menjas su DatZad i DatRaad. Ostalo ti Access nece (ne bi trebao) dozvoliti, ukoliko su ti relacije medju tabelama psotavljene pravilno (enforce referential integrity, no cascading for dlete and update)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|