Визуальный FoxPro-запрос с параметрами - PullRequest
0 голосов
/ 02 июля 2018

Кто-нибудь знает, как я могу написать на языке SQL в Visual FoxPro запрос с параметрами? Это не работает так же, как в Access, и я немного растерялся здесь. Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Вы можете посетить 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

Примечание: параметры позиционные, без имен.

0 голосов
/ 11 сентября 2018

Это зависит от того, какой тип запроса вы используете: либо с помощью встроенного механизма SQL, который запрашивает собственные таблицы FoxPro, либо от запроса с использованием внешнего источника данных.

Во-первых, в случае нативного запроса это действительно просто. Поскольку это нативная инструкция 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)
0 голосов
/ 02 июля 2018

К сожалению, ваш вопрос слишком широк, чтобы дать простой ответ.
Синтаксис для одного запроса будет отличаться от синтаксиса для выполнения другого запроса.

И да, синтаксис SQL-запроса, вероятно, немного отличается от M $ Access.

Однако вы всегда можете выполнить поиск Google для: vfp sql синтаксиса запроса , чтобы найти конкретные синтаксические эквиваленты.

Примечание. Параметры WITH будут находиться в простом предложении WHERE, аналогичном большинству других языков SQL Query,
Например, ГДЕ Поле1 = "ABC" И Поле2 = 235
но он будет использовать синтаксис языка VFP.

Также вы можете потратить некоторое время на просмотр бесплатных обучающих видео по VFP по адресу: бесплатное обучающее видео по VFP
В частности, помечены: FoxPro и язык SQL

...