2014-11-24 94 views
4

我没有太多的写VBA脚本的经验,我几乎找不到多行字符串。确切位置在哪里我迷失是,当我试图拆多行字符串,你能帮助我如何结束VBA多行字符串问题

工作管柱上是分裂的前下方:

strSQL = "insert into ded_limit_analysis (PDPD_ID,PDDS_DESC,PRODUCT_CAT,BASE_PDPD_ID,PROD_CYCLE,HMO_IND_DED) " & vbCrLf & _ 
"values (" & "'" & Me.txt_pdpd_id & "'" & "," & "'" & Me.txt_pdds & "'" & "," & "'" & Me.cbx_prod_type & "'" & "," & "'" & Me.txt_base_pdpd & "'" & "," & "'" & Me.cbx_prod_cycle & "'" & "," & "'" & Me.txt_hmo_ind_ded & "'" & ")" 

的一个工作不低于,我我试图分割线,因为我有很多列插入,它是超过1000个字符,并不能适应单行(下面只是示例,实际是更长,我被迫拆分线)。

strSQL = "insert into ded_limit_analysis (PDPD_ID,PDDS_DESC,PRODUCT_CAT,BASE_PDPD_ID,PROD_CYCLE,HMO_IND_DED) " & vbCrLf & _ 
"values (" & "'" & Me.txt_pdpd_id & "'" & "," & "'" & Me.txt_pdds & "'" & "," & "'" & Me.cbx_prod_type & "'" & "," & "'" & Me.txt_base_pdpd & "'" & "," & "'" & Me.cbx_prod_cycle & "'" & "," & " & vbCrLf &" _ 
& "'" & Me.txt_hmo_ind_ded & "'" & ")" 

请指点我在哪里搞乱了,感谢

回答

8

你需要用 “&”

因此,开始的下一行:

strSQL = "insert into ded_limit_analysis (PDPD_ID,PDDS_DESC,PRODUCT_CAT,BASE_PDPD_ID,PROD_CYCLE,HMO_IND_DED) " _ 
    & vbCrLf & "values (" & "'" & Me.txt_pdpd_id & "'" & "," _ 
    & "'" & Me.txt_pdds & "'" & "," & "'" & Me.cbx_prod_type _ 
    & "'" & "," & "'" & Me.txt_base_pdpd & "'" & "," & "'" _ 
    & Me.cbx_prod_cycle & "'" & "," & vbCrLf _ 
    & "'" & Me.txt_hmo_ind_ded & "'" & ")" 

虽然,看着串,你可以在你的代码中消除很多“&”。这会更清洁:

strSQL = "insert into ded_limit_analysis (PDPD_ID, " _ 
             & "PDDS_DESC, " _ 
             & "PRODUCT_CAT, " _ 
             & "BASE_PDPD_ID, " _ 
             & "PROD_CYCLE, " _ 
             & "HMO_IND_DED) " _ 
     & " values ('" & Me.txt_pdpd_id & "', '" _ 
        & Me.txt_pdds & "', '" _ 
        & Me.cbx_prod_type & "', '" _ 
        & Me.txt_base_pdpd & "', '" _ 
        & Me.cbx_prod_cycle & "', '" _ 
        & Me.txt_hmo_ind_ded & "')" 

这样理解起来就容易多了。另外,你的SQL中不需要“vbCrLf”。这只是空白。

+1

您的倒数第一行中的第一个块有一个尾随&。第二个例子在OP代码上看起来有了很大的改进 – 2014-11-24 19:47:24

+1

我同意简化字符串并尝试尽可能地对齐。我的个人偏好是将行切成适合我的代码窗口的宽度。这有助于调试速度,因为您不需要继续滚动到右侧(然后左侧)来查看您拥有的内容。 – 2014-11-24 19:51:49

+0

2x编辑,因为第一个SQL部分是凌乱的(对我的眼睛:) :) – 2014-11-24 19:55:15

0

第二个字符串vbCrLf位于引号内,被视为字符串而不是命令。

试试这个代码到位问题线之上的:

strSQL = "insert into ded_limit_analysis (PDPD_ID,PDDS_DESC,PRODUCT_CAT,BASE_PDPD_ID,PROD_CYCLE,HMO_IND_DED) " & vbCrLf & _ 
"values (" & "'" & Me.txt_pdpd_id & "'" & "," & "'" & Me.txt_pdds & "'" & "," & "'" & Me.cbx_prod_type & "'" & "," & "'" & Me.txt_base_pdpd & "'" & "," & "'" & Me.cbx_prod_cycle & "'" & "," & vbCrLf _ 
& "'" & Me.txt_hmo_ind_ded & "'" & ")" 
0

我seraching其他职位和工作后,此选项尝试,感谢证明其他的解决方案,对此表示赞赏。

strSQL = "insert into ded_limit_analysis (PDPD_ID,PDDS_DESC,PRODUCT_CAT,BASE_PDPD_ID,PROD_CYCLE,HMO_IND_DED) " & vbCrLf & _ 
"values (" & "'" & Me.txt_pdpd_id & "'" & "," & "'" & Me.txt_pdds & "'" & "," & "'" & Me.cbx_prod_type & "'" & "," & "'" & Me.txt_base_pdpd & "'" & "," & "'" & Me.cbx_prod_cycle & "'" & "," 
strSQL = strSQL & "'" & Me.txt_hmo_ind_ded & "'" & ")" 
+1

很高兴你的工作,但我建议保持你的VBA清洁与我的代码(上面)。当它看起来干净时,维护和修改更容易。 – 2014-11-24 19:56:40