Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 192 odgovora
  • 52.223 pregleda

Najnovija ↓

Remontovanje železničkih vagona 18.07.2014. u 12:38 · pre 149 meseci #1
Našla neko uputstvo kako se pravi forma za unos podataka u tabelu, sve mi funkcionice sem ove male procedure (radi ako je OsovinaID Number, ali ne radi ako je Autonumber a meni bas autonumber treba). Dobijam "Run-time error '3113'; Cannot update 'OsovinaID'; field not updateable." Ima li nekog (jednostavnog) leka za moj slučaj?

Code:
Private Sub cmdAdd_Click()
      If Me.txtID.Tag & "" = "" Then
        CurrentDb.Execute "INSERT INTO Osovine (Broj, Godina, Tip, Napomena)" & _
              " VALUES (" & Me.txtbroj & ",'" & Me.txtGodina & "','" & Me.txtTip & "','" & Me.txtNapomena & "')"
    Else
        CurrentDb.Execute "UPDATE Osovine " & _
                " SET OsovinaID=" & Me.txtID & _
                ", Broj='" & Me.txtbroj & "'" & _
                ", Godina='" & Me.txtGodina & "'" & _
                ", Tip='" & Me.txtTip & "'" & _
                ", Napomena='" & Me.txtNapomena & "'" & _
                " WHERE OsovinaID=" & Me.txtID.Tag
    End If
    cmdClear_Click
    OsovineSubF.Form.Requery
End Sub
Re: Remontovanje železničkih vagona 18.07.2014. u 14:05 · pre 149 meseci #2
Da bi unosila podatke u tabelu preko forme nije ti potrebna nikakva procedura pisana u VBA, dovoljno je da formi za Record Source u Property-ju postavis odgovarajucu tabelu ili mozes za pocetak jednostavnije da pozoves carobnjaka (Form Wizard) za kreiranje forme u kome biras koja ce tabela biti Record Source i koja ce se polja nalaziti na formi a koja se nalaze vec u tabeli.

U prilogu ti je tvoj primer iz prethodnog posta sa formom za unos podataka.
Ako se ne snadjes okaci tvoju bazu pa da resimo problem. ;)
Potpis
[email protected]=
Re: Remontovanje železničkih vagona 18.07.2014. u 15:53 · pre 149 meseci #3
Citat:
FOX028: Da bi unosila podatke u tabelu preko forme nije ti potrebna nikakva procedura pisana u VBA, dovoljno je da formi za Record Source u Property-ju postavis odgovarajucu tabelu ili mozes za pocetak jednostavnije da pozoves carobnjaka (Form Wizard) za kreiranje forme u kome biras koja ce tabela biti Record Source i koja ce se polja nalaziti na formi a koja se nalaze vec u tabeli.

U prilogu ti je tvoj primer iz prethodnog posta sa formom za unos podataka.
Ako se ne snadjes okaci tvoju bazu pa da resimo problem. ;)


