Vb6 具有子字符串函数的DAO记录集

Vb6 具有子字符串函数的DAO记录集,vb6,dao,foxpro,Vb6,Dao,Foxpro,我有一个vb6应用程序,我正在使用DAO创建到数据库的连接,并尝试打开一个记录集。该数据库是一个foxpro数据库,我已经参考了Microsoft DAO 2.5/3.5兼容性库 我的代码如下 Dim gdbSMS As Database If gdbSMS Is Nothing Then Set gdbSMS = OpenDatabase("C:\Work\M2M Test\DATA", False, False, "Foxpro 2.6;") End If Dim

我有一个vb6应用程序,我正在使用DAO创建到数据库的连接,并尝试打开一个记录集。该数据库是一个foxpro数据库,我已经参考了Microsoft DAO 2.5/3.5兼容性库

我的代码如下

  Dim gdbSMS As Database
  If gdbSMS Is Nothing Then
     Set gdbSMS = OpenDatabase("C:\Work\M2M Test\DATA", False, False, "Foxpro 2.6;")
  End If
  Dim sql As String
  sql = "select *, substr(lineitem,8,6)  as aa from shippers where shipper = '001322' order by aa"

  Dim rsShipper As DAO.Recordset
  Set rsShipper = gdbSMS.OpenRecordset(sql)
  Do While Not rsShipper.EOF
      Beep
      rsShipper.MoveNext
  Loop
  rsShipper.Close
当我为openrecordset执行第行时,我在表达式中得到一个错误“未定义函数'substr' 我在foxpro中运行了完全相同的查询,它运行得很好。我需要做些什么才能使它与子字符串函数一起工作呢?
谢谢

尝试改用T-SQL子字符串函数

SUBSTRING ( value_expression , start_expression , length_expression )

不使用DAO记录集,而是使用DataTables,以及使用OleDBProvider for Foxpro数据的数据适配器(肯定不会返回到Fox 2.x),为您提供了更大的查询灵活性

也就是说,您可以尝试执行SUBSTR()实际执行的操作…尝试更改为

RIGHT( LEFT( LineItem, 14 ), 6 ) as AA

您是否尝试使用
Mid
而不是
substr