Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 使用VBA';案例';语句替换Access中字符串中的多个值_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 使用VBA';案例';语句替换Access中字符串中的多个值

Ms access 使用VBA';案例';语句替换Access中字符串中的多个值,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我知道有几个帖子和我正在发布的帖子很相似,我已经浏览了一遍,仍然无法找出我做错了什么。我还检查了如何使用VBA正确设置CASE语句,但仍然找不到我做错了什么 基本上,我有一个用户输入表单,用户输入一个零件号,看起来像这样:0A1B2-3C-4D-5E6F。用户添加记录后,零件号应扫描字符串中的任何“”或“-”,并将其替换为“”,如下所示:A1B23C4D5E6F,并更新表中的记录 下面是我正在使用的代码:(txtString作为我的字段) 我仍在学习VBA的诀窍,但编译得很好。我是否在逻辑上为我

我知道有几个帖子和我正在发布的帖子很相似,我已经浏览了一遍,仍然无法找出我做错了什么。我还检查了如何使用VBA正确设置CASE语句,但仍然找不到我做错了什么

基本上,我有一个用户输入表单,用户输入一个零件号,看起来像这样:0A1B2-3C-4D-5E6F。用户添加记录后,零件号应扫描字符串中的任何“”或“-”,并将其替换为“”,如下所示:A1B23C4D5E6F,并更新表中的记录

下面是我正在使用的代码:(txtString作为我的字段)

我仍在学习VBA的诀窍,但编译得很好。我是否在逻辑上为我要完成的任务而错误地构造了这段代码,或者我的代码设置错误了?我感谢所有的反馈和回答

谢谢

编辑此代码在frmAddString打开时被调用(在access的“宏和代码-Visual Basic-Form_frmAddString”中)

EDIT2我正在一个测试数据库中尝试此功能,该数据库具有以下功能:

tblTestingStrings

-字段1:StringID

-字段2:txtString

frmAddString(我的代码位于此弹出表单上,该表单在Add中打开)

-btnSaveandClose

-txtString

-斯特林吉德

frmAddString的EDIT3代码

Option Compare Database

Private Sub btnSaveandClose_Click()

DoCmd.Save
DoCmd.Close

End Sub

Public Function strReplace(txtString As String) As String

 Select Case txtString

        Case "-"
          strReplace = ""

        Case " "
            strReplace = ""

        Case Else
            txtString = strReplace

    End Select

End Function

txtString是用户输入单词的地方。

实际上,这样做更容易

Public Function strReplace(txtString As Variant) As Variant
        strReplace = Replace(Replace(txtString, " ", ""), "-", "")
End Function

事实上,你所做的更容易

Public Function strReplace(txtString As Variant) As Variant
        strReplace = Replace(Replace(txtString, " ", ""), "-", "")
End Function

如果要比较完整字符串,则需要比较characters@Barranka那不是我想做的吗?当用户输入一个完整的字符串时,检查并替换所需内容?@Dylan,用户输入的内容不等于
-
或`;您的代码被构建为一个字符。例如,您需要将条目拆分为单个字符,并在该集合中循环…如果我理解我做错了什么,则效率不高。我将回顾这段代码,看看如何修复它。如果要比较完整的字符串,需要比较characters@Barranka那不是我想做的吗?当用户输入一个完整的字符串时,检查并替换所需内容?@Dylan,用户输入的内容不等于
-
或`;您的代码被构建为一个字符。例如,您需要将条目拆分为单个字符,并在该集合中循环…如果我理解我做错了什么,则效率不高。我将回顾这段代码,看看如何修复它。这看起来不错,但我建议使用两行而不是一行,以便于简单易读。我感觉这也行,当我在11-22-33中输入它进行尝试时,它仍然将其保存在表中作为11-22-33。我认为这与我的表格设置方式有关。我使用以下内容创建了一个测试数据库:tblTestingStrings frmTestingStrings,frmAddString,其中frmAddString只是添加添加新字符串的提示。它还有一个带有DoCmd.Save和DoCmd.Close的按钮。@Dylan——要证明这个答案确实正确,请将它粘贴到即时窗口中,然后按Enter键:
?Replace(Replace(Replace)(Replace(“我的样本尝试”),“”,“”,“”,“-”,“”)
@Dylan——尝试将
作为变量更改为
作为字符串,我采用了一种不同的方法,因为我能够让它在查询中完全执行我想要的操作,所以我只是在查询中生成表单,并让查询在需要的地方更新表上的记录。工作得很有魅力!我认为我设置表单的方式导致了这些问题。再次感谢你的回答!这看起来不错,但为了简单易读,我建议使用两行而不是一行。我感觉这也行,当我在11-22-33中尝试输入时,它仍然将其保存在表中作为11-22-33。我认为这与我的表格设置方式有关。我使用以下内容创建了一个测试数据库:tblTestingStrings frmTestingStrings,frmAddString,其中frmAddString只是添加添加新字符串的提示。它还有一个带有DoCmd.Save和DoCmd.Close的按钮。@Dylan——要证明这个答案确实正确,请将它粘贴到即时窗口中,然后按Enter键:
?Replace(Replace(Replace)(Replace(“我的样本尝试”),“”,“”,“”,“-”,“”)
@Dylan——尝试将
作为变量更改为
作为字符串,我采用了一种不同的方法,因为我能够让它在查询中完全执行我想要的操作,所以我只是在查询中生成表单,并让查询在需要的地方更新表上的记录。工作得很有魅力!我认为我设置表单的方式导致了这些问题。再次感谢你的回答!