Я использую 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 не найден
Спасибо, Джон
Marc_s, прочитал всю ссылку и решения не нашел. Я не понимаю вашего ответа.
поищите главу «Создание представлений с помощью сохраненных операторов SQL SELECT», где вы видите, где строка была определена и использовалась для создания представления. вам нужно добавить свой столбец в строку sql и использовать его, как описано в главе
marc_s, ненавижу быть вредителем, но не могу найти эту главу. Это точное название главы? Спасибо, Джон
во-первых, я не marc_s, во-вторых, я действительно не могу вам помочь, читайте медленно и внимательно с самого начала, это в первой главе, создающей представления.
Есть лишние символы продолжения строки ";" в коде, который вы разместили. Но, прежде всего, 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, извините за путаницу в именах. Понятно.
Стефан, я использую фреймворк VFE и точно не знаю, когда создаются параметры представления, потому что все это происходит как по волшебству. Я знаю из своего тестирования, что его не было, когда мне это было нужно. Краткая версия моего ответа заключается в том, что вы правы в своем примере. Я создал переменную с именем, аналогичным моему параметру представления, и непосредственно перед созданием представления я загрузил локальную переменную с тем же значением, которое я загружаю в параметр представления, а затем использовал локальную переменную в sql и вуаля, она работала так, как вы сказали . Спасибо всем, Джон
@vfpjohn, рад слышать, что у тебя все получилось
вы не можете использовать параметры, как всегда, для тех, которые используют конкатенацию строк для создания строки, которую вы запускаете как команду, см. flylib.com/books/en/2.920.1.14/1