|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Выполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: nShandle=SQLCONNECT('Taxes',.T.) tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") IF nResult=1 SQLEXEC(nShandle) endif SQLDISCONNECT(nShandle) Все проходит отлично, однако когда начинаю увеличивать длину запроса (указываю перечень полей для загрузки, использовать условия сортировки, группировки и т.д.) ~>240 символов, фокс (9) начинает ругаться: "Команда содержит нераспознанное ключевое слово или фразу", хотя сам запрос однозначно правильный. Подскажите что за фигня, как побороть или обойти. Приходиться потом выбрасывать данные, которые не нужны... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 14:06 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторкогда начинаю увеличивать длину запроса (указываю перечень полей для загрузки, использовать условия сортировки, группировки и т.д.) ~>240 символов, фокс (9) начинает ругаться Только по своему опыту! Не вдаваясь в детали, в таких случаях я делаю несколько запросов к вновь получаемым курсорам, всякий раз убирая лишнее. На практике время выполнения запросов некритична, а экономия на программировании - часы или даже дни. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 14:38 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
igorbikНе вдаваясь в детали, в таких случаях я делаю несколько запросов к вновь получаемым курсорам, всякий раз убирая лишнее. На практике время выполнения запросов некритична, а экономия на программировании - часы или даже дни. Сейчас поступаю так же, но как-то не хорошо, поднимаю с сервера примерно 300 тыс записей, из которых мне нужно всего то процентов 5-15. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:00 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:01 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Код: plaintext 1.
конкретно в этом случае макроподстановка не нужна, но это ведь примерная конструкция запроса, если его текст привести полностью, то макроподстановка еще как нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:12 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторконкретно в этом случае макроподстановка не нужна, но это ведь примерная конструкция запроса, если его текст привести полностью, то макроподстановка еще как нужна.Не надо рассказывать сказки. Для формирования любой строки макроподстановка не нужна. Точка. Лучше внимательно посмотрите на text ... endtext, особенно опцию textmerge. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:16 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Код: plaintext 1.
попробуй сам, tVdok='select A.n1,A.d6,A.D428_2,A.D270,C.N590,B.d84,B.d87_2,d86_2,C.d3587_101,C.d3587_104,C.d3587_106,C.d3587_107,C.d3587_110,C.d250 from FN1532 A join FN1552 B on B.D270=A.D270 join FN15521 C on C.D270=A.D270 left join fn1505 D on A.n1=D.n1 and D.d83<0 where A.D789=11 and C.D09=1 and C.d250=2009' база данных не понадобиться (до нее дело не дойдет), скопируйте все в фокс и попробуйте сохранить... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:18 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Код: plaintext 1.
попробуй сам, tVdok='select A.n1,A.d6,A.D428_2,A.D270,C.N590,B.d84,B.d87_2,d86_2,C.d3587_101,C.d3587_104,C.d3587_106,C.d3587_107,C.d3587_110,C.d250 from FN1532 A join FN1552 B on B.D270=A.D270 join FN15521 C on C.D270=A.D270 left join fn1505 D on A.n1=D.n1 and D.d83<0 where A.D789=11 and C.D09=1 and C.d250=2009' база данных не понадобиться (до нее дело не дойдет), скопируйте все в фокс и попробуйте сохранить...1. ВНИМАТЕЛЬНО читаем статью по ссылке представленной PaulWist. 2. В качестве демонстрации предложенного text ... endtext: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:23 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
да прочитал, но речь то была о макроподстановке, ее "убрать и все наладиться". За ответ спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:25 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторда прочитал, но речь то была о макроподстановке, ее "убрать и все наладиться". За ответ спасибо.Предложение попробовать мне выполнить в фоксе строку с присвоением переменной значения текстовой константы длиной боле 254 символов к макроподстановке отношения не имеет. Это ошибка писателя сей строки. Потому отсылка к статье про строки. Макроподстановка для передачи символьного параметра функции - вредная бессмыслица, вызванная, вероятно, первой причиной - неумением работать со строками и незнание правил и ограничений в такой работе. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:35 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администратор, кстати, вызывать SQLPREPARE() для однокрано выполняемого батча - бессмыслица. Выигрыша по сравнению с простым SQLEXEC() никакого, даже проигрыш на количесвте выполняемых команд. Вот для повторения одно и то же команды - самое то. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:41 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий., Любишь ты поучить, решения по данному вопросу предложил не ты, уперся в макроподстановку, будто я кого то убил, работает с макроподстановкой, в какой то ситуации опытным путем пришел к макроподстановке (значит без нее нельзя было), а теперь работаю по шаблону, на ограничения не натыкался, быстродействие не падает, результат правильный - ты раздуваешь проблему из нифига. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:44 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий., сколько проиграю - 0,001 с ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:45 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторigorbikНе вдаваясь в детали, в таких случаях я делаю несколько запросов к вновь получаемым курсорам, всякий раз убирая лишнее. На практике время выполнения запросов некритична, а экономия на программировании - часы или даже дни. Сейчас поступаю так же, но как-то не хорошо, поднимаю с сервера примерно 300 тыс записей, из которых мне нужно всего то процентов 5-15. Не вдаваясь в детали и только по опыту: в каждый из запросов, в том числе первый, включите ТОЛЬКО те критерии, которые вытащат либо меньшее кол-во полей, либо строк. Это не так сложно. Сделайте это, запустите проект в работу, и уже когда все заработает (пусть неспеша, но надежно), займитесь спокойно экспериментами по сабжу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:46 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий., Любишь ты поучить,Не люблю, но жизнь заставляет. решения по данному вопросу предложил не ты,Оппа... И где же тут предложенные не мной решения? уперся в макроподстановку, Да, уперся. Ибо в том числе и из-за нее вылезает описанное тобой поведение. будто я кого то убил, работает с макроподстановкой, в какой то ситуации опытным путем пришел к макроподстановке (значит без нее нельзя было),Классное доказательство. :) Можно. Любую строку можно сделать из кусков без макроподстановки. Это надо доказывать? а теперь работаю по шаблону, на ограничения не натыкался, быстродействие не падает, результат правильный - ты раздуваешь проблему из нифига.Я не раздуваю проблему, а предупреждаю любителей работать по шаблону от граблей, которые они сами себе подкладывают. Ты вот как раз и наступил именно на такие грабли. Кстати, в оценке программного кода и программ кроме работоспособности и корректности существует такой критерий, как скорость исполнения. Макроподстановка тормозит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:51 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
igorbik, да работает вся фигня уже давно, сейчас захотелось оптимизировать ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 15:56 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий., сколько проиграю - 0,001 с ?На одном вызове. Сколько всего вызовов делает программа? Например при вставке 10 000 записей? К тому же зачем делать бесполезные вещи? Из-за лени подумать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:03 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторigorbik, да работает вся фигня уже давно, сейчас захотелось оптимизироватьНо ускорение работы в оптимизацию не входит. Так? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:07 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Любителей поучить всегда жизнь заставляет Решение предложил PaulWist, за что ему спасибо Я не просил оценивать стиль программирования В данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти" Скорость исполнения +- 0,000001 не существенна ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:13 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий., выиграть 5 секунд, это понятно, но из-за сотых-тысячных долей не стоит кричать, что я нифига не правильно использую фокс. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:19 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий., выиграть 5 секунд, это понятно, но из-за сотых-тысячных долей не стоит кричать, что я нифига не правильно использую фокс.И где был крик? Как надо было сообщить об этом неправильном использовании? Мелким невидимым шрифтом? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:21 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Местами администраторпроходящий., выиграть 5 секунд, это понятно, но из-за сотых-тысячных долей не стоит кричать, что я нифига не правильно использую фокс.И где был крик? Как надо было сообщить об этом неправильном использовании? Мелким невидимым шрифтом? Уважаю, с умными собеседниками люблю пообщаться, но проблем с макроподстановкой в данной ситуации нет, разве что те несколько символов ('"'+ и +'"') и 0,...1 с снижения быстродействия.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:24 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти" Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:27 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти" Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. Сам себе противоречишь - грабли таки эти, и без макроподстановки работает еще лучше - так с макроподстановкой все-таки работает, хуже, но все-таки (-+0...1 с), согласен? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:30 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Извиняюсь за то, что на "ты", но ко мне можно обращаться так же. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:31 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти" Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. Насчет небольшой длины, несколько символов, что используются для макроподстановки ситуацию коренным образом не меняют, text...endtext - решает данную проблему полностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:35 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий.Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти" Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. Сам себе противоречишь - грабли таки эти, и без макроподстановки работает еще лучше - так с макроподстановкой все-таки работает, хуже, но все-таки (-+0...1 с), согласен?Не понял. 1. SQLPREPARE() для одиночного батча - тормоз. И лишние строки. 2. Макроподстановка не может быть более 254 символов и тормоз. 3. С помощью Coverage profiler считаем реальное количество вызовов с этими тормозами и тихо офигеваем. Где противоречие? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:37 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Сам себе противоречишь - грабли таки эти, и без макроподстановки работает еще лучше - так с макроподстановкой все-таки работает, хуже, но все-таки (-+0...1 с), согласен?[/quot]Не понял. 1. SQLPREPARE() для одиночного батча - тормоз. И лишние строки. 2. Макроподстановка не может быть более 254 символов и тормоз. 3. С помощью Coverage profiler считаем реальное количество вызовов с этими тормозами и тихо офигеваем. Где противоречие?[/quot] 2. так ведь и без макроподстановки не получалось 1,3 SQLPREPARE() использую действительно один раз, но дело в том, что данные взял с сервера, отключился и программа работает автономно, следующее обновление данных дня через два, три через лет пять пожалуй и набралось бы секунд 20-30 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:49 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администратор2. так ведь и без макроподстановки не получалосьКак у тебя с булевой алгеброй и математической логикой? .t. or .t. какой даст результат? Изменится ли результат если перевести в .f. только один операнд? Что надо сделать, чтобы таки результат стал .f. ? 1,3 SQLPREPARE() использую действительно один раз, но дело в том, что данные взял с сервера, отключился и программа работает автономно, следующее обновление данных дня через два, три через лет пять пожалуй и набралось бы секунд 20-30Ну это все сначала так аргументируют свой выбор. Потом начиают работать по шаблону. Потом количество применений шаблона увеличивается. Потом прога начинает тормозить. Разбор полетов показывает, что объяснения, что мол такая конструкция тормозит всего лишь на 0.00001 сек., не выдерживают никакой критики в силу того, что РЕАЛЬНОЕ количество использования такого шаблона и, главное, количество реальных вызовов критикуемого кода, построенного по шаблону, превышает все предполагаемые разрботчиком-шаблоником пределы на ПОРЯДКИ!!! Особено если это где-то внутри большой сложной формы с кучей refresh'ей "для надежности". Зачем учится плохому? Зачем на это тратить время? Может лучше сразу по хорошему? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:00 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
> Автор: проходящий. > Ну это все сначала так аргументируют свой выбор. Потом начиают работать по шаблону. Потом количество применений > шаблона увеличивается. Потом прога начинает тормозить. Разбор полетов показывает, что объяснения, что мол такая > конструкция тормозит всего лишь на 0.00001 сек., не выдерживают никакой критики в силу того, что РЕАЛЬНОЕ количество > использования такого шаблона и, главное, количество реальных вызовов критикуемого кода, построенного по шаблону, > превышает все предполагаемые разрботчиком-шаблоником пределы на ПОРЯДКИ!!! Особено если это где-то внутри большой > сложной формы с кучей refresh'ей "для надежности". Зачем учится плохому? Зачем на это тратить время? Может лучше сразу > по хорошему? + сто тыщь пицот З.Ы. Так и хочется поотрывать все и приставить обратной стороной Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:17 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Игорь Горбонос З.Ы. Так и хочется поотрывать все и приставить обратной стороной Стесняюсь спросить где и что хочется поотрывать и приставить? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:24 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Так легко договориться и до того, что завтра конца света. Но если в будущем соберусь писать полноценное клиент-серверное приложение, обязательно учту все пожелания, связанные с символьной строкой и макроподстановкой в случае применения SQLPREPARE() . проходящий.Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. проходящий.И грабли таки эти Макроподстановка работает=.F. проходящий.без макроподстановки работает еще лучше Макроподстановка работает=.T. проходящий.Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода Код измеряется в тоннах? Моего кода? (т.к. Вами с большой буквы, логично предположить, что обращение лично ко мне) У кого проблемы с логикой и дискретной математикой? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:30 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
А мне ведь простительно, самоучка я, а вот ГУРУ логики не должны так опрометчиво высказываться или я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:35 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторТак легко договориться и до того, что завтра конца света. Но если в будущем соберусь писать полноценное клиент-серверное приложение, обязательно учту все пожелания, связанные с символьной строкой и макроподстановкой в случае применения SQLPREPARE() .Опять какое-то кривое понимание. Макроподстановка тормоз всегда, вне зависимости от SQLPREPARE() и прочего. В том числе и от клиент-серверности. проходящий.Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. проходящий.И грабли таки эти Макроподстановка работает=.F. проходящий.без макроподстановки работает еще лучше Макроподстановка работает=.T. проходящий.Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода Код измеряется в тоннах? Моего кода? (т.к. Вами с большой буквы, логично предположить, что обращение лично ко мне) У кого проблемы с логикой и дискретной математикой?М-да, похоже без конкретных кусков кода, где макроподстановка была "необходима", не обойтись. К тому же говрилось про два операнда, а не про один. Потому вопрос про логику и математику остается открытым. Про тонны кода, возможно я не совсем точно выразился. Имелись в виду тонны кода, пример или образец которого и был Вами продемонстрирован. Написаны сии тонны, конечно, не Вами, но все подобные коды разительно похожи друг на друга как по стилю, так и по быстродействию. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:45 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Код: plaintext 1.
Человеку свойственно ошибаться. проходящий.ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Начиналось ведь с этого, опять накладочка. И ведь речи нет ни про быстродействие, ни про логику Просто сказано, что данная конструкция не работает из-за макроподстановки, а конструкция работает. Это потом, дабы выкрутиться чужое решение было выдано за свое, а когда это не прокатило пришлось докапаться до быстродействия, да уж - В чужом глазу соринку видно, а в своем бревна не видать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:54 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Код: plaintext 1.
Человеку свойственно ошибаться. проходящий.ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Начиналось ведь с этого, опять накладочка.Опять не понял. О какой накладочке речь. Не могли бы изъясняться поточнее? И ведь речи нет ни про быстродействие, ни про логику Просто сказано, что данная конструкция не работает из-за макроподстановки, а конструкция работает. Работает в некоторых случаях. Вам предложено решение, работающее всегда. Потом было объяснено, что макроподстановка еще и торомоз. Что не так?Это потом, дабы выкрутиться чужое решение было выдано за свое,Тынц в студию. Какое чужое решение? Где? Ткните пальцем. а когда это не прокатило пришлось докапаться до быстродействия, да уж - В чужом глазу соринку видно, а в своем бревна не видать.Не прокатило что? ps: Вы не слишком близко к сердцу приняли мои рассказы про хороши и плохие подходы к прораммированию на фоксе? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 18:16 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Оппа... И где же тут предложенные не мной решения? Вот PaulWist Символьные поля, переменные памяти и константы проходящий.Опять не понял. О какой накладочке речь. Не могли бы изъясняться поточнее? Поточнее – описание проблемы и вопрос звычал следующим образом: Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: nShandle=SQLCONNECT('Taxes',.T.) tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") IF nResult=1 SQLEXEC(nShandle) endif SQLDISCONNECT(nShandle) Все проходит отлично, однако когда начинаю увеличивать длину запроса (указываю перечень полей для загрузки, использовать условия сортировки, группировки и т.д.) ~>240 символов, фокс (9) начинает ругаться: "Команда содержит нераспознанное ключевое слово или фразу", хотя сам запрос однозначно правильный. Подскажите что за фигня, как побороть или обойти. Приходиться потом выбрасывать данные, которые не нужны... Ответ: проходящий. ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. проходящий.кстати, вызывать SQLPREPARE() для однокрано выполняемого батча - бессмыслица SQLPREPARE() подготавливает SQL-оператор для удаленного выполнения функцией SQLEXEC(). Функция посылает источнику данных SQL-оператор, где он компилируется для более быстрого исполнения. О.В. Бартеньев (книга о Фоксе) Кому верить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 19:06 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий.Оппа... И где же тут предложенные не мной решения? Вот PaulWist Символьные поля, переменные памяти и константы Опять жуть. Это не решение проблемы, а описание граблей, на которые Вы наступили. И грабли эти как раз в макроподстановке и лежат. РЕШЕНИЕ как раз таки предложил я. При чем такое, которое обходит еще кое-какие грабли. проходящий.Опять не понял. О какой накладочке речь. Не могли бы изъясняться поточнее? Поточнее – описание проблемы и вопрос звычал следующим образом: Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: nShandle=SQLCONNECT('Taxes',.T.) tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") IF nResult=1 SQLEXEC(nShandle) endif SQLDISCONNECT(nShandle) Все проходит отлично, однако когда начинаю увеличивать длину запроса (указываю перечень полей для загрузки, использовать условия сортировки, группировки и т.д.) ~>240 символов, фокс (9) начинает ругаться: "Команда содержит нераспознанное ключевое слово или фразу", хотя сам запрос однозначно правильный. Подскажите что за фигня, как побороть или обойти. Приходиться потом выбрасывать данные, которые не нужны... Ответ: проходящий. ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Вот именно. Уберите макроподстановку, собирайте строку номальными способами и никакие танцы не понадобятся. проходящий.кстати, вызывать SQLPREPARE() для однокрано выполняемого батча - бессмыслица SQLPREPARE() подготавливает SQL-оператор для удаленного выполнения функцией SQLEXEC(). Функция посылает источнику данных SQL-оператор, где он компилируется для более быстрого исполнения. О.В. Бартеньев (книга о Фоксе) Кому верить?Обоим. Потому, что я не оспаривал, а уточнил область действия процитрованного утверждения. ДА, SQLPREPARE() используется для ускорения выполнения. Но только ускорение наступает при одном условии - многократном выполнении подготовленного таким образом батча. Ускорение получается за счет исключения времени подготовки при повторных вызовах. При однократном ускорения не происходит. Сочетание SQLPREPARE() и SQLEXEC() для ОДНОГО выполнения батча будет даже несколько медленнее одного SQLEXEC() с тем же батчем, так как одна компиляция выполняемого батча тут будет присутствовать в обоих случаях, выполняется всегда компилированный/подготовленны код. Но в первом случае есть еще расходы на вызов дополнительной функции и получение результата ее работы. Иное дело многократное исполнение. Тогда одни раз компилируется/подготавливается план исполнения и потом несколько раз исполняется этот самый подготовленный план. Еще вопросы есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 19:27 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Когда пойдете в политику? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 19:38 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторКогда пойдете в политику?Если вопрос ко мне, то он опять мимо кассы. :) В смысле Вы опять неправильно поняли/интерпретировали мои тут высказывания. Я не собираюсь в политику, мне интереснее решение технических вопросов, а не ... ну Вы меня поняли. А что вызвало такой вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 19:44 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Такое ощущение, что специалисты по техническим вопросам могут выкрутиться из любой затруднительной ситуации. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:02 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторТакое ощущение, что специалисты по техническим вопросам могут выкрутиться из любой затруднительной ситуации. :)Иначе бы они не были специалистами, не так ли? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:09 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Угу, а решение проблемы все таки не Ваше. http://forum.foxclub.ru/read.php?32,177182,177250#msg-177250 Владимир Максимов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Как видите, все что находится между TEXT и ENDTEXT воспринимается не как набор команд, а просто как текст. Содержимое переменой m.lcText. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:28 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторУгу, а решение проблемы все таки не Ваше. Для Вас "предложенное мной" и "мое" - одно и то же? Разумеется оно не мое лично, не я его придумал, но здесь то его предложил я? Или не я? Или не это, а что-то другое? Вам еще не надоело добиваться своей "победы"? Неужто так сильно хочется меня задавить? Или это вопрос какого-то "принципа"? Какого? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:41 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий., Опять таки решение предложил PaulWist. Не хотел Вас давить, просто Вы сами уперлись по не понятным причинам, а справедливость все-таки должна быть, хотя бы в таких очевидных вопросах. Как специалиста в VFP (просматриваю sql.ru регулярно, использую в том числе и Ваши рекомендации и решения) Вас очень уважаю. То что человек "упертый", а специалисты в своей области чаще всего именно такие - очевидно, высококласный специалист=талант (10%)+труд (90%), а что может заставить столько трудиться?- Считаю что именно оно. Не думайте, что я совсем чайник, одно из моих творений будет скоро работать примерно в 200-400 госконторах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:57 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
авторНе думайте, что я совсем чайник, одно из моих творений будет скоро работать примерно в 200-400 госконторах извините, за флуд, но лучше-бы оно не работало. приходилось видеть подобный бред, работающий на 50тыс раб.местах в РФ, убились пользователи и с ума сошли сами разработчики. 200-400 говорит только об лобировании интересов и т.д., но ни коим образом об этом нельзя судить о качестве ПО, Ваши перлы в виде макроподстановки и упертость в отстаивании какого-то принципа это доказывают. как раз в гос.конторах и стоит бредятина, написанная в чеб..., это такой бред, который написан явно под травой. раз такой умный, какого че... здесь спрашиваешь? тряси сервер дальше,- он железный, все стерпит. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 09:18 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
прошелмимо... и упертость в отстаивании какого-то принципа это доказывают. От вас слышать обвинение в адрес кого-либо в "упертости" даже странно :) С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 11:26 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Aleksey-Kпрошелмимо... и упертость в отстаивании какого-то принципа это доказывают. От вас слышать обвинение в адрес кого-либо в "упертости" даже странно :) С уважением, Алексей устроим вновь "срачь"? на тему курсорадаптера? или все-же будете рогами упираться? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 11:36 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
2 Aleksey-K понравилось последнее высказывание Михаила Дроздова: авторА вобще-то на настоящий момент "правильное" использование данных в VFP - это использовать VFP-класс CursorAdapter, который будет в роли "посредника" между т.с. "внешним источником" данных любой природа: т.е. получаемый через ADODB/ODBC/XML-файлы, ... и локальными буферизованными VFP-курсорами, поля которых "биндятся" к контролам на формах... ну-ка сбегай, надавай по попе, о великий и могучий стратег, поборись за чистоту рядов, ненавязывание КАДов и т.д. тьфу на тебя пять раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 11:44 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
прошелмимо2 Aleksey-K понравилось последнее высказывание Михаила Дроздова: авторА вобще-то на настоящий момент "правильное" использование данных в VFP - это использовать VFP-класс CursorAdapter, который будет в роли "посредника" между т.с. "внешним источником" данных любой природа: т.е. получаемый через ADODB/ODBC/XML-файлы, ... и локальными буферизованными VFP-курсорами, поля которых "биндятся" к контролам на формах... ну-ка сбегай, надавай по попе, о великий и могучий стратег, поборись за чистоту рядов, ненавязывание КАДов и т.д. тьфу на тебя пять раз. Молодец! Опрадываешь ожидания.. Давай, клейми нас не разумных... Учи молодых родину (КАД) любить... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 12:46 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Aleksey-Kпрошелмимо2 Aleksey-K понравилось последнее высказывание Михаила Дроздова: авторА вобще-то на настоящий момент "правильное" использование данных в VFP - это использовать VFP-класс CursorAdapter, который будет в роли "посредника" между т.с. "внешним источником" данных любой природа: т.е. получаемый через ADODB/ODBC/XML-файлы, ... и локальными буферизованными VFP-курсорами, поля которых "биндятся" к контролам на формах... ну-ка сбегай, надавай по попе, о великий и могучий стратег, поборись за чистоту рядов, ненавязывание КАДов и т.д. тьфу на тебя пять раз. Молодец! Опрадываешь ожидания.. Давай, клейми нас не разумных... Учи молодых родину (КАД) любить... молодец, сдался - сходи попарься,- и водки выпей! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 12:48 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
прошелмимо 200-400 говорит только об лобировании интересов и т.д., но ни коим образом об этом нельзя судить о качестве ПО, Ваши перлы в виде макроподстановки и упертость в отстаивании какого-то принципа это доказывают. Лобирования как раз таки и нету, качество ПО убедило изначально настроенное скептически руководство отдела ИТ моего управления (сам работаю не в управе и друзей товарищей там не имею, ПО будет распространяться бесплатно) в его промышленной эксплуатации. В настоящее время работает 20 сельских поселений, два региона РФ на уровне УФНС и еще около 15 ИФНС по РФ, и ниодной жалобы на тормоза, отзывы от сотрудников отделов ИТ положительные. Не могу сказать, что все написано самым оптимальным образом, однако однозначно и то, что и увеличить быстродействие, так что бы это было реально заметно не получиться. Потому как серьезных промахов нет. В базе в одной из таблиц бывает и около 1000 000 записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 13:00 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
автори ниодной жалобы на тормоза, отзывы от сотрудников отделов ИТ положительные. при доказывании оного желательно отзывы от оных сотрудников авторПО будет распространяться бесплатно очень непонятен смысл Вашей работы, Вы наверное работаете за медаль? сказка хороша, но верится с трудом, хотя ..., хорошее ПО и бесплатно, все в одно лицо и разработано гением, я Вам дам некоторые заказы, исполните бесплатно? интересно а как там у Вас насчет сертификации, соответствия требованиям определенных ФЗ, предъявляемых к определенного вида(типа) ПО? ИФНС установило несертифицированный продукт? или Вам сертиф.центр выполнил работы бесплатно? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 13:12 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
прошелмимо прошелмимо прошелмимо при доказывании оного желательно отзывы от оных сотрудников авторПО будет распространяться бесплатно очень непонятен смысл Вашей работы, Вы наверное работаете за медаль? сказка хороша, но верится с трудом, хотя ..., хорошее ПО и бесплатно, все в одно лицо и разработано гением, я Вам дам некоторые заказы, исполните бесплатно? интересно а как там у Вас насчет сертификации, соответствия требованиям определенных ФЗ, предъявляемых к определенного вида(типа) ПО? ИФНС установило несертифицированный продукт? или Вам сертиф.центр выполнил работы бесплатно?[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 13:50 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
прошелмимопри доказывании оного желательно отзывы от оных сотрудников да нормально все с отзывами прошелмимоВы наверное работаете за медаль? Пока так, дальше видно будет (медаль могут и не дать, пару окладов может и дадут) прошелмимохорошее ПО и бесплатно, все в одно лицо и разработано гением гений это слишком, завите меня просто -Ваше Величество :) прошелмимоя Вам дам некоторые заказы, исполните бесплатно? Не вижу совсем никакого смысла прошелмимонасчет сертификации, соответствия требованиям определенных ФЗ Не моя головная боль, управление передо мной забыло отчитаться, дали добро, хотя поначалу дали по шапке. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 13:56 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
ну раз пошло хваставство и бравада, можно нам посмотреть пример творчества? мы оценим, и сообщим, ну мужик - молодец! иначе, это все - лозунги, основанные на каком-то завышенном самомнении. зачем Вам форум? чтобы сообщить о своих достижениях? я вот "срусь", желая сократить километры безумия, борюсь с макроподстановками и т.д., а Вы наоборот плодите эти макроподстановки и безумие, при этом уж очень уперто отстаиваете свои устои, как я понимаю основанные на самоварении. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 14:10 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
прошелмимону раз пошло хваставство и бравада Где, шучу я прошелмимоможно нам посмотреть пример творчества? приезжайте в гости покажу прошелмимооснованные на каком-то завышенном самомнении не без этого :) прошелмимоуперто отстаиваете свои устои я пока еще на том уровне, где небольшое увеличение быстродействия не считаю страшной бедой, но критические замечания в свой адрес учитываю, хотя бывает люблю и поспорить, столько о себе сразу нового узнаю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 14:44 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
прошелмимо можно нам посмотреть пример творчества? мы оценим, и сообщим, ну мужик - молодец! Ну и конечно оцените код :) /topic/654110&hl= ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 14:46 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
по ответам - знатный треп + завышенная самооценка. ничего большего. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 14:59 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1585583]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
95ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 193ms |
0 / 0 |