堆栈空间不足 - 运行时错误'28'

时间:2017-02-02 23:11:07

标签: vba ms-access if-statement access-vba ms-access-2010

我想检查所有字段是否已填满,如果字段[Status predmeta]是“Završeno”,那么我想要解锁名为[Predmetzaključan]的复选框。

我在变更事件中放置了每个文本框的第一个函数,在变更事件上放置了[状态预测]的第二个函数。

当我填写所有字段并将[Status predmeta]设置为“Završeno”时,我得到“堆栈空间不足 - 运行时错误'28'”,当我点击调试它显示我在第二个功能中标记的行。

函数检查是否所有字段都不为空(我在设置中设置允许所有字段的长度为“否”)如果为true,则函数为true,否则函数为false。

    Public Function provjerapolja() As Boolean

If Not IsNull(Me.Naziv_tvrtke) And Not IsNull(Me.Ime_korisnika) And Not IsNull(Me.Prezime_korisnika) And Not IsNull(Me.Adresa_korisnika) And Not IsNull(Me.Telefon) And Not IsNull(Me.Mail) And Not IsNull(Me.Vrsta_uredaja) And Not IsNull(Me.Model) And Not IsNull(Me.Lokacija) And Not IsNull(Me.Datum_ugradnje) And Not IsNull(Me.Datum_dogovorenog_servisa) And Not IsNull(Me.Opis_kvara) And Not IsNull(Me.Napomene) And Not IsNull(Me.Nalog_dodijeljen) And Not IsNull(Me.Broj_radnih_sati) And Not IsNull(Me.Udaljenost) And Not IsNull(Me.Obavljeni_radovi) And Not IsNull(Me.Status_predmeta) And Not IsNull(Me.Otpremnica) And Not IsNull(Me.Broj_otpremnice) And Not IsNull(Me.Račun) Then
provjerapolja = True


    If provjerastanja = True Then
    [Predmet zaključan].Locked = False
        End If
Else
provjerapolja = False

End If
End Function

功能检查[状态预测]是否与“Završeno”不同,而不是调用provjerastanja

Public Function provjerastanja() As Boolean

If [Status predmeta] <> "Završeno" Then
provjerastanja = False

ElseIf [Status predmeta] = "Završeno" Then
provjerastanja = True


    If provjerapolja = True Then   <--- Debug showing this line as error
    [Predmet zaključan].Locked = False
    End If


End If
End Function

2 个答案:

答案 0 :(得分:0)

阅读本文以了解会发生什么:Debugging VBA Code

你创建了一个无限循环(或递归),两个函数互相调用。你需要重新思考你的方法。

答案 1 :(得分:0)

创建变量来存放函数projerapolja和projverastanja的结果,否则你将永远调用另一个函数。 E.g。

Public Function provjerastanja() As Boolean
Dim bProv as Boolean

If [Status predmeta] <> "Završeno" Then
provjerastanja = False

ElseIf [Status predmeta] = "Završeno" Then
provjerastanja = True

    bProv=provjerapolja
    If bProv = True Then   <--- Debug showing this line as error
    [Predmet zaključan].Locked = False
    End If


End If
End Function