Страница 1 из 1
Bind и loop
Добавлено: 19 Февраль 2016, 16:54
gopstop2007
Надо пробиндить список созданный в файле MyFile.tps, что то не пляшет, как правильно сделать?
Код: Выделить всё
DATA
MyFile FILE,DRIVER('TOPSPEED'),NAME('MyFile.tps'),PRE(MyF),BINDABLE,THREAD !
idKEY KEY(MyF:idKey),NOCASE,OPT,PRIMARY !
Myfield1 STRING(30)
Myfield2 STRING(30)
END
CODE
SET(MyFile)
LOOP
NEXT(Myfile); IF ERRORCODE() THEN BREAK END
BIND(MyF:Myfield1,MyF:Myfield2)
END
для дальнейшего использования в Evaluate
Bind и loop
Добавлено: 19 Февраль 2016, 19:07
Игорь Столяров
Ничего не понятно. Что у Вас называется словом "пробиндить" ?

Зачем ?
Где объявление Myfield1,Myfield2 ? Это имена чего и где они описаны ?
В операторе BIND, в качестве первого параметра указывается строковая константа.
Второй параметр - сопоставляемая константе переменная (или имя процедуры).
Какой смысл заложен в вызов BIND(Myfield1,Myfield2) ?!
Bind и loop
Добавлено: 19 Февраль 2016, 19:57
gopstop2007
Исправился, см. выше

Есть приложение в котором в текстовом поле описываю запрос
Код: Выделить всё
'SELECT '& CLIP(A_B_id)&' FROM '&CLIP(A_B_category)&';'
сама строка идет после Evaluate на сервер
Код: Выделить всё
s" = Evaluate( 'SELECT '& CLIP(A_B_id)&' FROM '&CLIP(A_B_category)&';')
значения в
CLIP(A_B_id) и
CLIP(A_B_category) подставляются из
MyFile -
MyF:Field1 и
MyF:Field2 соответственно
Смысл в том, что у меня большой список BIND(
A_B,
B_B).
A_B (MyF:Field1) - строковые константы у меня постоянны,
а вот в
B_B (MyF:Field2) - подставляю в зависимости от условий, и список может пополнятся
Код: Выделить всё
BIND('A_B_id',???)
BIND('A_B_category',???)
....
BIND('A_B',B_B)
Не знаю донес ли я Вам свою мысль

Bind и loop
Добавлено: 19 Февраль 2016, 20:05
Игорь Столяров
Да, спасибо, теперь понятно.
Может быть я не прав и пусть меня исправят ... но для BIND в качестве первого параметра
должна быть указана символьная константа, а не имя символьной переменной, содержащей имя.
Впрочем, это есть в справке.
Bind и loop
Добавлено: 19 Февраль 2016, 20:25
kreator
В bind первым параметром должна быть строковая константа. Loop здесь не пойдёт. Без Loop'а напишите и всё.
Bind и loop
Добавлено: 19 Февраль 2016, 23:20
Дед Пахом
На время оставим синтаксис Evaluate, я понять не могу, какая цель у
gopstop2007 писал(а): s" = Evaluate( 'SELECT '& CLIP(A_B_id)&' FROM '&CLIP(A_B_category)&';')
Просто передать на сервер 'SELECT '& CLIP(A_B_id)&' FROM '&CLIP(A_B_category)&';' что мешает?
Bind и loop
Добавлено: 20 Февраль 2016, 0:32
gopstop2007
Дед Пахом писал(а):Просто передать на сервер 'SELECT '& CLIP(A_B_id)&' FROM '&CLIP(A_B_category)&';' что мешает?
Я так и делаю

Просто систематизировать хотелось, запросы стандартные, только меняются название таблиц и полей, ковыряться в каждом запросе или пробежался по по списку - изменил и ничего лишнего, все в одном месте. А так в каждом запросе менять, их больше 30

Bind и loop
Добавлено: 20 Февраль 2016, 11:17
RaFaeL
Так не надо ни bind ни evaluate просто собери по файлу строку запроса и отправь через prop:sql