带有参数的Visual FoxPro查询

时间:2018-07-02 15:15:59

标签: sql visual-foxpro

有人知道如何在Visual FoxPro中用SQL语言编写带有参数的查询吗?它的工作方式与Access中的工作方式不同,我在这里有点迷失了。 预先谢谢你!

3 个答案:

答案 0 :(得分:1)

很遗憾,您的问题过于笼统,无法提供简单的答案。
一个查询的语法将不同于执行另一查询的语法。

是的,SQL查询语法可能与M $ Access稍有不同。

不过,您始终可以通过Google搜索以下内容: vfp sql查询语法,以查找特定的语法等效项。

注意:“ WITH”参数位于简单的WHERE子句中,与大多数其他SQL查询语言类似,
例如 WHERE Field1 =“ ABC” AND Field2 = 235
但它将使用VFP语言语法。

此外,您可能想花一些时间观看免费的在线VFP教程视频,网址为:free on-line VFP tutorial videos
特别是标有以下名称的一种: FoxPro和SQL语言

答案 1 :(得分:1)

您可以访问w3schools.com以查看SQL基础。它不像访问那样工作,这是事实,因为访问(所谓的SQL数据库引擎)对SQL有自己的理解。 VFP OTOH更接近ANSI SQL(IOW更接近SQL Server)。

您尚未指定正在使用的语言,但是说出访问权限,我认为您正在尝试使用VBA。这是使用参数的VBA(excel)中的示例:

Sub Macro1()
   Dim oRecordset1 As ADODB.Recordset
   Dim oConnection As ADODB.Connection
   Dim oCommand As ADODB.Command
   Dim oParameter1 As ADODB.Parameter
   Dim oParameter2 As ADODB.Parameter


  Set oConnection = New ADODB.Connection
  Set oCommand = New ADODB.Command

  oConnection.ConnectionString = "Provider=VFPOLEDB;Data Source=C:\Program Files (x86)\Microsoft Visual FoxPro 9\Samples\Northwind"

  oConnection.Open
  oCommand.ActiveConnection = oConnection
  oCommand.CommandText = "select * from Orders where OrderDate >= ? and OrderDate < ?"

  Set oParameter1 = oCommand.CreateParameter("start")
  oParameter1.Type = adDate
  oParameter1.Value = CDate("1996-08-01")
  oCommand.Parameters.Append oParameter1

  Set oParameter2 = oCommand.CreateParameter("end")
  oParameter2.Type = adDate
  oParameter2.Value = CDate("1996-10-01")
  oCommand.Parameters.Append oParameter2

  Set oRecordset = oCommand.Execute()
  Sheet1.Range("A1").CopyFromRecordset (oRecordset)
End Sub

注意:参数是位置参数,未命名。

答案 2 :(得分:1)

这取决于您使用的查询类型,是使用查询本机FoxPro表的内置SQL引擎,还是使用外部数据源的查询。

首先,对于本机查询,这确实很简单。由于它是FoxPro的本机指令,因此您可以访问其中的每个功能,包括变量,您可以在其中简单地将用户提供的数据放在后面,而无需担心:

LOCAL data                                   &&This could come from user input
data = "hello world"
SELECT * FROM SomeTable WHERE Column = data  &&Filtered parametrized query

另一个选择是提交SQL查询以供外部服务器处理,该查询以文本字符串形式发送。在这种情况下,可以使用参数的特殊标记来匹配FoxPro变量,从而导致将参数化查询发送到服务器:

LOCAL data
data = "hello world"

LOCAL hConn = SQLSTRINGCONNECT(connectionString)
SQLEXEC(hConn, "SELECT * FROM SomeTable WHERE Column = ?data", "SomeTable")    &&The "?data" parametrizes the query, sending the value separate from the query itself
SQLDISCONNECT(hConn)