Umem da uradim sa wizardom, nije to poenta, želim da popravim proceduru (ako se tako kaže). Zanima me zašto ne radi ako je OsovinaID autonumber, i kako da napravim da radi (Zašto autonumber polje ne mogu da editujem a number mogu). Bazu kad napravim pomoću wizarda, ne sviđa mi se kako izgleda, ne mogu da radim sitne prepravke i ne znam kako sam je napravila. Ovako učim i VB i Access, uživam u tome a moja forma sve lepše izgleda i sve je funkcionalnija. Ne želim da je napravim pomoću wizarda za 2 minuta, ne želim da je neko drugi napravi... volela bih da naučim da sama napravim neke prostije stvari, a ovo mi deluje veoma prosto.
Re: Remontovanje železničkih vagona 18.07.2014. u 16:15 · pre 149 meseci #4
Pa AutoNumber ne mozes da editujes iz razloga sto takav tip podatka Access sam kreira time postize da svaki zapis ima razlicitu vrednost pa se zato i preporucuje da se taj tip podatka koristi za Primarni kljuc.
Formu i ako napravis preko Wizarda mozes je prepravljati kako tebi odgovara samo sto je potrebno da formu otvoris u Design modu (desni klik na formu i odaberes Design).
Na ovaj nacin kako ti hoces da uneses podatke u tabelu samo sebi komplikuse izradu baze, za ove tvoje potrebe ti nije neophodno ovako unositi podatke. Ako zelis da naucis Access mogu ti poslati neke tutorijale koji su u PDF-u a koje sam i ja koristio.
Potpis
[email protected]=
Re: Remontovanje železničkih vagona 18.07.2014. u 16:59 · pre 149 meseci #5
Citat:
FOX028: Pa AutoNumber ne mozes da editujes iz razloga sto takav tip podatka Access sam kreira time postize da svaki zapis ima razlicitu vrednost pa se zato i preporucuje da se taj tip podatka koristi za Primarni kljuc.
Formu i ako napravis preko Wizarda mozes je prepravljati kako tebi odgovara samo sto je potrebno da formu otvoris u Design modu (desni klik na formu i odaberes Design).
Na ovaj nacin kako ti hoces da uneses podatke u tabelu samo sebi komplikuse izradu baze, za ove tvoje potrebe ti nije neophodno ovako unositi podatke. Ako zelis da naucis Access mogu ti poslati neke tutorijale koji su u PDF-u a koje sam i ja koristio.


Nekako se ne razumemo. Nije baš da ništa ne znam, vreme prolazi a ja učim, čitam forum, gledam primere na youtube. U davna vremena (80 i neke) sam učika basic na zx spectrumu, kasnije se malo igrala sa MS-Dos C-om. Sada želim da malo naučim da radim u Access-u.

Trenutno sam napravila formu bez wizarda ručno po uzoru na:




Sve funkcioniše sem Edit-a. Da li je moguće uraditi "Edit" ovako ako je ID polje autonumber?
Re: Remontovanje železničkih vagona 18.07.2014. u 18:30 · pre 149 meseci #6
Kao sto sam ti vec i rekao, nije moguce jer Access sam generise vrednosti za AutoNumber. Ako vec zelis da na taj nacin editujes ili dodajes podatak za to polje moraces da ostavis tip polja da bude Number. Nem svrhe stavljati polje tipa AutoNumber ako vec sama zelis da unosis taj podatak.
Potpis
[email protected]=
Re: Remontovanje železničkih vagona 18.07.2014. u 18:33 · pre 149 meseci #7
marija.ana ima pravo.
daleko je bolje napraviti nevezanu formu te prko sql-a vrsiti manipulaciju podacima iz baze.
Zasto je to Bolje?.
Ukoliko imate napr u ovoj tabeli 200 000 redova i ako zelite dopisati samo jos jedan red vi pri podizanju forme podizete svih 200 000 redova koji vam netrebaju i ako se radi u mreznom rezimu onda to bude veoma sporo pa se to pokusava rijesiti MSSQl bazom.
Naravno to ce raditi sporo i Na MSSQL bazi.

U njenom slucaju pri unosu podataka nemate nikakve veze sa tabelom. Tek kada zavrsimo sa pisanjem i kliknemo na komandni taster na kome se nalazi ovaj kod prosleđujemo podatke bazi pomocu pisnog SQL stringa.

Code:
Private Sub cmdAdd_Click()
       If Me.txtID.Tag & "" = "" Then ' Vjerovatno u tag polja txtID  se upisuje Kriterij pretrage  kada se vrsi  donos podataka iz baze.
                                                ' lakse je bilo provjeravati polje txtid  a u njga vrsiti donos podataka ali ne i upisivati u bazu.
                                                ' Ako je uslov ispunjen dopisat ce se novi red podataka u bazu prepisan sa forme
         CurrentDb.Execute "INSERT INTO Osovine (Broj, Godina, Tip, Napomena)" & _
               " VALUES (" & Me.txtbroj & ",'" & Me.txtGodina & "','" & Me.txtTip & "','" & Me.txtNapomena & "')"
     Else
   ' ako nije zadovoljen uslov onda se radi o izmjeni podataka pa prema tome netreba mijenjati kljuc odnosno Id On je samo uslov da se nadje
   ' red u koji treba upisati podatke
         CurrentDb.Execute "UPDATE Osovine " & _
                 " SET Broj='" & Me.txtbroj & "'" & _
                 ", Godina='" & Me.txtGodina & "'" & _
                 ", Tip='" & Me.txtTip & "'" & _
                 ", Napomena='" & Me.txtNapomena & "'" & _
                 " WHERE OsovinaID=" & Me.txtID.Tag
     End If
     cmdClear_Click
     OsovineSubF.Form.Requery
 End Sub
