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