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.