powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQLPREPARE()
61 сообщений из 61, показаны все 3 страниц
SQLPREPARE()
    #36475056
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю запросы к 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) начинает ругаться:
"Команда содержит нераспознанное ключевое слово или фразу", хотя сам запрос однозначно правильный.
Подскажите что за фигня, как побороть или обойти.
Приходиться потом выбрасывать данные, которые не нужны...
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475209
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местами администраторкогда начинаю увеличивать длину запроса (указываю перечень полей для загрузки, использовать условия сортировки, группировки и т.д.) ~>240 символов,
фокс (9) начинает ругаться
Только по своему опыту!
Не вдаваясь в детали, в таких случаях я делаю несколько запросов к вновь получаемым курсорам, всякий раз убирая лишнее. На практике время выполнения запросов некритична, а экономия на программировании - часы или даже дни.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475273
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475292
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbikНе вдаваясь в детали, в таких случаях я делаю несколько запросов к вновь получаемым курсорам, всякий раз убирая лишнее. На практике время выполнения запросов некритична, а экономия на программировании - часы или даже дни.

Сейчас поступаю так же, но как-то не хорошо, поднимаю с сервера примерно 300 тыс записей, из которых мне нужно всего то процентов 5-15.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475294
Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции:
tVdok='"'+'select * from fn98'+'"'
nResult=SQLPREPARE(nShandle, &tVdok, "fn98")
ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится.
Код: plaintext
1.
tVdok='select * from fn98'
nResult=SQLPREPARE(nShandle, tVdok, "fn98") 
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475334
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции:
tVdok='"'+'select * from fn98'+'"'
nResult=SQLPREPARE(nShandle, &tVdok, "fn98")
ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится.
Код: plaintext
1.
tVdok='select * from fn98'
nResult=SQLPREPARE(nShandle, tVdok, "fn98") 


конкретно в этом случае макроподстановка не нужна, но это ведь примерная конструкция запроса, если его текст привести полностью, то макроподстановка еще как нужна.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475352
Местами администраторконкретно в этом случае макроподстановка не нужна, но это ведь примерная конструкция запроса, если его текст привести полностью, то макроподстановка еще как нужна.Не надо рассказывать сказки. Для формирования любой строки макроподстановка не нужна. Точка. Лучше внимательно посмотрите на text ... endtext, особенно опцию textmerge.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475363
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции:
tVdok='"'+'select * from fn98'+'"'
nResult=SQLPREPARE(nShandle, &tVdok, "fn98")
ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится.
Код: plaintext
1.
tVdok='select * from fn98'
nResult=SQLPREPARE(nShandle, tVdok, "fn98") 


попробуй сам,
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'

база данных не понадобиться (до нее дело не дойдет), скопируйте все в фокс и попробуйте сохранить...
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475382
Местами администраторпроходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции:
tVdok='"'+'select * from fn98'+'"'
nResult=SQLPREPARE(nShandle, &tVdok, "fn98")
ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится.
Код: plaintext
1.
tVdok='select * from fn98'
nResult=SQLPREPARE(nShandle, tVdok, "fn98") 


попробуй сам,
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.
text to tVdok textm noshow flags  3  pretext  15 
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 ' 
endtext
? tVdok
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475404
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да прочитал, но речь то была о макроподстановке, ее "убрать и все наладиться".
За ответ спасибо.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475433
Местами администраторда прочитал, но речь то была о макроподстановке, ее "убрать и все наладиться".
За ответ спасибо.Предложение попробовать мне выполнить в фоксе строку с присвоением переменной значения текстовой константы длиной боле 254 символов к макроподстановке отношения не имеет. Это ошибка писателя сей строки. Потому отсылка к статье про строки.
Макроподстановка для передачи символьного параметра функции - вредная бессмыслица, вызванная, вероятно, первой причиной - неумением работать со строками и незнание правил и ограничений в такой работе.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475465
Местами администратор,
кстати, вызывать SQLPREPARE() для однокрано выполняемого батча - бессмыслица. Выигрыша по сравнению с простым SQLEXEC() никакого, даже проигрыш на количесвте выполняемых команд.
Вот для повторения одно и то же команды - самое то.
Код: plaintext
1.
2.
3.
SQLPREPARE(lnHandle, 'Insert into #tmp values (?crsTemp.field1, ?crsTemp.field2)')
scan
  SQLEXEC(lnHandle)
