Tema: Re: Access 2007 VBA klausimukas
Autorius: Laimis
Data: 2010-06-27 22:19:57
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.