[ Bratstvo Jedinstvo @ 05.12.2005. 22:56 ] @
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
[ banem @ 05.12.2005. 23:53 ] @
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?
[ Bratstvo Jedinstvo @ 06.12.2005. 00:08 ] @
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.
[ sbing @ 06.12.2005. 07:26 ] @
Stavi si gumb sa brisanje recorda.
[ banem @ 06.12.2005. 07:35 ] @
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.
[ Bratstvo Jedinstvo @ 06.12.2005. 09:39 ] @
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
[ banem @ 06.12.2005. 13:13 ] @
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....