Potpis
zxz
Re: Remontovanje železničkih vagona 18.07.2014. u 21:38 · pre 149 meseci #8
Hvala izonic to je to.

Sledeci problem koji sam primetila je da kada su sva polja prazna a ja klinkem na dugme Add dobijem gresku "Run-time error '3134': Syntax error in INSERT INTO statement." kako da isključim ovaj error msg ili da stavim neki u kom ja mogu da napišem poruku?
Re: Remontovanje železničkih vagona 18.07.2014. u 22:23 · pre 149 meseci #9
Mozda ovo posluzi, dodao sam par linija koda na onaj prethodni

Code:
Private Sub cmdAdd_Click()
On Error GoTo Err_Greska    'ako dodje do greske negde u proceduri tok procedure nastavlja od linije Err_Greska
       If Me.txtID.Tag & "" = "" Then ' Vjerovatno u tag polja txtID  se upisuje Kriterij pretrage  kada se vrsi  donos podataka iz baze.
                                                ' lakse je bilo provjeravati polje txtid  a u njga vrsiti donos podataka ali ne i upisivati u bazu.
                                                ' Ako je uslov ispunjen dopisat ce se novi red podataka u bazu prepisan sa forme
         CurrentDb.Execute "INSERT INTO Osovine (Broj, Godina, Tip, Napomena)" & _
               " VALUES (" & Me.txtbroj & ",'" & Me.txtGodina & "','" & Me.txtTip & "','" & Me.txtNapomena & "')"
     Else
   ' ako nije zadovoljen uslov onda se radi o izmjeni podataka pa prema tome netreba mijenjati kljuc odnosno Id On je samo uslov da se nadje
   ' red u koji treba upisati podatke
         CurrentDb.Execute "UPDATE Osovine " & _
                 " SET Broj='" & Me.txtbroj & "'" & _
                 ", Godina='" & Me.txtGodina & "'" & _
                 ", Tip='" & Me.txtTip & "'" & _
                 ", Napomena='" & Me.txtNapomena & "'" & _
                 " WHERE OsovinaID=" & Me.txtID.Tag
     End If
     cmdClear_Click
     OsovineSubF.Form.Requery
Exit Sub

Err_Greska:     'U slucaju greske tok procedure prelazi na ovu liniju i nastavlja odavde dalje
MsgBox Err.Description, vbCritical, "Greska"    'Poruka o gresci, umesto Err.Description mozes upisati neku svoju poruku
End Sub

Potpis
[email protected]=
Re: Remontovanje železničkih vagona 18.07.2014. u 22:26 · pre 149 meseci #10
Dok pise add vjerovatno sluzi za dodavanje novog rekorda a posto nisi popunila pšredhodni sto si dodala onda prijavi gresku.
Code:
Private Sub cmdAdd_Click()

