Tema: Re: Access 2007 VBA klausimukas
Autorius: ziuras
Data: 2010-06-28 06:54:57
> 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.