[ Untouchabble @ 21.03.2008. 00:41 ] @
Prakticno sam pocetnik u Accessu, pravim neku manju bazu za robno knjigovodstvo. Uglavnom, evo problema:

Code:
Public Sub Unesi()

    Dim cnnUnos As New ADODB.Connection
    Dim rstUnos As New ADODB.Recordset

    Set cnnUnos = CurrentProject.Connection
    
    'Otvaram recordset za tabelu Artikli i unosim vrednosti public promenljivih
    rstUnos.Open "tblArtikli", cnnUnos, adOpenKeyset, adLockOptimistic, adCmdTable
    
    rstUnos.AddNew
    
    rstUnos!PLU = intPLU
    rstUnos!Artikal = strArtikal
    rstUnos!TipObuce = strTipObuce
    rstUnos!IDDobavljac = lngIDDobavljac
    rstUnos!NabavnaCena = sngNabavnaCena
    rstUnos!ProdajnaCena = sngProdajnaCena
    rstUnos!Kolicina = intKolicina
    rstUnos!Komentar = strKomentar
    
    rstUnos.Update
    
    lngIDArtikal = rstUnos!IDArtikal    'Pamtim autonumber vrednost
    'zatvaram recordset
    rstUnos.Close
    
    'Otvaram nov recordset za tabelu UnosRobe i unosim vrednosti public promenljivih
    rstUnos.Open "tblUnosRobe", cnnUnos, adOpenKeyset, adLockOptimistic, adCmdTable

    rstUnos.AddNew
    
    rstUnos!DatumUnosa = dateDatum
    rstUnos!BrRacuna = strBrojRacuna
    rstUnos!TipUnosa = strTipUnosa
    rstUnos!IDArtikal = lngIDArtikal
    rstUnos!IDDobavljac = lngIDDobavljac
    rstUnos!UnosKolicina = intKolicina
    rstUnos!UnosProdajnaCena = sngProdajnaCena
    
    rstUnos.Update
    rstUnos.Close
    
    cnnUnos.Close

End Sub
Umesto lngIDArtikal, u IDArtikal polju tabele UnosRobe mi pamti lngIDDobavljac??? Molim za pomoc sto pre, probijam rok.
[ Getsbi @ 21.03.2008. 06:44 ] @
Ja radim u DAO 3.6 standardu tako da nisam baš mnogo pozvan da komentarišem ADO ali probaj da u redu ispod ovog:
'Otvaram nov recordset za tabelu UnosRobe i unosim vrednosti public promenljivih
rstUnos.Open "tblUnosRobe", cnnUnos, adOpenKeyset, adLockOptimistic, adCmdTable

napišeš:

MsgBox lngIDArtikal

Da vidiš koju vrednost će da ti vrati. Mislim da bi trebalo da dimenzionišeš promenljivu "lngIDArtikal" gore ispod
Dim rstUnos As New ADODB.Recordset
Takođe je dobra praksa da na početku modula ispod Option Compare Database napišeš
Option Explicit


[ domaci_a_nas @ 21.03.2008. 09:49 ] @
Slažem se u potpunosti sa onime što je Getsbi rekao za deklarisanje promenljivih, mada pošto se radi o deklarisanju unutar iste procedure vrednost lngIDArtikal bi trebalo da se očuva i bez toga. Probaj da problem rešiš na sledeći način bez lngIDArtikal. Tako bi update tblUnosRobe izgledao ovako :

rstUnos!IDArtikal = DMax("IDArtikal","tblArtikli")
[ Untouchabble @ 21.03.2008. 09:54 ] @
Uradio sam to, i vraca pravu(potrebnu) vrednost! Ali nece da je sacuva u tabeli.
Ne moram da dimenzionisem promenljivu jer sam je vec deklarisao kao Public lngIDArtikal As Long. Btw, kako to funkcionise kod Accessa? Da li u svakom modulu/formu moram da deklarisem Public promenljive? Jer ako ukljucim Require Variable Declaration, prijavljuje mi gresku u svim Form-ovima, osim modula u kome su promenljive deklarisane. Tj, kako da postavim odredjeni modul kao pocetni, kao npr Sub Main u obicnom VB?
[ Untouchabble @ 21.03.2008. 10:23 ] @
Resen problem, lookup upit u polju IDArtikal je bio lose definisan, dakle nema veze sa kodom. I dalje me zanima:
Citat:
Da li u svakom modulu/formu moram da deklarisem Public promenljive? Jer ako ukljucim Require Variable Declaration, prijavljuje mi gresku u svim Form-ovima, osim modula u kome su promenljive deklarisane. Tj, kako da postavim odredjeni modul kao pocetni, kao npr Sub Main u obicnom VB?
Hvala!
[ Getsbi @ 21.03.2008. 11:42 ] @
Ne moraš u svakom. Deklaracija Public variabli je dovoljna u jednom od objekata Modules. Prijavljivaće grešku ako ih budeš ponavljao i u modulima formi ili reporta. Ne moraš da postavljaš taj modul sa Public variablama kao početni jer je vidljiv u cleom programu. Mislim da mogu dve službene reči da se upotrebe za tu namenu: Global ili Public.
[ Untouchabble @ 22.03.2008. 21:18 ] @
Hvala drugar!