On error goto Greska
        If Me.txtID.Tag & "" = "" Then ' Vjerovatno u tag polja txtID  se upisuje Kriterij pretrage  kada se vrsi  donos podataka iz baze.
                                                 ' lakse je bilo provjeravati polje txtid  a u njga vrsiti donos podataka ali ne i upisivati u bazu.
                                                 ' Ako je uslov ispunjen dopisat ce se novi red podataka u bazu prepisan sa forme
          CurrentDb.Execute "INSERT INTO Osovine (Broj, Godina, Tip, Napomena)" & _
                " VALUES (" & Me.txtbroj & ",'" & Me.txtGodina & "','" & Me.txtTip & "','" & Me.txtNapomena & "')"
      Else
    ' ako nije zadovoljen uslov onda se radi o izmjeni podataka pa prema tome netreba mijenjati kljuc odnosno Id On je samo uslov da se nadje
    ' red u koji treba upisati podatke
          CurrentDb.Execute "UPDATE Osovine " & _
                  " SET Broj='" & Me.txtbroj & "'" & _
                  ", Godina='" & Me.txtGodina & "'" & _
                  ", Tip='" & Me.txtTip & "'" & _
                  ", Napomena='" & Me.txtNapomena & "'" & _
                  " WHERE OsovinaID=" & Me.txtID.Tag
      End If
      cmdClear_Click
      OsovineSubF.Form.Requery
Izlaz:
Exit sub
Greska:
If err.number=3134 then
Msgbox "Niste popunili podatke"
' ili nista 
else
Msgbox "Ne predviđena greska "  & err.number 
endif
  End Sub
Potpis
zxz
Re: Remontovanje železničkih vagona 19.07.2014. u 02:00 · pre 149 meseci #11
Hvala svima.

Sada sam poželela da na dvoklik na zapis u subformi pozovem Edit dugme sa mainforme (tj njegov public sub).

Code:
Public Sub cmdEdit_Click()
    If Not (Me.OsovineSubF.Form.Recordset.EOF And Me.OsovineSubF.Form.Recordset.BOF) Then
        With Me.OsovineSubF.Form.Recordset
            Me.txtID = .Fields("OsovinaID")
            Me.txtbroj = .Fields("Broj")
            Me.txtGodina = .Fields("Godina")
            Me.txtTip = .Fields("Tip")
            Me.txtNapomena = .Fields("Napomena")
            Me.txtID.Tag = .Fields("OsovinaID")
            Me.cmdAdd.Caption = "Update"
            Me.cmdEdit.Enabled = False
        End With
    End If
End Sub





Probala da u subformi stavim na index on dbl click:
Code:
Call Form_OsovineF.cmdEdit


i:

Code:
Call Form_OsovineF.cmdEdit_Click


i ništa se ne dešava... sad razmišljam da li fali neki link criteria ili sam skroz zalutala.
Re: Remontovanje železničkih vagona 20.07.2014. u 22:09 · pre 149 meseci #12
Nije bas da nije izvodivo alinije uobicajeno niti preporucivo da se tako pravi.

Teorija kaze ako je procedura publikovana (Public) da je njen doseg na nivou nase aplikacije sto znaci da je mozemo pozvati sa bilo kojeg mjesta.
U praksi to bas i nije tako.
Ako malo sagledamo nasa forma je objekat za sebe i na njoj imamo modul za pisanje koda.
Taj kod se sav odnosi samo na tu formu sto znaci da je private.

Bolje je napraviti ovako:
Napravi neki Modul i u njemu napravi proceduru te u nju prebaci tvoj kod koji se nalazi na cmdEdit_Click.

E sad ima nesto i u tvom kodu:
If Not (Me.OsovineSubF.Form.Recordset.EOF And Me.OsovineSubF.Form.Recordset.BOF) Then
'Ja bi ovo preveo ovako:
Ako dodje nije kraju i ako je na pocetku rekordseta.
Pretpostavljam da si htjela postaviti uslov da ako nema u recordsetu niti jednog reda.
Ako sam u pravu onda bi to izgledalo ovako:
Code:
Function PopuniPolja()
Dim Frm As Form
Dim Rs As Recordset

Set Frm = Forms![OsovineSubF]
Set Rs = Frm.RecordsetClone
If Rs.EOF And Rs.BOF Then Exit Function
    With Rs
        Frm.txtID = .Fields("OsovinaID")
        Frm.txtBroj = .Fields("Broj")
        Frm.txtGodina = .Fields("Godina")
        Frm.txtTip = .Fields("Tip")
        Frm.txtNapomena = .Fields("Napomena")
        Frm.txtID.Tag = .Fields("OsovinaID")
        Frm.cmdAdd.Caption = "Update"
        Frm.cmdEdit.Enabled = False
    End With
