VBA SQL查询string,支持多less?

仍然在为一个项目的查询工作,我的合作伙伴已经设法提出了一个漂亮的SQL语句什么奇迹运行,但似乎在VBA工作,它让我质疑有多lessSQL语句在VBA支持

这是我的工作伙伴鞭打的原始查询,它在SQL中运行查询时效果很好

SELECT crm_clients.`id`, crm_clients.`national_insurance`, crm_clients.`total_hmrc`, (SELECT crm_crmuseractions.title FROM dev_pfands.`crm_crmuseractions` WHERE crm_crmuseractions.`id` = crm_clients.`status`) AS `status` FROM dev_pfands.`crm_clients` INNER JOIN crm_client_cheques ON crm_clients.id = crm_client_cheques.`client_id` INNER JOIN dev_pfands.`crm_payments` ON crm_clients.id = crm_payments.`client_id` INNER JOIN dev_pfands.`crm_self_assesments` ON crm_clients.id = crm_self_assesments.`client_id` WHERE crm_clients.`status` = 9 OR crm_clients.`status` = 8 OR crm_clients.`status` = 7 OR crm_clients.`national_insurance` != '' OR crm_clients.`id` != '' 

我知道VBA喜欢SQL结构有点不同,所以我适应了这一点,这可能是错误的,如果它是随意烧我,因为我需要学习。

 sql = "SELECT crm_clients.id, crm_clients.national_insurance, crm_clients.total_hmrc _ (SELECT _ crm_crmuseractions.title _ FROM _ crm_crmuseractions _ WHERE crm_crmuseractions.id = crm_clients.status ) AS 'status _ FROM _ crm_clients _ INNER JOIN crm_client_cheques _ ON crm_clients.id = crm_client_cheques.client_id _ INNER JOIN crm_payments _ ON crm_clients.id = crm_payments.client_id _ INNER JOIN crm_self_assesments.client_id _ WHERE crm_clients.status = 9 _ OR crm_clients.status = 8 _ OR crm_clients.status = 7 _ OR crm_clients.national_insurance != '' _ OR crm_clients.id != '' " 

事先道歉,如果它的东西错过了,但任何简单的select或插入/删除和更新SQL的其他function像联接等一些似乎不适合我在VBA

如果有人知道我错了什么地方,那么这将是伟大的,如果我做得很好,它的不支持的function,甚至解释为什么会是伟大的,所以我可以把它关联到我的工作朋友谁相信它的工作。

感谢先进的人。

 Dim query As String query = "SELECT " & _ "crm_clients.id, " & _ "crm_clients.national_insurance, " & _ "crm_clients.total_hmrc, " & _ "(SELECT " & _ " crm_crmuseractions.Title " & _ "FROM " & _ " dev_pfands.crm_crmuseractions " & _ "WHERE crm_crmuseractions.`id` = crm_clients.status) AS 'status' " & _ "FROM " & _ "dev_pfands.crm_clients " & _ "INNER JOIN crm_client_cheques " & _ " ON crm_clients.id = crm_client_cheques.client_id " & _ "INNER JOIN dev_pfands.crm_payments " & _ " ON crm_clients.id = crm_payments.client_id " & _ "INNER JOIN dev_pfands.crm_self_assesments " & _ " ON crm_clients.id = crm_self_assesments.client_id " & _ "WHERE crm_clients.status = 9 " & _ "OR crm_clients.status = 8 " & _ "OR crm_clients.status = 7 " & _ "OR crm_clients.national_insurance != '' " & _ "OR crm_clients.id != ''" 

您需要在多行中连接数据string,如下所示:

 strText = "This is the first line " & _ "This is the second line" 

鉴于您拥有大量的文本,您可能会遇到错误Too many line continuations (因为Too many line continuations的最大数量是25)。 在这种情况下,你可以像这样连接string:

 strText = "This is the first line" strText = strText & "This is the second line" 

注意在编写SQL语句时,您需要确保在正确的位置包含空格,即您很可能需要在每行末尾留出空格。

写它没有单一的滴答声,并避免单引号,在VBA中总是使用双引号。

像这样的东西

  Sql = "SELECT" & _ " crm_clients.""id""," & _ " crm_clients.""national_insurance"","