endscan
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475471
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.,
Любишь ты поучить, решения по данному вопросу предложил не ты, уперся в макроподстановку,
будто я кого то убил, работает с макроподстановкой, в какой то ситуации опытным путем пришел к макроподстановке (значит без нее нельзя было), а теперь работаю по шаблону, на ограничения не натыкался, быстродействие не падает, результат правильный - ты раздуваешь проблему из нифига.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475473
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.,

сколько проиграю - 0,001 с ?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475478
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местами администраторigorbikНе вдаваясь в детали, в таких случаях я делаю несколько запросов к вновь получаемым курсорам, всякий раз убирая лишнее. На практике время выполнения запросов некритична, а экономия на программировании - часы или даже дни.

Сейчас поступаю так же, но как-то не хорошо, поднимаю с сервера примерно 300 тыс записей, из которых мне нужно всего то процентов 5-15.
Не вдаваясь в детали и только по опыту:
в каждый из запросов, в том числе первый, включите ТОЛЬКО те критерии, которые вытащат либо меньшее кол-во полей, либо строк. Это не так сложно. Сделайте это, запустите проект в работу, и уже когда все заработает (пусть неспеша, но надежно), займитесь спокойно экспериментами по сабжу.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475492
Местами администраторпроходящий.,
Любишь ты поучить,Не люблю, но жизнь заставляет. решения по данному вопросу предложил не ты,Оппа... И где же тут предложенные не мной решения? уперся в макроподстановку, Да, уперся. Ибо в том числе и из-за нее вылезает описанное тобой поведение.
будто я кого то убил, работает с макроподстановкой, в какой то ситуации опытным путем пришел к макроподстановке (значит без нее нельзя было),Классное доказательство. :) Можно. Любую строку можно сделать из кусков без макроподстановки. Это надо доказывать? а теперь работаю по шаблону, на ограничения не натыкался, быстродействие не падает, результат правильный - ты раздуваешь проблему из нифига.Я не раздуваю проблему, а предупреждаю любителей работать по шаблону от граблей, которые они сами себе подкладывают. Ты вот как раз и наступил именно на такие грабли. Кстати, в оценке программного кода и программ кроме работоспособности и корректности существует такой критерий, как скорость исполнения. Макроподстановка тормозит.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475512
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbik,
да работает вся фигня уже давно, сейчас захотелось оптимизировать
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475540
Местами администраторпроходящий.,

сколько проиграю - 0,001 с ?На одном вызове. Сколько всего вызовов делает программа? Например при вставке 10 000 записей? К тому же зачем делать бесполезные вещи? Из-за лени подумать?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475554
Местами администраторigorbik,
да работает вся фигня уже давно, сейчас захотелось оптимизироватьНо ускорение работы в оптимизацию не входит. Так? :)
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475568
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любителей поучить всегда жизнь заставляет
Решение предложил PaulWist, за что ему спасибо
Я не просил оценивать стиль программирования
В данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти"
Скорость исполнения +- 0,000001 не существенна
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475587
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.,
выиграть 5 секунд, это понятно, но из-за сотых-тысячных долей не стоит кричать, что я нифига не правильно использую фокс.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475588
Местами администраторпроходящий.,
выиграть 5 секунд, это понятно, но из-за сотых-тысячных долей не стоит кричать, что я нифига не правильно использую фокс.И где был крик? Как надо было сообщить об этом неправильном использовании? Мелким невидимым шрифтом?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475598
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Местами администраторпроходящий.,
выиграть 5 секунд, это понятно, но из-за сотых-тысячных долей не стоит кричать, что я нифига не правильно использую фокс.И где был крик? Как надо было сообщить об этом неправильном использовании? Мелким невидимым шрифтом?