End Function
Private Sub cmdEdit_Click()
call PopuniPolja
End Sub
Potpis
zxz
Re: Remontovanje železničkih vagona 21.07.2014. u 08:07 · pre 149 meseci #13
Hvala svima, posebno Izonic-u

Ubi me SQL sintaksa, gde bih mogla da naučim malo oko toga (osnove). Celu noć sam pokušavala da napišem jedan red :(

Code:
    If (Me.txtID.Tag & "" = "" And Me.txtDatum.Tag & "" = "") Then
          CurrentDb.Execute "INSERT INTO Dnevnik(OsovinaID, Datum, Stanje, Lokacija, Precnik, Izmene) " & _
                " VALUES (" & Me.txtID & ",'" & Me.txtDatum & "','" & Me.txtStanje & "','" & _
                Me.txtLokacija & "','" & Me.txtPrecnik & "','" & Me.txtIzmene & "')"
    Else
           CurrentDb.Execute "UPDATE Dnevnik " & _
                " SET Datum='" & Me.txtDatum & "'" & _
                ", Stanje='" & Me.txtStanje & "'" & _
                ", Lokacija='" & Me.txtLokacija & "'" & _
                ", Precnik='" & Me.txtPrecnik & "'" & _
                ", Izmene='" & Me.txtIzmene & "'" & _
                " WHERE OsovinaID=" & Me.txtID.Tag & _
                "And Datum=" & Me.txtDatum.Tag
     End If



Krenula da pravim formu za unos podataka u child tabelu (primary je kombinovani osovinaID i Datum) i ubi me ono posle "WHERE" (ne umem pravilno da napišem). Ako bi neko bio voljan da mi popravi ovo i da me uputi gde bih mogla da naučim malo o ovim apostrofima, zarezima, navodnicima i ostalim kukama i kvakama koje mi ne daju da spavam.

Pretpostavljam da sam deo:
Citat:
If (Me.txtID.Tag & "" = "" And Me.txtDatum.Tag & "" = "") Then
pravilno napisala i da je greška u kukama i kvakama posle WHERE.
Re: Remontovanje železničkih vagona 21.07.2014. u 08:42 · pre 149 meseci #14
Mislim da ti datum pravi problem, trebalo bi da koristis Americki zapis datuma. I meni je to pravilo problem ali kada sam koristio ovaj zapis radilo je OK.
A da bi naucila SQL sintaksu mozes da koristis Access-ove upite (Query), oni su ustvari SQL kod samo sto u Access-u upite mozes da kreiras u Design modu a mozes i kao SQL kod. Kada kreiras upit u Design modu snimi ga i otvori u SQL modu videces SQL kod pa mozes malo da ga analiziras i iz toga naucis sintaksu, pa ako treba mozes taj kod kopiratu u VBA editor i tamo ga koristiti.
Potpis
[email protected]=
Re: Remontovanje železničkih vagona 21.07.2014. u 09:42 · pre 149 meseci #15
Hvala FOX!

Uradila kako Ste mi preporučili . Kada napravim update query i prebacim na SQL View dobijam:

Code:
UPDATE Dnevnik SET Dnevnik.OsovinaID = [Me].[txtID], Dnevnik.Datum = [Me].[txtDatum], Dnevnik.Lokacija = [Me].[txtLokacija], Dnevnik.Precnik = [Me].[txtPriprema], Dnevnik.Izmene = [Me].[txtIzmene]
WHERE (((Dnevnik.OsovinaID)=[Unesi ID]) AND ((Dnevnik.Datum)=[Unesi Datum]));


ali i dalje nigde navodnika a ni format nije kao u onoj proceduri iznad. (a ja i dalje ne znam kako da prebacim ovo u VBA...)
Re: Remontovanje železničkih vagona 21.07.2014. u 10:46 · pre 149 meseci #16
Kada pokrenes taj upit (Query) koji si napravila da li odradi sve kako treba?

Ako odradi sve kako treba mozes preko VBA pokrenuti taj Query i da izvrsi azuriranje podataka

Code:
DoCmd.OpenQuery "NazivQuery-ja"


Na ovaj nacin uprostis pisanje procedura u VBA i procedure ce ti biti razumljivije.
Potpis
[email protected]=
Re: Remontovanje železničkih vagona 21.07.2014. u 11:44 · pre 149 meseci #17
Ako bas hoces bez pozivanja Query-ja onda bi kod izgledao ovako:

Code:
Dim Datum As String

'Datum moras zapisati u ovakvom fomratu da bi radilo kako treba
Datum = "#" & Month(Me.txtDatum.Value) & "/" & Day(Me.txtDatum.Value) & "/" & Year(Me.txtDatum.Value) & "#"

CurrentDb.Execute "UPDATE Dnevnik " & _
                "SET Dnevnik.OsovinaID = " & Me.txtID.Value & "," & _
                "Dnevnik.Datum = " & Datum & "," & _
                "Dnevnik.Lokacija = " & Me.txtLokacija.Value & "," & _
                "Dnevnik.Precnik = " & Me.txtPriprema.Value & "," & _
                "Dnevnik.Izmene = " & Me.txtIzmene.Value & "," & _
                "WHERE (((Dnevnik.OsovinaID)= " & Me.txtID.Value & ") " & _
                "AND ((Dnevnik.Datum)= " & Datum & "));"


Ndam se da sam dobro napisao kod s obzirom da nisam imao konkretnu bazu, ako bude bilo problema okaci bazu pa cu ispraviti kod kako treba.
I mislim da bi trebalo da koristis .Value a ne .Tag
Trebalo bi da i tvoj kod radi samo pokusaj da prvo datum konvertujes u format kao sto sam ja to uradio u mom kodu.
Potpis
[email protected]=
Re: Remontovanje železničkih vagona 21.07.2014. u 14:01 · pre 149 meseci
izmenjeno 1 put, poslednji put marija.ana 21.07.2014. u 14:25
  1. marija.ana21.07.2014. u 14:25zapis iz teksta poruke
#18
Citat:
FOX028:
Ndam se da sam dobro napisao kod s obzirom da nisam imao konkretnu bazu, ako bude bilo problema okaci bazu pa cu ispraviti kod kako treba.
I mislim da bi trebalo da koristis .Value a ne .Tag
Trebalo bi da i tvoj kod radi samo pokusaj da prvo datum konvertujes u format kao sto sam ja to uradio u mom kodu.


Tag koristim da skladištim OsovinaID i Datum (primary key) u slučaju menjanja zapisa. Moj kod ne radi (syntax error) izgrešila sa navodnicima. Evo moje bazice u pokušaju. Ne radi mi Add / Update i Delete u DnevnikF formi.


p.s. auuu muke sa uploadom, jedva nađoh kako, pa zatim i ograničenje. Ne može upload, evo linka
Re: Remontovanje železničkih vagona 21.07.2014. u 18:22 · pre 149 meseci #19
U proceduri si pozivala neku sub formu DnevnikSubF2 koja uopste ne postoji, u proceduri Add imas nazive nikh polja koja uopste ne postoje na formi. Da bi sve ovo izbegla potrebno je da u VBA editoru odes na Debug=>Compile i ako postoji neka nelogicnost Access ce ti to sam pokazati.
Koliko sam mogao da vidim ti si za jedno dugme htela da ti radi dve funkcije, da dodaje novu stavku i da je azurira nakon editovanja, ako hoces da odradis na taj nacin onda moras u VBA da prvo ispitas koji stoji naziv za taj taster (Add ili Update) i u zavisnosti od toga da zna sta da radi.
U tabeli Dnevnik za Datum tip podataka si stavila Text i ogranicila na 9 karaketra pa ti je datum bio 17.03.201 nedostaje jos jedan karakter, za ovo polje sam ti promenio tip podatka na Date\Time.

Nisam uspeo da odradim onako kako si zapocela vec sam kreirao akcione upite koji se pozivaju iz VBA, kod mene sve radi kako treba. Ndam se da ti odgovara ovako.

Sto se tice velicine baze mozes je smanjiti koriscenjem opcije Compact. Pogledaj sledeci link

http://www.fmsinc.com/microsoftaccess/compact/compact-on-close.html

Pozz

Potpis
[email protected]=
Re: Remontovanje železničkih vagona 21.07.2014. u 19:09 · pre 149 meseci #20
Citat:
FOX028: U proceduri si pozivala neku sub formu DnevnikSubF2 koja uopste ne postoji


Dvojka je missclick. Treba samo DnevnikSubF.




Citat:
FOX028: U proceduri Add imas nazive nikh polja koja uopste ne postoje na formi.


To sam copy paste tvoje resenje post iznad a ti si tu permutovao neka polja.


Citat:
FOX028: Da bi sve ovo izbegla potrebno je da u VBA editoru odes na Debug=>Compile i ako postoji neka nelogicnost Access ce ti to sam pokazati.
Sto se tice velicine baze mozes je smanjiti koriscenjem opcije Compact. Pogledaj sledeci link


Hvala ovo mi je bas trebalo.


Citat:
FOX028:Koliko sam mogao da vidim ti si za jedno dugme htela da ti radi dve funkcije, da dodaje novu stavku i da je azurira nakon editovanja, ako hoces da odradis na taj nacin onda moras u VBA da prvo ispitas koji stoji naziv za taj taster (Add ili Update) i u zavisnosti od toga da zna sta da radi.


Nemoguće da ne može da se odradi pomoću VBA. Ovo što je Izonic dao u postu ispred, radi savršeno:

Code:
Private Sub cmdAdd_Click()
    On Error GoTo Greska
            If Me.txtID.Tag & "" = "" Then ' Vjerovatno u tag polja txtID  se upisuje Kriterij pretrage  kada se vrsi  donos podataka iz baze.
                                                     ' lakse je bilo provjeravati polje txtid  a u njga vrsiti donos podataka ali ne i upisivati u bazu.
                                                     ' Ako je uslov ispunjen dopisat ce se novi red podataka u bazu prepisan sa forme
              CurrentDb.Execute "INSERT INTO Osovine (Broj, Godina, Tip, Napomena)" & _
                    " VALUES (" & Me.txtbroj & ",'" & Me.txtGodina & "','" & Me.txtTip & "','" & Me.txtNapomena & "')"
          Else
        ' ako nije zadovoljen uslov onda se radi o izmjeni podataka pa prema tome netreba mijenjati kljuc odnosno Id On je samo uslov da se nadje
        ' red u koji treba upisati podatke
              CurrentDb.Execute "UPDATE Osovine " & _
                      " SET Broj='" & Me.txtbroj & "'" & _
                      ", Godina='" & Me.txtGodina & "'" & _
                      ", Tip='" & Me.txtTip & "'" & _
                      ", Napomena='" & Me.txtNapomena & "'" & _
                      " WHERE OsovinaID=" & Me.txtID.Tag
          End If
          cmdClear_Click
          OsovineSubF.Form.Requery
Izlaz:
    Exit Sub
Greska:
    If Err.Number = 3134 Then
    MsgBox "Niste popunili podatke"
    ' ili nista
    Else
    MsgBox "Ne predvidena greska " & Err.Number
    End If
 End Sub




To mi je u formi osovine ali je tu samo jedno polje primary key i upisuje se WHERE OsovinaID=" & Me.txtID.Tag U formi Dnevnik je procedura drugacija posto je primary kombinovani datum i osovinaID, e sad koliko sam videla radi mi i u formi dnevnik sve sem update zbog onog posle WHERE

U formi Osovine je WHERE OsovinaID=" & Me.txtID.Tag

A u formi Dnevnik je kombinovani primary pa mora da se snima po broju osovine i po datumu. Ja probala WHERE OsovinaID=" & Me.txtID.Tag And Datum=" & Me.txtDatum.Tag al šipak, ne radi a baš sam se zainatila.

Isto tako ni Delete ne umem da napišem u Dnevnik formi zbog Kombinovanog kljuca
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme