在我的excel VBA函数中,'strSQL'帮助我获得所有数据字段中所有记录的案例文本长度的完美结果(下图)255 char否则函数返回所有记录的空值,如果该特定字段中的任何单元格拥有超过255个字符。
strSQL = "SELECT [Company Name], [ProfileType], [DataField0],[DataField1],
[DataField2],[DataField3],[DataField4],[DataField5],[DataField6],[DataField7]
FROM [Data$] WHERE [Company Name] = 'XYZ' ORDER BY [Heading_Order];"
我正在使用ADODB来建立连接。
答案 0 :(得分:1)
您对查询结果有何看法?
如果您尝试将它们插入Access表,请检查该表的数据类型以确保它不是Text
字段。这个限制为255个字符。
对于较大的文本字段,请使用Memo
(或Long Text
)
除此之外,如果前8个记录包含255个或更少的字符,您的数据可能会被截断为255个字符。默认情况下,Microsoft Excel ODBC驱动程序将扫描数据的前8行,以确定每列中的数据类型。尝试将列的数据类型转换为文本(甚至将超过255个字符的行移动到第一行)
答案 1 :(得分:0)
这是将SQL字符串转换为VBA代码的好方法。
创建表单
表单只需要两个文本框和一个命令按钮。 SQL语句可能很长,因此您可以将文本框放在选项卡控件的不同页面上。
Create a new form (in design view.)
Add a tab control.
In the first page of the tab control, add a unbound text box.
Set its Name property to txtSql.
Increase its Height and Width so you can see many long lines at once.
In the second page of the tab control, add another unbound text box.
Name it txtVBA, and increase its height and width.
Above the tab control, add a command button.
Name it cmdSql2Vba.
Set its On Click property to [Event Procedure].
Click the Build button (...) beside this property.
When Access opens the code window, set up the code like this:
Private Sub cmdSql2Vba_Click()
Dim strSql As String
'Purpose: Convert a SQL statement into a string to paste into VBA code.
Const strcLineEnd = " "" & vbCrLf & _" & vbCrLf & """"
If IsNull(Me.txtSQL) Then
Beep
Else
strSql = Me.txtSQL
strSql = Replace(strSql, """", """""") 'Double up any quotes.
strSql = Replace(strSql, vbCrLf, strcLineEnd)
strSql = "strSql = """ & strSql & """"
Me.txtVBA = strSql
Me.txtVBA.SetFocus
RunCommand acCmdCopy
End If
End Sub
http://allenbrowne.com/ser-71.html