Уважаю, с умными собеседниками люблю пообщаться, но проблем с макроподстановкой в данной ситуации нет, разве что те несколько символов ('"'+ и +'"') и 0,...1 с снижения быстродействия....
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475607
Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти"
Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475617
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти"
Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей.

Сам себе противоречишь - грабли таки эти, и без макроподстановки работает еще лучше - так с макроподстановкой все-таки работает, хуже, но все-таки (-+0...1 с), согласен?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475622
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь за то, что на "ты", но ко мне можно обращаться так же.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475628
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти"
Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей.

Насчет небольшой длины, несколько символов, что используются для макроподстановки ситуацию коренным образом не меняют, text...endtext - решает данную проблему полностью.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475638
Местами администраторпроходящий.Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти"
Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей.

Сам себе противоречишь - грабли таки эти, и без макроподстановки работает еще лучше - так с макроподстановкой все-таки работает, хуже, но все-таки (-+0...1 с), согласен?Не понял.
1. SQLPREPARE() для одиночного батча - тормоз. И лишние строки.
2. Макроподстановка не может быть более 254 символов и тормоз.
3. С помощью Coverage profiler считаем реальное количество вызовов с этими тормозами и тихо офигеваем.
Где противоречие?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475663
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам себе противоречишь - грабли таки эти, и без макроподстановки работает еще лучше - так с макроподстановкой все-таки работает, хуже, но все-таки (-+0...1 с), согласен?[/quot]Не понял.
1. SQLPREPARE() для одиночного батча - тормоз. И лишние строки.
2. Макроподстановка не может быть более 254 символов и тормоз.
3. С помощью Coverage profiler считаем реальное количество вызовов с этими тормозами и тихо офигеваем.
Где противоречие?[/quot]
2. так ведь и без макроподстановки не получалось
1,3 SQLPREPARE() использую действительно один раз, но дело в том, что данные взял с сервера, отключился и программа работает автономно, следующее обновление данных дня через два, три
через лет пять пожалуй и набралось бы секунд 20-30
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475698
Местами администратор2. так ведь и без макроподстановки не получалосьКак у тебя с булевой алгеброй и математической логикой? .t. or .t. какой даст результат? Изменится ли результат если перевести в .f. только один операнд? Что надо сделать, чтобы таки результат стал .f. ?
1,3 SQLPREPARE() использую действительно один раз, но дело в том, что данные взял с сервера, отключился и программа работает автономно, следующее обновление данных дня через два, три
через лет пять пожалуй и набралось бы секунд 20-30Ну это все сначала так аргументируют свой выбор. Потом начиают работать по шаблону. Потом количество применений шаблона увеличивается. Потом прога начинает тормозить. Разбор полетов показывает, что объяснения, что мол такая конструкция тормозит всего лишь на 0.00001 сек., не выдерживают никакой критики в силу того, что РЕАЛЬНОЕ количество использования такого шаблона и, главное, количество реальных вызовов критикуемого кода, построенного по шаблону, превышает все предполагаемые разрботчиком-шаблоником пределы на ПОРЯДКИ!!! Особено если это где-то внутри большой сложной формы с кучей refresh'ей "для надежности". Зачем учится плохому? Зачем на это тратить время? Может лучше сразу по хорошему?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475733
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: проходящий.
> Ну это все сначала так аргументируют свой выбор. Потом начиают работать по шаблону. Потом количество применений
> шаблона увеличивается. Потом прога начинает тормозить. Разбор полетов показывает, что объяснения, что мол такая
> конструкция тормозит всего лишь на 0.00001 сек., не выдерживают никакой критики в силу того, что РЕАЛЬНОЕ количество
> использования такого шаблона и, главное, количество реальных вызовов критикуемого кода, построенного по шаблону,
> превышает все предполагаемые разрботчиком-шаблоником пределы на ПОРЯДКИ!!! Особено если это где-то внутри большой
> сложной формы с кучей refresh'ей "для надежности". Зачем учится плохому? Зачем на это тратить время? Может лучше сразу
> по хорошему?

