|
|
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
В include-файле обьявляю переменную: #DEFINE C_TAB_LVROOT "lvRoot" которая хранит имя таблицы. В методе формы, в которую включен этот файл, делаю запрос с использованием даной переменной: SELECT * FROM (DEFINE C_TAB_LVROOT), TabOther WHERE &DEFINE C_TAB_LVROOT..bitmap=TabOther.bitmap при сохранении получаю ошибку неизвестная команда. Как побороть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 17:37 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 17:46 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
хитро... Но очень громосдко, это для каждого запроса надо писать скобки text... endtext. По другому никак нельзя? Тогда придётся отказыватся от этих переменных памяти, имя таблицы зашивать в программу, правда если оно завтра изменится, надо будет искать по всей програме и изменять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 18:05 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
для локальных таблиц пойдет так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 18:09 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
то что надо... работает на ура... я так понял, что так пойдёт только для курсоров (локальных таблиц), для dbf-ок нет? В даном случае переменная хранит имя КАД-а. Хочу ещё спросить для общего развития. К свойству формы (ThisForm.oCAD) привязан КАД. Делаю тот же запрос (с предыдущего топика), только вместо переменно памяти свойство формы: SELECT * FROM (ThisForm.oCAD.Alias), TabOther WHERE &ThisForm.oCAD.Alias..bitmap=TabOther.bitmap так ругается. Если сделать через переменную: cX=(ThisForm.oCAD.Alias) SELECT * FROM (ThisForm.oCAD.Alias), TabOther WHERE &cX..bitmap=TabOther.bitmap то работает. Первый вариант можно исправить, или он не проходит? Большое спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 18:34 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
просьба, если Вы начали работать с классами и объектами забудьте макроподстановку как страшный сон Код: plaintext 1. 2. 3. я немного не понимаю зачем из када что-то дергать в доп.курсор. Опишите для чего Вы хотите это сделать?? не проще ли в самом каде подменить условие where и сделать курсоррефреш??? для каких целей Вы поднимаете КАД а затем селектом переливаете данные в доп.курсор??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 19:01 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
На сервере хранится информация: "Архивы", "Обьекты", "Пользователи", "Тематические параметры" это всё отдельные таблицы. На основе этого строится дерево (TreeView), население которого происходит с одной таблицы. По этому я и собираю всё в кучу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 19:34 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
немного непонятно затем все собирать ну и пусть все лежит в отдельных кадах для построения дерева не важно, чтобы это был один курсор а кей хитрый можно сделать или таг, для того, чтобы затем отыскать нужный курсор и запись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 20:06 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
Я когда собираю в один курсор, для каждой порции данных (отдельного КАД-а) проптсываю в поле tbl имя КАД-а. Если в общем выглядит это так: *--- Images #DEFINE C_PATHIMG_ARCHIVES ".\Graphics\archives.ico" #DEFINE C_PATHIMG_USERGROUPS ".\Graphics\usergroups.ico" #DEFINE C_PATHIMG_USERS ".\Graphics\users.ico" #DEFINE C_PATHIMG_PARAMSGRP ".\Graphics\paramsgrp.ico" #DEFINE C_PATHIMG_PARAMSTBL ".\Graphics\paramstbl.ico" *--- Tables #DEFINE C_TABLE_LVROOT "lvRoot" #DEFINE C_TABLE_ARCHIVES "Archives" #DEFINE C_TABLE_SSECTIONS "Ssections" #DEFINE C_TABLE_USERGROUPS "UserGroups" #DEFINE C_TABLE_USERS "Users" #DEFINE C_TABLE_GRPINGRP "Grpingrp" #DEFINE C_TABLE_PARAMSGRP "ParamsGrp" #DEFINE C_TABLE_PARAMSTBL "ParamsTbl" DEFINE CLASS Form1 AS FORM Name=Form1 PROCEDURE Init .TreeView1.OBJECT.ImageList=.ImageList1.OBJECT WITH This IF !.opendbc() &&Создание КОД-ов RETURN .F. ENDIF .ImageList() &&Заполнение ImageList .UnionAll() &&Обьединение КАД-ов в один курсор ENDWITH ENDPROC PROCEDURE ImageList WITH This .Imagelist1.OBJECT.ListImages.Clear SELECT rootimage, bitmap FROM (C_TABLE_LVROOT) INTO CURSOR CiRoot SCAN COPY MEMO CiRoot.rootimage TO (CiRoot.bitmap) ENDSCAN SELECT section_img, bitmap FROM (C_TABLE_SSECTIONS) INTO CURSOR CiSsections SCAN COPY MEMO CiRoot.section_img TO (CiSsections.bitmap) ENDSCAN SELECT bitmap, LenTextAA(C_TABLE_LVROOT,10) AS tbl FROM CiRoot; UNION ALL; SELECT LenTextAA(C_PATHIMG_ARCHIVES,100), LenTextAA(C_TABLE_ARCHIVES,10) AS tbl FROM CiRoot WHERE RECNO()=1; UNION ALL; SELECT bitmap, LenTextAA([C_TABLE_SSECTIONS],10) AS tbl FROM CiSsections; UNION ALL; SELECT LenTextAA(C_PATHIMG_USERGROUPS,100), LenTextAA(C_TABLE_USERGROUPS,10) AS tbl FROM CiRoot WHERE RECNO()=1; UNION ALL; SELECT LenTextAA(C_PATHIMG_USERS,100), LenTextAA(C_TABLE_USERS,10) AS tbl FROM CiRoot WHERE RECNO()=1; UNION ALL; SELECT LenTextAA(C_PATHIMG_PARAMSGRP,100), LenTextAA(C_TABLE_PARAMSGRP,10) AS tbl FROM CiRoot WHERE RECNO()=1; UNION ALL; SELECT LenTextAA(C_PATHIMG_PARAMSTBL,100), LenTextAA(C_TABLE_PARAMSTBL,10) AS tbl FROM CiRoot WHERE RECNO()=1; INTO CURSOR CiAll SELECT RECNO() AS imageid, bitmap, tbl FROM CiAll INTO CURSOR CiAll01 SCAN .Imagelist1.OBJECT.ListImages.Add(imageid,,LOADPICTURE(bitmap)) ENDSCAN ENDWITH ENDPROC PROCEDURE UnionAll SELECT rootname AS name, imageid, root_id AS tbl_id, tbl FROM C_TABLE_LVROOT t1, CiAll01 WHERE t1.bitmap=CiAll01.bitmap AND; CiAll01.tbl=C_TABLE_LVROOT; UNION ALL; SELECT descriptio AS name, imageid, archive_id AS tbl_id, tbl FROM (C_TABLE_ARCHIVES), CiAll01 WHERE CiAll01.tbl=C_TABLE_ARCHIVES; UNION ALL; SELECT sectname AS name, imageid, section_id AS tbl_id, tbl FROM C_TABLE_SSECTIONS t2, CiAll01 WHERE t2.bitmap=CiAll01.bitmap AND; CiAll01.tbl=C_TABLE_SSECTIONS; UNION ALL; SELECT name_group AS name, imageid, group_id AS tbl_id, tbl FROM (C_TABLE_USERGROUPS) t3, CiAll01 WHERE CiAll01.tbl=C_TABLE_USERGROUPS; AND EXISTS(SELECT * FROM C_TABLE_GRPINGRP t4 WHERE t4.group_id=t3.group_id AND t4.ingroup_id=0 AND group_id>0); UNION ALL; SELECT fullname AS name, imageid, user_id AS tbl_id, tbl FROM C_TABLE_USERS t5, CiAll01 WHERE CiAll01.tbl=C_TABLE_USERS AND t5.user_id>0; UNION ALL; SELECT g_label AS name, imageid, group_id AS tbl_id, tbl FROM (C_TABLE_PARAMSGRP), CiAll01 WHERE CiAll01.tbl=C_TABLE_PARAMSGRP; UNION ALL; SELECT p_label AS name, imageid, param_id AS tbl_id, tbl FROM (C_TABLE_PARAMSTBL), CiAll01 WHERE CiAll01.tbl=C_TABLE_PARAMSTBL; INTO CURSOR CiAll02 SELECT RECNO() AS id, * FROM CiAll02 INTO CURSOR CiAll03 ENDPROC ENDDEFINE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 20:30 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
Вы можете объяснить, с какой целью Вы вообще используете директивы прекомпилятора в отношении имен файлов и таблиц? Надеюсь, Вы в курсе, что замена на значение директив прекомпилятора происходит не на этапе исполнения, а на этапе компиляции приложения. Т.е. еще ДО собственно исполнения кода. Другими словами, даже если у Вас поменяются пути доступа или имена файлов, Вам все равно придется заново перекомпилировать все приложение. Вы хотите поставлять пользователю голые исходники вместе с FoxPro? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 00:07 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
Данная програма будет использовтся внутри одного предприятия где есть постоянный програмист, который если шо может подключится. Директивы прекомпилятора я раньше не осползовал, счас увидел как в других программах они оиспользуются, решил попробовать у себя, может в данном месте их использование не совсем умесно. Я ещё не прочуствовал в чём соль использования директив прекомпилятор. Пока у меня понятие такое, что если например надо поменять имя файла или таблицы, то не надо шарить по всей программе и менять старое на новое, а только помень в Include-файле. А то что программу нужно будет перекомпелировать, об этом не догадывался, спасибо за информацию. Но в данном случае думаю, что это не сильно усугубляет ситуацию. Конешно, хотелось бы програмировать правельно, используя инструменты VFP по их назначению, чтобы программы получались простые и понятные. Но пока от этого далёк, остаётся только стремится. Большую помощь на этом пути приносит общение в кругу програмистов, в часности на этом форуме. Огромное всем спасибо! Правое дело делаете!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 17:26 |
|
||
|
Директива процессора
|
|||
|---|---|---|---|
|
#18+
Директивы компилятора Вместо "директивы компилятора" в этой статье надо читать "директивы ПРЕкомпилятора" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 23:01 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34487433&tid=1589441]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 471ms |

| 0 / 0 |
