VBA函数返回SQL值预期函数

时间:2019-07-11 00:09:54

标签: sql vba access-vba ms-access-2010

我有一个MS Access数据库(出于种种原因,我没有理由不使用Access)。

我正在尝试运行VBA子程序,以根据作为查询结果的参数循环进行某些查询。

有一个查询,对表中的值求和。 我需要使用IF ELSE语句在VBA中使用函数返回此函数。

<template>
    <div id="databinding">
        <div id="counter-event-example">
            <p style="font-size:25px;">Language displayed : <b>{{ languageclicked }}</b></p>
            <button-counter v-for="(item, index) in languages"
                            v-bind:item="item"
                            v-bind:index="index"
                            v-on:showlanguage="languagedisp"></button-counter>
        </div>
    </div>
</template>

<script>
   // import Home from './components/Home.vue';
  //  import component1 from './components/component1.vue';

    export default {
        name: 'app',
        Vue.components('button-counter', {
            template: '<button v-on:click = "displayLanguage(item)"><span style = "font-size:25px;">{{ item }}</span></button>',
            data: function () {
                return {
                    counter: 0
                }
            },
            props: ['item'],
            methods: {
                displayLanguage: function (lng) {
                    console.log(lng);
                    this.$emit('showlanguage', lng);
                }
            },
        });
         new Vue({
            el: '#databinding',
            data: {
                languageclicked: "",
                languages: ["Java", "PHP", "C++", "C", "Javascript", "C#", "Python", "HTML"]
            },
            methods: {
                languagedisp: function (a) {
                    this.languageclicked = a;
                }
            }
        })
    };


</script>

<style>
</style>

代码不会在这里继续,相反,当我进入代码时,它将在此函数处停止并出现错误“期望的函数或值”

Public dbs As DAO.Database

Sub Main()

Dim SumCheck As Double
Set dbs = CurrentDb

GoTo LoopCheck

LoopCheck:
    SumCheck = SOSum(dbs)
    If SumCheck = 0 Then
        GoTo EndPart
    Else
        GoTo STPTGet
    End If

循环检查查询很简单

Public Function SOSum(db As DAO.Database) As Double
    Dim sumg As Double
    Set db = dbs
    Set sumg = db.Execute("LoopCheck")
    Set db = Nothing
    Set SOSum = sum

End Function

查询在Access中工作,它应该只检查它是否为0。

这是我的第一篇文章,因此请原谅任何格式错误或明显丢失的信息。任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题。

首先,您似乎拥有dbs作为公共数据库对象。因此,您无需将其传递给函数。设置完毕后,您就可以使用它。

接下来,db.execute方法将仅运行操作查询(例如INSERT,UPDATE,DELETE ...),并且不返回任何内容。您将需要使用记录集来获取查询结果。

最后,您的函数返回一个Double,因此您不应该使用Set关键字来返回值。

将所有这些放在一起:

数据库对象全局声明:

Public dbs as DAO.Database

一个MAIN子(问题中只给出了部分):

Sub Main()

Dim SumCheck As Double
Set dbs = CurrentDb

'...

SumCheck = SOSum

'...

以及您的SOSum函数:

Public Function SOSum() As Double
    Dim sum As Double
    Dim rs As DAO.Recordset

    Set rs= dbs.OpenRecordset("LoopCheck")
    sum = rs(0).Value
    Set rs = nothing

    SOSum = sum

End Function