• 6 odgovora
  • 3.015 pregleda
Gasenje upisa po izlasku 05.12.2005. u 22:56 · pre 254 meseci #1
Hteo bih da iskljucim jednu "idiotsku" funkciju koja je po defoaltu u accessovim formama.
recimo da imam formu koja iscita jedan rekord iz baze ... u slucaju da ja promenim zadrzaj nekog od text boxova i zatvorim formu on ce to sacuvati u bazi.

kako da sprecim ovo?

u napred hvala
Re: Gasenje upisa po izlasku 05.12.2005. u 23:53 · pre 254 meseci #2
Nije to idiotska funkcija već tako funkcionišu sve baze podataka. Nema snimanja već je podatak prioritet broj jedan i čim ga uneseš, on se odmah smešta na disk.

Pitanje je zašto menjaš podatak ako ne želiš da ga sačuvaš? Izvodljivo je, naravno, a implementacija zavisi od onoga šta želiš da postigneš. Dakle, zašto ti to treba?
Potpis
Pozdrav,
Branislav
Re: Gasenje upisa po izlasku 06.12.2005. u 00:08 · pre 254 meseci #3
Znaci hocu da imam forum u kojoj cu vrsiti unos ali tek kada napisem sve i pritisnem dugme upisi. A ne negde u pola pisanja se predomislim i sada moram sve da brisem sve iz svih textboxova da on ne bi nista upisao. Isto npr imam formu za izmenu i hocu da on sacuva tek kada izmenim sve i pritisnem sacuvaj.

Nadam se da me shvatas.
Re: Gasenje upisa po izlasku 06.12.2005. u 07:35 · pre 254 meseci #5
Shvatam. U BeforeUpdate događaj prenesi ovo:

If MsgBox("Snimanje podataka?", vbYesNo) = vbNo Then
Cancel = True
Me.Undo
End If

Ako pritisneš YES sačuvaće izmene, ako pritisneš NO vratiće podatke koje si prepisao.
Potpis
Pozdrav,
Branislav
Re: Gasenje upisa po izlasku 06.12.2005. u 09:39 · pre 254 meseci #6
Uredu ... stavio sam ono na beforeupdate kao funkciju forme. Jos jenda stvar koju bih hteo da zaobidjem je da mi se pojavi isti msgbox kada pridisnem na dugme sacuvaj. Nadam se me razumete

Hvala u svakom slucaju
Re: Gasenje upisa po izlasku 06.12.2005. u 13:13 · pre 254 meseci #7
Npr. definišeš globalnu promenljivu i menjaš joj vrednost na 1 sa dugmetom Sačuvaj. Proveriš joj vrednost pre funkcije BeforeUpdate i ako je 1, zanemariš funkciju, ako je nula daješ upozorenje. Zatim u događaju AfterUpdate vratiš vrednost na 0.

Drugi način neki koriste. Stave formu sa praznim poljima koja nisu vezana ni sa čim. Kada tražiš prikaz podataka, čita se rekordset i podaci se prikazuju u nevezanim poljima. Kada uradiš izmenu pokreneš iz VBA jedan SQL koji zapiše podatke u tabelu. Sa prikazanim podacima možeš da radiš šta hoćeš i ne pamte se u tabeli pošto nisu vezani. Tek kada stisneš dugme Sačuvaj bivaju zapamćeni.

Treći način je da koristiš funkciju koju sam poslao i da ukloniš dugme Sačuvaj.

Četvrti način je da napraviš "pravu" funkciju. Otvori karticu modula, napravi nov i prenesi ovo:

Code:

Function BU(Potvrda As Integer, Forma As Form, Cancel As Integer)
If Potvrda = 1 Then
If MsgBox("Snimam izmene?", vbYesNo, "Snimanje") = vbNo Then
  Cancel = True
  Forma.Undo
End If
Else
    Forma.Requery
End If
End Function


Na dugmetu Sačuvaj, događaj BeforeUpdate postavi ovo:

Code:

=BU(1;Screen.ActiveForm;0)


Na događaju BeforeUpdate forme postavi ovo:

Code:

=BU(1;Screen.ActiveForm;1)


Ima i peti način, samo....
Potpis
Pozdrav,
Branislav
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme