2010-09-02 96 views
1

我想建立這樣的查詢:與字符串連接VBA問題

SQL = SQL + "Libelle = \"" + Me.Libelle + "\" AND " 

,因爲如果我有我的數據的問題,如果我這樣寫:

SQL = SQL + "Libelle = '" + Me.Libelle + "' AND " 

,但有一個與\」 問題我已經習慣使用它在Java中(我不是一個VBA developper:S)? 如何解決它 日Thnx

回答

0

的解決方案是一個級聯與CHR(34):)

SQL = SQL + "Libelle = " + Chr(34) + Me.Libelle + Chr(34) + " AND " 
+0

你不應該使用+連接字符串 – Fionnuala 2010-09-04 09:17:58

+0

,如果你想傳播空值,您應該使用+連接運算符和。如果你不這樣做 – 2010-09-10 19:32:47

2

在VBA使用&來連接字符串,+會導致意想不到的結果。 Jet SQL使用兩個單引號來轉義單引號。使用Replace來獲得這個是正常的。

SQL = SQL & "Libelle = '" & Replace(Me.Libelle,"'","''") & "' AND " 
+1

在VBA和Jet/ACE SQL中,&連接運算符忽略空(Null&「」=「」),而+連接運算符傳播空(Null +「」= Null)。在Mid((12 + LastName)&(「,」+ FirstName),3))等表達式中非常有用,但是您必須小心,不要試圖將其與數字字段(或者可以隱式強制爲數字的字符串值),因爲當「12」+ Null將傳播空值時,「12」+「 8「可以添加兩個字符串的數值(取決於上下文)。 – 2010-09-10 19:30:41

1

在VB中,您會得到一個帶有兩個引號的文本引號。 「ABC」,「高清」的產量ABC「高清

你想要的是:

SQL = SQL & "Libelle = """ & Me.Libelle & """ AND " 
+1

不要使用plus(+)連接VBA中的字符串,除非您瞭解其中一個字符串爲空時會發生什麼情況。 – Fionnuala 2010-09-03 17:06:06

+0

絕對正確。修復。 – 2010-09-04 02:35:56

+0

SQL的ANSI標準指定單引號(')。 – Fionnuala 2010-09-04 09:17:10