如何在名称中传递带空格的参数来存储vba访问中的过程?

时间:2017-03-01 15:44:01

标签: sql-server vba access-vba

我正在使用vba访问和SQL服务器。我有一个表单,其中有一个名为Material ID的字段,带有空格。现在,我试图在Store Procedure中传递它,但我不确定如何实际传递它。我一直在努力的代码是:

If frm.Tag Then
    strFilter = "usp_MovePending '" & UserStr & "'"
    strFilter = strFilter & "," & frm!MaterialID  

    DB.QueryDefs("qryMovePending").Connect = SQLConnectString
    DB.QueryDefs("qryMovePending").ReturnsRecords = False
    DB.QueryDefs("qryMovePending").sql = strFilter
    DB.QueryDefs("qryMovePending").Execute dbFailOnError
End If

在上面的代码中,我使用frm!MaterialID没有空格,这显然给我一个错误Microsoft access can't find the field 'MaterialID' referred to in your expression。当我保留[frm!Material ID]空格时,它不会返回任何内容。我也尝试保持单引号,但它返回单引号没有价值。请帮忙。

3 个答案:

答案 0 :(得分:1)

尝试使用方括号作为分隔符...

import os
import xlwt
import xlrd

index = 0

workbook = xlwt.Workbook()
Testsheet = workbook.add_sheet('test')
row=input()
col=input()
path= 'U:\SWEModelConstruction\Milk'
for root,dirs,files in os.walk(path):
    xlsfiles=[ _ for _ in files if _.endswith('.xls') ]
for xlsfile in xlsfiles:
    wb = xlrd.open_workbook(os.path.join(root,xlsfile))
    n = len(wb.sheets())
for s in range(n) :
    sheet = wb.sheet_by_index(s)
    data=sheet.cell(row,col).value
    Testsheet.write(index, 0, data)
index=index+1

workbook.save('Test.xls')

答案 1 :(得分:0)

我对Access对象模型不太熟悉,但在VBA / VB6中, bang表示法 foo!bar是显式表示法的简写:

foo("bar").Value

换句话说,frm!Foobar是这方面的简写:

frm("Foobar").Value

所以你会这样做:

frm("Material ID").Value

答案 2 :(得分:0)

几乎可以肯定地添加了一个下划线 - 尝试使用Me.Material_ID或Me。[Material ID]来引用实际的表单控件名称。值是默认属性