Как использовать параметр представления в качестве поля в собственной инструкции Foxpro SQL

Я использую VFEGenview для создания своего представления. Представление, которое я пытаюсь создать, имеет сложные соединения, поэтому я не могу использовать конструктор представлений VFP, потому что это испортит мои соединения. Используя VFEGenView и просто пытаясь создать простое представление, чтобы проверить включение значения параметров представления в качестве поля в мое представление, я получаю сообщение об ошибке.

Мой код:

DBSetProp('VL_CUSTOMERS', 'View', 'ParameterList', "vp_ccommmenus_id,'C'")

CREATE SQL VIEW "VL_Customers" ;    
AS 
    SELECT Customers.cid,;
        Customers.ccustomer_number,;        Customers.ccustomer_name,;
        ?vp_commmenus_id as ccommmenus_id;  FROM INMATETRUSTFUND!Customers

Я пробовал :?vp_commmenus_id, &?vp_commmenus_id и &vp_commmenus_id, все из которых приводят к ошибке:

vp_commmenus_id не найден

Спасибо, Джон

вы не можете использовать параметры, как всегда, для тех, которые используют конкатенацию строк для создания строки, которую вы запускаете как команду, см. flylib.com/books/en/2.920.1.14/1

nbk 20.04.2023 19:49

Marc_s, прочитал всю ссылку и решения не нашел. Я не понимаю вашего ответа.

vfpjohn 20.04.2023 20:57

поищите главу «Создание представлений с помощью сохраненных операторов SQL SELECT», где вы видите, где строка была определена и использовалась для создания представления. вам нужно добавить свой столбец в строку sql и использовать его, как описано в главе

nbk 20.04.2023 21:01

marc_s, ненавижу быть вредителем, но не могу найти эту главу. Это точное название главы? Спасибо, Джон

vfpjohn 21.04.2023 00:23

во-первых, я не marc_s, во-вторых, я действительно не могу вам помочь, читайте медленно и внимательно с самого начала, это в первой главе, создающей представления.

nbk 21.04.2023 00:33
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
5
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть лишние символы продолжения строки ";" в коде, который вы разместили. Но, прежде всего, Vfp SQL View Parameter должен быть в области видимости именно в тот момент, когда вы хотите его «использовать», т.е. когда в вашем случае выполняется оператор «Create [SQL] View...», а также когда вы открываете его, то есть Use theView, или когда бы вы Requery("theView").

Только что попробовал следующую последовательность в «Командном окне» Vfp:

* first Change Directory to the desired "Test" File-System folder:
CD D:\Temp
CREATE DATABASE Test55
CREATE TABLE test56 (col1 Int)
INSERT INTO test56 VALUES (8)

CREATE VIEW vTest as Select col1, ?p1 From test56 && throws an Error 1806 as you noted

p1 = "x" && create the variable first
CREATE VIEW vTest as Select col1, ?p1 From test56 && works now

USE vtest
BROWSE

Во-первых, To nbk, извините за путаницу в именах. Понятно.

vfpjohn 21.04.2023 17:24

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

vfpjohn 21.04.2023 17:30

@vfpjohn, рад слышать, что у тебя все получилось

Stefan Wuebbe 21.04.2023 17:33

Другие вопросы по теме