+ сто тыщь пицот
З.Ы. Так и хочется поотрывать все и приставить обратной стороной

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475748
Игорь Горбонос
З.Ы. Так и хочется поотрывать все и приставить обратной стороной
Стесняюсь спросить где и что хочется поотрывать и приставить? :)
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475760
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так легко договориться и до того, что завтра конца света.
Но если в будущем соберусь писать полноценное клиент-серверное приложение, обязательно учту все пожелания, связанные с символьной строкой и макроподстановкой в случае применения SQLPREPARE() .

проходящий.Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей.

проходящий.И грабли таки эти
Макроподстановка работает=.F.
проходящий.без макроподстановки работает еще лучше
Макроподстановка работает=.T.


проходящий.Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода
Код измеряется в тоннах? Моего кода? (т.к. Вами с большой буквы, логично предположить, что обращение лично ко мне)

У кого проблемы с логикой и дискретной математикой?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475777
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне ведь простительно, самоучка я, а вот ГУРУ логики не должны так опрометчиво высказываться или я не прав?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475807
Местами администраторТак легко договориться и до того, что завтра конца света.
Но если в будущем соберусь писать полноценное клиент-серверное приложение, обязательно учту все пожелания, связанные с символьной строкой и макроподстановкой в случае применения SQLPREPARE() .Опять какое-то кривое понимание. Макроподстановка тормоз всегда, вне зависимости от SQLPREPARE() и прочего. В том числе и от клиент-серверности.

проходящий.Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей.

проходящий.И грабли таки эти
Макроподстановка работает=.F.
проходящий.без макроподстановки работает еще лучше
Макроподстановка работает=.T.


проходящий.Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода
Код измеряется в тоннах? Моего кода? (т.к. Вами с большой буквы, логично предположить, что обращение лично ко мне)

У кого проблемы с логикой и дискретной математикой?М-да, похоже без конкретных кусков кода, где макроподстановка была "необходима", не обойтись.
К тому же говрилось про два операнда, а не про один. Потому вопрос про логику и математику остается открытым.
Про тонны кода, возможно я не совсем точно выразился. Имелись в виду тонны кода, пример или образец которого и был Вами продемонстрирован. Написаны сии тонны, конечно, не Вами, но все подобные коды разительно похожи друг на друга как по стилю, так и по быстродействию.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475849
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции:
tVdok='"'+'select * from fn98'+'"'
nResult=SQLPREPARE(nShandle, &tVdok, "fn98")
ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится.
Код: plaintext
1.
tVdok='select * from fn98'
nResult=SQLPREPARE(nShandle, tVdok, "fn98") 


Человеку свойственно ошибаться.
проходящий.ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится.
Начиналось ведь с этого, опять накладочка. И ведь речи нет ни про быстродействие, ни про логику
Просто сказано, что данная конструкция не работает из-за макроподстановки, а конструкция работает. Это потом, дабы выкрутиться чужое решение было выдано за свое, а когда это не прокатило пришлось докапаться до быстродействия, да уж -
В чужом глазу соринку видно, а в своем бревна не видать.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36475937
Местами администраторпроходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции:
tVdok='"'+'select * from fn98'+'"'
nResult=SQLPREPARE(nShandle, &tVdok, "fn98")
ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится.
Код: plaintext
1.
tVdok='select * from fn98'
nResult=SQLPREPARE(nShandle, tVdok, "fn98") 


