|
|
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Т.е. интересуют способы создания динамических запросов. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 13:54:02 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Есть ещё ExecScript(cExpression [, eParameter1, eParameter2, ...]) А вообще, какая цель преследуется? Что надо сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 14:09:35 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ExecScript! Ситуация такая: К примеру, есть табл. файл индексов - a _id, b _id, c _id ... и т.д. Запрос нужен либо с 1) "m.a_id=a_id .AND. m. b _id= b _id", либо с 2) "m.a_id=a_id .AND. m. с _id= с _id". Так вот нельзя ли так построить один-единственный запрос (без & или cExpression), что бы он учитывал, что 1) с_id - все записи 2) b_id - все записи. И влияют ли & или cExpression на скорость выполнения запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 15:32:02 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Короче говоря надо построить динамические условия выборки и/или обьединения, другие способы как склеивать условия и запихивать в макроаодстановку/ExecScript мне не известны, если только не написать все возможные варианты. Поскольку фокс не строит эвристик, как "взрослые СУБД", то на скорость выполнения запроса макроподстановка не повлияет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 15:41:05 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Hi Alexej! > Так вот нельзя ли так построить один-единственный запрос (без & или > cExpression), что бы он учитывал, что 1) с_id - все записи 2) b_id - все > записи. Можно - просто добавь условие не напрямую, а через IIF() и используй например "пустое" значение как признак что нужно взять "всё". Пример такого монстроидального запроса как-то приводил Михаил Дроздов - поищи на foxclub.ru > И влияют ли & или cExpression на скорость выполнения запроса? Да, в общем случае запрос с макро будет работать быстрее чем "фиксированный" запрос, в котором просто ряд параметров "экранированы" хитрым образом - при работе в фоксе естественно (время компиляции ничтожно по сравнению со временем собственно работы движка - а условие получится заведомо проще) - для SQL сервера ситуация может оказаться обратной - там большое время тратится на компиляцию запроса, составление плана его исполнения и т.п. потому "статические" запросы там как правило эффективнее. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 00:37:30 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Да действительно! Большое спасибо Igor Korolyov! Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 15:06:21 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
ребята, пожалуйста, дайте пример использования ExecScript. Не найду , где почитать. Новичек в VFP 6 . Мне нужно в запрос селект в зависимости от ситуации вставлять новые условия Where. Я хотела использовать & в выражении селекта.. не понял меня фокс.а как правлильно написать? Я пробовала так .. st_where ='where '+st_where st_where='SELECT distinct ccqb.nlsa,bpl.plate,ccqb.nlsb,ccqb.korr,ccqb.mfob,'+; 'ccqb.kokb,ccqb.s,ccqb.da'+; 'FROM ccqb,bpl '+; 'Into cursor temp '+st_where execScript(st_where) и так SELECT distinct ccqb.nlsa,bpl.plate,ccqb.nlsb,ccqb.korr,ccqb.mfob,; ccqb.kokb,ccqb.s,ccqb.da; FROM ccqb,bpl; Into cursor temp &st_where Помогите ,пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2005, 17:12:48 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Пример можно дать, но без подробного объяснения бизнес логики он безполезен: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. Идея в том, что разные части команды SQLECT - SQL собираются в переменных (m.lcGroupBy, m.lcWhere, ...) на основе выбранных режимов запроса в Controls формы, а затем команда выполняется (&lcCommand). С Уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2005, 17:37:34 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
CREATE TABLE a FREE (a i) APPEND BLANK REPLACE a WITH 1 APPEND BLANK REPLACE a WITH 2 APPEND BLANK REPLACE a WITH 3 f='a=2' SELECT * from a WHERE &f INTO CURSOR temp BROWSE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2005, 18:27:51 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Hi гость1! > дайте пример использования ExecScript. Не найду , где почитать. Новичек в > VFP 6 Нету там этого, забей. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2005, 23:38:21 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
А зачем вам ExecScript? Чем не устраивает макроподстановка & ? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 09:27:33 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
А эта команда в VFP6 есть вообще? В HELPe например. EXECSCRIPT( ) Function Enables you to run multiple lines of code from variables, tables, and other text at runtime. ExecScript(cExpression [, eParameter1, eParameter2, ...]) Parameters: cExpression - Represents the text, a variable, type string, or memo to be executed as code. eParameter1, eParameter2, ... - Optional. Specify parameters passed to a script that has a parameter statement in first line. Return Values - The return value is the value returned by the script in cExpression. If the script returns no value, Visual FoxPro returns .T. Remarks - ExecScript( ), unlike macro expansion, provides the same effect as selecting several lines of code in the command window then pressing the Enter key. Example - This example creates a form and then shows the value of the AutoCenter property of the new Form object. Note the use of CHR(13), which is used to separate the two code lines. ?EXECSCRIPT("oForm=CREATEOBJECT('Form')"+CHR(13)+"?oForm.AutoCenter") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 11:01:10 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Ребята, спасибо. за ответы. Макроподстановка меня вполне устраивает. Но я ее неправильно ставила, как в примере, на который " забыть надо " я собрала селект и с макроподстановкой работаю... Но не пойму, у меня обрезается условие where в выражении селекта. символьная строка 255 , а если длиннее? Я что -то недогоняю? Ищу ошибку, но в принципе, я получила свой ответ Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 15:44:02 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Собирай строку команды SELECT SQL по частям через конкатенацию. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 15:51:35 |
|
||
|
Какие способы подачи SELECT SQL есть еще, кроме явной и & ?
|
|||
|---|---|---|---|
|
#18+
Гость1я собрала селект и с макроподстановкой работаю... Но не пойму, у меня обрезается условие where в выражении селекта. символьная строка 255 , а если длиннее? Я что -то недогоняю? Символьные поля, переменные памяти и константы В FoxPro существует отличия в предельно допустимой длине символьных данных в зависимости от того, о чем идет речь: поле таблицы, переменной памяти или константе Ну, с полями таблицы все ясно. Их предельная длина определяется собственно размерностью поля. Однако размерность поля не может превышать 254 символов. Для memo-полей объем не может превышать 2ГБ (2 гигабайта - это 2 и 9 нулей символов). Длина символьной константы не может превышать 255 символов Длина символьной переменной теоретически не может превышать 16,777,184 символов. "Теоретически", потому, что при определенных условиях все-таки может. Просто за последствия такого превышения никто не отвечает. Отдельно следует остановиться на отличии символьной константы от символьной переменной. Начинающие программисты очень часто получают сообщение об ошибке "Command contains unrecognized phrase/keyword (Error 36)" именно в силу непонимания этой разницы. В FoxPro для написания символьных констант можно использовать 3 символа: одинарные кавычки, двойные кавычки, квадратные скобки. В чем отличие символьной константы от символьной переменной проще объяснить на примере. Словами получится долго и невнятно. Например: Код: plaintext 1. 2. Так вот, здесь то, что записано в кавычках и квадратных скобках - это 3 символьные константы, а lcString - это одна символьная переменная Вообще-то, лично мне трудно представить, как можно написать одну символьную константу длиной больше 255 символов. Точнее написать-то такое можно, но как потом это можно редактировать! Получится совершенно не "читабельный" текст. Я рекомендовал бы разбивать длинные символьные константы на небольшие фрагменты с тем, чтобы каждый отдельный фрагмент целиком помещался в окне редактирования. Примерно так: Код: plaintext 1. 2. 3. 4. В FoxPro нет специальных управляющих символов, как, например, в C используется обратный слэш. Поэтому, если Вам надо использовать кавычки не как границу символьной константы, а как собственно символ, то просто обрамляйте их кавычками другого типа: Код: plaintext Следует всегда помнить, что FoхPro отличается определенной "самостоятельностью" в конвертации данных. Применительно к символьным данным это проявляется в том, что если Вы попытаетесь записать в символьное поле больше символов, чем позволяет его размерность, то ошибки это не вызовет, просто "лишние" символы будут отброшены без каких-либо дополнительных сообщений об ошибках. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 16:04:09 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33234676&tid=1593601]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
194ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 504ms |

| 0 / 0 |
