Страница 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