Человеку свойственно ошибаться.
проходящий.ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится.
Начиналось ведь с этого, опять накладочка.Опять не понял. О какой накладочке речь. Не могли бы изъясняться поточнее? И ведь речи нет ни про быстродействие, ни про логику
Просто сказано, что данная конструкция не работает из-за макроподстановки, а конструкция работает. Работает в некоторых случаях. Вам предложено решение, работающее всегда. Потом было объяснено, что макроподстановка еще и торомоз. Что не так?Это потом, дабы выкрутиться чужое решение было выдано за свое,Тынц в студию. Какое чужое решение? Где? Ткните пальцем. а когда это не прокатило пришлось докапаться до быстродействия, да уж -
В чужом глазу соринку видно, а в своем бревна не видать.Не прокатило что?
ps: Вы не слишком близко к сердцу приняли мои рассказы про хороши и плохие подходы к прораммированию на фоксе?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476049
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Оппа... И где же тут предложенные не мной решения?
Вот
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-оператор, где он компилируется для более быстрого исполнения.
О.В. Бартеньев (книга о Фоксе)
Кому верить?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476091
Местами администраторпроходящий.Оппа... И где же тут предложенные не мной решения?
Вот
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() с тем же батчем, так как одна компиляция выполняемого батча тут будет присутствовать в обоих случаях, выполняется всегда компилированный/подготовленны код. Но в первом случае есть еще расходы на вызов дополнительной функции и получение результата ее работы.
Иное дело многократное исполнение. Тогда одни раз компилируется/подготавливается план исполнения и потом несколько раз исполняется этот самый подготовленный план.

Еще вопросы есть?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476100
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда пойдете в политику?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476109
Местами администраторКогда пойдете в политику?Если вопрос ко мне, то он опять мимо кассы. :) В смысле Вы опять неправильно поняли/интерпретировали мои тут высказывания. Я не собираюсь в политику, мне интереснее решение технических вопросов, а не ... ну Вы меня поняли.
А что вызвало такой вопрос?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476133
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое ощущение, что специалисты по техническим вопросам могут выкрутиться из любой затруднительной ситуации. :)
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476146
Местами администраторТакое ощущение, что специалисты по техническим вопросам могут выкрутиться из любой затруднительной ситуации. :)Иначе бы они не были специалистами, не так ли? :)
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476171
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу, а решение проблемы все таки не Ваше.
http://forum.foxclub.ru/read.php?32,177182,177250#msg-177250
Владимир Максимов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 
LOCAL lcText 
TEXT TO m.lcText NOSHOW 
Первая строка текста 
Вторая строка текста 
"Название" 
ENDTEXT 
?m.lcText 

Как видите, все что находится между TEXT и ENDTEXT воспринимается не как набор команд, а просто как текст. Содержимое переменой m.lcText.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476183
Местами администраторУгу, а решение проблемы все таки не Ваше.
Для Вас "предложенное мной" и "мое" - одно и то же?
Разумеется оно не мое лично, не я его придумал, но здесь то его предложил я? Или не я? Или не это, а что-то другое?

Вам еще не надоело добиваться своей "победы"? Неужто так сильно хочется меня задавить? Или это вопрос какого-то "принципа"? Какого? :)
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476196
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.,
Опять таки решение предложил PaulWist. Не хотел Вас давить, просто Вы сами уперлись по не понятным причинам, а справедливость все-таки должна быть, хотя бы в таких очевидных вопросах.
Как специалиста в VFP (просматриваю sql.ru регулярно, использую в том числе и Ваши рекомендации и решения) Вас очень уважаю. То что человек "упертый", а специалисты в своей области чаще всего именно такие - очевидно, высококласный специалист=талант (10%)+труд (90%), а что может заставить столько трудиться?- Считаю что именно оно.
Не думайте, что я совсем чайник, одно из моих творений будет скоро работать примерно в 200-400 госконторах.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476638
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе думайте, что я совсем чайник, одно из моих творений будет скоро работать примерно в 200-400 госконторах

извините, за флуд,
но лучше-бы оно не работало.

