> vLastRegNo = DMax("regnr", "sutartys", "Year(data) = " & Year(data)) > > iNewRegNo = IIf(IsNull(vLastRegNo), 1, vLastRegNo + 1) vLastRegNo = NZ(DMax("regnr", "sutartys", "Year(data) = " & Year(data)),1, vLastRegNo + 1) atsirado tokia gera f-ja nz(). "Laimis" <wiela@centras.lt> wrote in message news:i0888t$99c$1@trimpas.omnitel.net... > Gedikas rašė: > >> DMax("[regnr]", "sutartys", "[metai] = Year(Forms!sutartys!data)") >> >> Deja rezultatas toks, kad įvedus neegzisuojačių metų "data" > > Turbūt įmanoma sukišti ir į vieną eilutę (pasinaudojus iif; nors gautųsi > kiek griozdiška), bet VBA kodas (data AfterUpdate() event procedūroje) > galėtų būti toks: > > Dim vLastRegNo As Variant > Dim iNewRegNo As Integer > > vLastRegNo = DMax("regnr", "sutartys", "Year(data) = " & Year(data)) > > iNewRegNo = IIf(IsNull(vLastRegNo), 1, vLastRegNo + 1) > > regnr.Value = iNewRegNo > > >> 2001-01-01, Dmax vistiek suskaičiuoja kitų metų regnr, nors teoriškai >> turėtų grąžint null, jei pagal parametrą nieko nerado. > > DMax turbūt elgiasi korektiškai; tavo kriterijaus sąlygoje yra nuoroda į > Formos elementą/lauką, o ne apibrėžta to elemento/lauko reikšmė; tai > svarbus skirtumas (nes tada reikia pasukti galvą, kada visa ši DMax() > išraiška yra apskaičiuojama ir kokią reikšmę ji pasiima iš > Forms!sutartys!data), ar neužsicirkuliuoja...). > Turėtų būti (taip siūloma konstruoti DMax išraiškas ir pačiame DMax > aprašyme, pavyzdžiuose): > > DMax("[regnr]", "sutartys", "[metai] = " & Year(Forms!sutartys!data)) > > tačiau turbūt susidursi su Null reikšmės problema vesdamas naujus metus.