приходилось видеть подобный бред, работающий на 50тыс раб.местах в РФ,
убились пользователи и с ума сошли сами разработчики.

200-400 говорит только об лобировании интересов и т.д., но
ни коим образом об этом нельзя судить о качестве ПО,
Ваши перлы в виде макроподстановки и упертость
в отстаивании какого-то принципа это доказывают.

как раз в гос.конторах и стоит бредятина, написанная в чеб...,
это такой бред, который написан явно под травой.

раз такой умный, какого че... здесь спрашиваешь? тряси сервер дальше,-
он железный, все стерпит.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36476992
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо... и упертость
в отстаивании какого-то принципа это доказывают.

От вас слышать обвинение в адрес кого-либо в "упертости" даже странно :)
С уважением, Алексей
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477033
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-Kпрошелмимо... и упертость
в отстаивании какого-то принципа это доказывают.

От вас слышать обвинение в адрес кого-либо в "упертости" даже странно :)
С уважением, Алексей

устроим вновь "срачь"?
на тему курсорадаптера?

или все-же будете рогами упираться?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477060
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Aleksey-K

понравилось последнее высказывание Михаила Дроздова:
авторА вобще-то на настоящий момент "правильное" использование данных в VFP - это использовать VFP-класс CursorAdapter, который будет в роли "посредника" между т.с. "внешним источником" данных любой природа: т.е. получаемый через ADODB/ODBC/XML-файлы, ... и локальными буферизованными VFP-курсорами, поля которых "биндятся" к контролам на формах...

ну-ка сбегай, надавай по попе, о великий и могучий стратег,
поборись за чистоту рядов, ненавязывание КАДов и т.д.

тьфу на тебя пять раз.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477328
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо2 Aleksey-K

понравилось последнее высказывание Михаила Дроздова:
авторА вобще-то на настоящий момент "правильное" использование данных в VFP - это использовать VFP-класс CursorAdapter, который будет в роли "посредника" между т.с. "внешним источником" данных любой природа: т.е. получаемый через ADODB/ODBC/XML-файлы, ... и локальными буферизованными VFP-курсорами, поля которых "биндятся" к контролам на формах...

ну-ка сбегай, надавай по попе, о великий и могучий стратег,
поборись за чистоту рядов, ненавязывание КАДов и т.д.

тьфу на тебя пять раз.
Молодец! Опрадываешь ожидания.. Давай, клейми нас не разумных... Учи молодых родину (КАД) любить...
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477338
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-Kпрошелмимо2 Aleksey-K

понравилось последнее высказывание Михаила Дроздова:
авторА вобще-то на настоящий момент "правильное" использование данных в VFP - это использовать VFP-класс CursorAdapter, который будет в роли "посредника" между т.с. "внешним источником" данных любой природа: т.е. получаемый через ADODB/ODBC/XML-файлы, ... и локальными буферизованными VFP-курсорами, поля которых "биндятся" к контролам на формах...

ну-ка сбегай, надавай по попе, о великий и могучий стратег,
поборись за чистоту рядов, ненавязывание КАДов и т.д.

тьфу на тебя пять раз.
Молодец! Опрадываешь ожидания.. Давай, клейми нас не разумных... Учи молодых родину (КАД) любить...


молодец, сдался - сходи попарься,- и водки выпей!
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477381
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо
200-400 говорит только об лобировании интересов и т.д., но
ни коим образом об этом нельзя судить о качестве ПО,
Ваши перлы в виде макроподстановки и упертость
в отстаивании какого-то принципа это доказывают.


Лобирования как раз таки и нету, качество ПО убедило изначально настроенное скептически руководство отдела ИТ моего управления (сам работаю не в управе и друзей товарищей там не имею, ПО будет распространяться бесплатно) в его промышленной эксплуатации. В настоящее время работает 20 сельских поселений, два региона РФ на уровне УФНС и еще около 15 ИФНС по РФ, и ниодной жалобы на тормоза, отзывы от сотрудников отделов ИТ положительные.

Не могу сказать, что все написано самым оптимальным образом, однако однозначно и то, что и увеличить быстродействие, так что бы это было реально заметно не получиться. Потому как серьезных промахов нет.
В базе в одной из таблиц бывает и около 1000 000 записей.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477430
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автори ниодной жалобы на тормоза, отзывы от сотрудников отделов ИТ положительные.

при доказывании оного желательно отзывы от оных сотрудников

авторПО будет распространяться бесплатно
очень непонятен смысл Вашей работы,
Вы наверное работаете за медаль?

сказка хороша, но верится с трудом, хотя ...,
хорошее ПО и бесплатно, все в одно лицо и разработано гением,
я Вам дам некоторые заказы, исполните бесплатно?

интересно а как там у Вас насчет сертификации, соответствия требованиям
определенных ФЗ, предъявляемых к определенного вида(типа) ПО?
ИФНС установило несертифицированный продукт? или
Вам сертиф.центр выполнил работы бесплатно?
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477559
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо
прошелмимо
прошелмимо
при доказывании оного желательно отзывы от оных сотрудников

авторПО будет распространяться бесплатно
очень непонятен смысл Вашей работы,
Вы наверное работаете за медаль?

сказка хороша, но верится с трудом, хотя ...,
хорошее ПО и бесплатно, все в одно лицо и разработано гением,
я Вам дам некоторые заказы, исполните бесплатно?

интересно а как там у Вас насчет сертификации, соответствия требованиям
определенных ФЗ, предъявляемых к определенного вида(типа) ПО?
ИФНС установило несертифицированный продукт? или
Вам сертиф.центр выполнил работы бесплатно?[/quot]
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477584
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимопри доказывании оного желательно отзывы от оных сотрудников
да нормально все с отзывами
прошелмимоВы наверное работаете за медаль?
Пока так, дальше видно будет (медаль могут и не дать, пару окладов может и дадут)
прошелмимохорошее ПО и бесплатно, все в одно лицо и разработано гением
гений это слишком, завите меня просто -Ваше Величество :)
прошелмимоя Вам дам некоторые заказы, исполните бесплатно?
Не вижу совсем никакого смысла
прошелмимонасчет сертификации, соответствия требованиям определенных ФЗ
Не моя головная боль, управление передо мной забыло отчитаться, дали добро, хотя поначалу дали по шапке.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477634
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну раз пошло хваставство и бравада,

можно нам посмотреть пример творчества?
мы оценим, и сообщим, ну мужик - молодец!

иначе, это все - лозунги,
основанные на каком-то завышенном самомнении.

зачем Вам форум? чтобы сообщить о своих достижениях?
я вот "срусь", желая сократить километры безумия,
борюсь с макроподстановками и т.д.,
а Вы наоборот плодите эти макроподстановки и безумие,
при этом уж очень уперто отстаиваете свои устои,
как я понимаю основанные на самоварении.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477757
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимону раз пошло хваставство и бравада
Где, шучу я
прошелмимоможно нам посмотреть пример творчества?
приезжайте в гости покажу
прошелмимооснованные на каком-то завышенном самомнении
не без этого :)
прошелмимоуперто отстаиваете свои устои
я пока еще на том уровне, где небольшое увеличение быстродействия не считаю страшной бедой,
но критические замечания в свой адрес учитываю, хотя бывает люблю и поспорить, столько о себе сразу нового узнаю :)
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477770
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо
можно нам посмотреть пример творчества?
мы оценим, и сообщим, ну мужик - молодец!

Ну и конечно оцените код :)
/topic/654110&hl=
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477824
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по ответам - знатный треп + завышенная самооценка.
ничего большего.
...
Рейтинг: 0 / 0
SQLPREPARE()
    #36477860
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимопо ответам - знатный треп + завышенная самооценка.
ничего большего.
Каждый имеет право на свое мнение.
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQLPREPARE()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]