|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста! MySQL -> ODBC -> CA -> Forma -> Grid -- в 2 раза медленнее заполняется форма, чем просто через SQLEXEC(...,kursor) При выполнении в среде VFP9 и при 'set tallk on' видно что сканирование(кол записей) происходит дважды прежде чем отоброзятся данные . Просмотрел всю цепочку загрузки - команд типа cout, summ, а тем более CA.CursorRefresh() не использую. Грешил даже на ипользование CAl.alias='rrr' и CA.tables='ttt' - сделал их одинаковыми. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 12:23 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
А в два раза медленнее, это как - 15 и 30 сек или 0.015 и 0.030. над своей строкой .SelectCMD чтобы найти самый оптимальный вариант прочитав уйму литературы проплюхалась с тестами НЕДЕЛЮ! в итоге, чтобы всё летало, даже пришлось доп.индекс к одной из таблиц прописывать. А вот так просто, ничего не зная о стрктурах исходных таблиц и тем более о желаемом результате ничего дельного не присоветуешь. Кроме как поменять железо - будет в два раза быстрее. Ну, может ГУРУ вот так неглядя решат проблему ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:41 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
ЛюдмilaКроме как поменять железо - будет в два раза быстрее.и то не факт :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:48 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Попробуй поставить CA.FetchSize = -1 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:53 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
this.n_journal.UpdateType = 1 this.n_journal.whereType = 3 this.n_journal.FetchSize = -1 this.n_journal.FetchAsNeeded = .F. select в обоих случаях одинаковый ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 14:00 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
время на 80тыс записях в 1вар -3сек а на 2вар- 6сек ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 14:04 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Еще! param_zapT='from journal_param where LEFT(ksp,5)="'+LEFT(_ksp,5)+'"' && делаю подобие параметризованного курсора this.CA.SelectCmd = 'select *' + param_zapT ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 16:26 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CAЕще! param_zapT='from journal_param where LEFT(ksp,5)="'+LEFT(_ksp,5)+'"' && делаю подобие параметризованного курсора Замени на это: Код: sql 1.
Тогда если у тебя есть индекс по ksp то сервер его задействует. если нет, то наверно есть смысл создать. и вместо * лучше нужные поля перечислить если не все нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 16:46 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Упс. Равно не стер, так правильно: Код: sql 1.
т.е. конечный запрос такой должен получиться Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 16:56 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Благодарю DIMA T! Ваш вариант с param_zapT = textmerge([from journal_param where ksp LIKE '<<LEFT(_ksp,5)>>%']) опробовал и индекс создал - результат тот же. Проблема осталась - двойной прогон курсора перед заполнением(отоброжением данных) в гриде - как бы после CA.cursorfill() выполняется CA.CursorRefresh() или какая то другая сомманда( count, index ...) - но ничего подобного не нахожу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 10:40 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CAБлагодарю DIMA T! Ваш вариант с param_zapT = textmerge([from journal_param where ksp LIKE '<<LEFT(_ksp,5)>>%']) опробовал и индекс создал - результат тот же. Проблема осталась - двойной прогон курсора перед заполнением(отоброжением данных) в гриде - как бы после CA.cursorfill() выполняется CA.CursorRefresh() или какая то другая сомманда( count, index ...) - но ничего подобного не нахожу. Двойной прогон это не должно было решить. Просто выборка должна быстрее происходить. За счет использования индекса. возможно он сначала автоматом отрабатывает, а потом еще раз по cursorfill() попробуй поставить Код: sql 1.
напиши поподробнее как у тебя все реализовано. Ты в коде CA создаешь или он в DE? Как _ksp появляется ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 11:44 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Для построения всех СА использую созданный класс на базе стандартно построенного Builderom СА(моих дополнений нет). CA в DE->BeforeOpenTables создаю и там же отрабатывает Cursorfill() (первый прогон) затем AfterCursorFill из класса (ничего криминального) затем возврат в BeforeOpenTables и при выходе из него -второй прогон и затем отоброжается грид. public KSP - определяется при входе в программу из другой таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:05 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CA, Может это DE чудит, пытаясь переоткрыть курсор и вызывая посторное чтение ? Если нет завязок по RELATION с другими файлами в DE, то лучше вынести создание СА и вызов CURSORFILL в LOAD формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:34 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Может мы открыли Америку!? Для чистоты эксперимента: Отказался от своего сласса СА, напрямую создал this.NEWOBJECT('ca1', 'CursorAdapter') в Load Формы СА, ЗАРЕМАРКИРОВАЛ все методы и свойства Формы и Грида - загружается в 2 раза быстрее. Ремаркирую Load Формы - переношу его содержимое в DE - Двойной прогон остался т.е. и как следствие в 2 раза медленнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 17:19 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Код: sql 1.
Пробовал это поставить? Грид пустой открывается? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 17:21 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Поневоле задаёшься мыслью - Неужели для работы с MySQL нужно проектировать классы, добавлять this.NEWOBJECT('ca1' Судя по Вашим мытарствам Да! Пока свежо впамяти поведаю: Тупо на форму с гридом изТулБоха мышкой перетащила DataEnvironment, затем в него из того же ТулБокса - CursorAdapter, слегка подправила сгенерированный программой код. Прописала .SelectCmd="sele Tab1.*,.... left join ......join Group..where... .UpdatableFieldList="Id.........................." .UpdateNameList="Id........................." .KeyFieldList=..................... первоначально никаких After | Before пристегнулась ремнями безопасности и .CursorFill() всё полетело не смотря на пару тяжелых таблиц-источников и мудрёный select (тестировала локально, затем по сети -без разницы) Может и Вам стоит с этого начать и по ходу работы добавить "навороты"(Afterы и BeforЫ) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 22:48 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CA, Ничего сверхестественного. Если в DE создать билдером СА, то в начале INIT-а у него будут такие стhоки: Код: javascript 1. 2. 3. 4. 5. 6. 7.
Только сейчас понял для чего они служат. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 22:59 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
А я до сих пор не поняла (да и незачем пока). Доверилась Фоксу. Но для чистоты эксперимента по сетке в СА >> Grid вывела запрос sele Tab1.* from Tab1 order by Fam where like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о" примерно тоже что и у Вас вернулся через 0.031 сек. по Fam cтоит индекс ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 23:09 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Людмilawhere like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о"Для строк короче пяти символов смысл этого выражения будет немножко другим. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 04:55 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Спасибо всем! 1 Dima T: только сейчас проверил с CA.NoData = .T. -> Грид пустой открывается. 2 Людмила : на форму с гридом изТулБоха мышкой перетащила DataEnvironment, затем в него из того же ТулБокса - CursorAdapter Я не совсем понял эту технологию. Как организован ТулБох? Если можно подробнее! 3 Sea_Cat: да, вначале в моем слассе билдер создал в init do case case not pemstatus(This, '__VFPSetup', 5) This.AddProperty('__VFPSetup', 0) case This.__VFPSetup = 2 This.__VFPSetup = 0 return endcase я отказался и от этого - результат не изменился. Поделитесь назначением этих строк ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 10:56 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
1. открываем Форму с Гридом 2. в меню Tools выбираем ToolBox 3. в разделе VFP Base Classes ToolBoxa ищем значек с названием - DataEnvironment, перетаскиваем его на форму 4. чуть повыше значек CursorAdapter его тащим на форму на значек DE и ВсЁ далее, как Вы там говорите - ЗАМАРКИРОВАЛ! ВСЕ СВОЙСТВА И МЕТОДЫ.(страшно даже) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 13:23 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
tanglirЛюдмilawhere like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о"Для строк короче пяти символов смысл этого выражения будет немножко другим. нормально так. КАким?!? научите меня и VIVA_CA - он тоже что то подобное пытается извлеч. а лучше подскажите как из табл со структурой field 1 | f2 | f3 | f4 | Иванов | 0 | 0 | 1 | Петров | 0 | 1 | 0 | Сидров | 1 | 0 | 0 | сделать программно таблицу Иванов | Петров | Cидров | 0 | 0 | 1 0 | 1 | 0 1 | 0 | 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 13:50 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CA, DE почему-то дважды пытается инициализировать объект CA. Поэтому билдер и вставляет в начало INIT эти коды - они предотвращают его повторное выполнение. Поэтому, лучше оставить в DE только то, что сделано автоматом, а все, что связано открытием файлов вручную и созданием своих объектов CA - выполнять в LOAD формы. Тогда, по крайней мере, никто не вмешивается в управление этими объектами ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 14:25 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Спасибо, Sea_Cat Спасибо, Людмила - только не понятно что с этими значками на форме делать? Получается два DE на форме!?(я взял для эксперимента старую форму где в DE что-то было) и чем отличается Ваш вариант от если в DE по правой кнопке мышки add CursorAdapter ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 14:53 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Уточняю: зачем "Тупо на форму с гридом изТулБоха мышкой перетащила DataEnvironment" если DE уже существует даже на вновь созданной форме? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 15:02 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
У меня на вновь созданной форме DE отсутствует, скажу больше - На ней нет даже Labelов и Commandов тоже нет! и даже назвать себя она красиво не смогла (типа Габриэлла1) - скромненько Form1. По всей видимости у меня среда разработки FoxPro9 плохая. Всё приходится делать ручками и элементы добавлять и писать к ним код. А так представте, создаёшь новуя форму и вот она - Габриэлла1 уже c DE, кнопками и надписями. И конечно, добавлять на неё второй DE уже извращение. Может и правда я не в том Фоксе работаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 15:57 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Людмila Не совсем понятна ваша проблема. Возможно это: Посмотрите строку - Tools-Options-Forms-Form, там дожны быть ваша .vcx и в ней ваш класс. Если строка пустая, то форма создается родная фоксовская. Не забудьте сохранить Set As Default. Или Откройте форму как класс: Tools-Class Browser-Open-Тип файлов-Form Затем Правая кнопка-Redefine-найти свою .vcx и в ней свой класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 18:08 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Людмilaа лучше подскажите как из табл со структурой field 1 | f2 | f3 | f4 | Иванов | 0 | 0 | 1 | Петров | 0 | 1 | 0 | Сидров | 1 | 0 | 0 | сделать программно таблицу Иванов | Петров | Cидров | 0 | 0 | 1 0 | 1 | 0 1 | 0 | 0Типа так: Код: sql 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.
Ну, можно ещё добавить контроль-приведение типов и размера полей, можно задавать и список полей для транспонирования, можно попробовать обойтись выделением памяти только под один массив размера nRec*nFields... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 19:06 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
sg12Людмila Не совсем понятна ваша проблема. Боже упаси! Никакая это не проблема. Пусть форма при создании будет пустая, а всё остальное добавим по мере необходимости. К примеру в моём приложении 12-15 форм все они разительно отличаются друг от друга и только в двух из них использую DataEnvironment. Так нужен он мне по умолчанию при создании формы? конечно же Нет. Честно говоря ещё пару месяцев назад имела смутные представления об этом элементе. ОГромное СП AndreTM, чуть попозже попробую протестить на своих таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 19:50 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
>>>where like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о" >>Для строк короче пяти символов смысл этого выражения будет немножко другим. >нормально так. КАким?!? Пример: Код: plaintext 1. 2. 3. 4.
Код: plaintext 1. 2. 3.
Людмilaа лучше подскажите как из табл со структурой field 1 | f2 | f3 | f4 | Иванов | 0 | 0 | 1 | Петров | 0 | 1 | 0 | Сидров | 1 | 0 | 0 | сделать программно таблицу Иванов | Петров | Cидров | 0 | 0 | 1 0 | 1 | 0 1 | 0 | 0В поиск по "pivot". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 08:26 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Вот это другое дело! Спасибо за ликбез. проверила-перепроверила. Считала, что Left('ABC',5)+'o*' будет 'ABC o*' ну а в переводе ошибочка вышла - трансляция снукера по Евроспорту началась, а вот "PIVOT" для меня совершенно новое слово. опять же спасибо, поищу! Помниться наш препод на лекции (шутя отвлекшись от темы) продемонстрировал как это делается SELECTom развернул таблицу что все строки стали колонками, а колонки строками (умнейший был Дядька, но злоупотреблял) и скорее всего я эту Фишку не записала - по третьему разу просматриваю старые лекции. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 14:24 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
И вот что сказал Гугл "Пивот это инструмент, которым могут пользоваться как трейдеры торгующие во флете, так и те, которые торгуют на пробой. Первые используют пивот для определения точек разворота, вторые используют пивот, чтобы определить ключевые уровни для пробития цены". что-то я не пойму каким боком мне ПИВОТ пристроить к моей задумке - по всей видимости это шутка!? Сейчас я имею расписание приемов врачей DE>>CA-обновление по таймеру в формате в р а ч | 13:00 | 13:45 | - заголовок Иванова | зант| своб| ............- строка Петрова | своб| зант| ............- строка хотелось бы иметь возможность по клику переделать изображение на Иванва | Петрва | - заголовок 13 : 00 | 13 : 00 | - строка 13 : 45 | 13 : 45 | - строка возможно два грида один из которых Visible=.F. но источник данных один и тот же ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 15:01 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 15:47 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
В поставке VFP есть классы _xtab и pivottable , можно ими просто воспользоваться. Я же считаю, что у вас проблема в том, что вы на основе одного отображения (которое "расписание") пытаетесь создать другое отображение, хотя надо просто создавать сразу оба отображения из одного источника. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 21:34 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
AndreTM, полностью с Вами согласна, безусловно из одного источника. планирую разместить их в разных Гридах друг-за-другом один из которых Visible=.F. По желанию пользователя можно будет переключиться на другой грид - поменяв Visible обоих. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 22:24 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Людмila, Ну так изобразите структуру источника - и, думаю, нужную пару селектов вам сразу же покажут ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 22:28 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Думаю, что покажут. Но, насколько меня хватит, буду делать сама. В любом случае спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 23:07 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Уважаемые, коллеги! Хочу вернуться к первоначальной теме. Пытаюсь организовать асинхронный режим. 1 При - ** СА.MaxRecords = 100 СА.FetchSize = -1 СА .FetchAsNeeded = .F. естественно загружает все в Грид 2 При - СА.MaxRecords = 100 СА.FetchSize = 100 СА .FetchAsNeeded = .Т. - Грид пустой 3 и только при - СА.MaxRecords = 100 СА.FetchSize = -1 - !!!! СА.FetchAsNeeded = .T. загружается первые 100 записей ????? почему СА.FetchSize = -1 и как в Гриде загрузить следующую порцию ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 12:55 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
FetchSize Property HELP... If nValue is -1, Visual FoxPro retrieves the complete result set, which is limited by the value of the MaxRecords property. т.е. MaxRecords и FetchAsNeeded работают когда FetchSize = -1 FetchAsNeeded = .T. это не асинхронный режим. Тут запрос полностью выполняется на сервере и сервер возвращает первые MaxRecords записей а остальные лежат на сервере и ждут пока их клиент заберет. Листая грид они докачиваются. Как принудительно докачать я не знаю. Не пользуюсь FetchAsNeeded = .T., т.к. тут есть другой подвох - пока весь результат запроса не забран с сервера нельзя выполнить другой запрос через это соединение, ошибка происходит, что-то типа "connection busy". ЗЫ Если подозреваешь что запрос по разному отрабатывает через CA и SQLexec() - включи трассировку ODBC и посмотри лог для каждого случая. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 13:49 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CAвремя на 80тыс записях в 1вар -3сек а на 2вар- 6сек Подумай, так ли нужны пользователю 80 тыс. записей? Смотреть в гриде устанет. Может лучше интерфейс как-то переделать? Я на всех запросах ставлю top. Например делаешь запрос Код: sql 1.
после проверяешь Код: sql 1. 2. 3.
Потом размер записи можно уменьшить, выбирать только нужные поля а не все, т.е. вместо * перечислить нужные поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 14:59 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Подумай, так ли нужны пользователю 80 тыс. записей? Смотреть в гриде устанет. Dima T естественно с Вами согласен, но случаи бывют разные. В ранних топиках попадались статьи об успешной организации асинхронного режима на базе СА. Установив (повторяюсь) СА.FetchSize = 100 СА .FetchAsNeeded = .Т. хотелось бы повторить подвиг включи трассировку ODBC и посмотри лог для каждого случая. - Если не затруднит - подробнее как это сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 17:34 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CAВ ранних топиках попадались статьи об успешной организации асинхронного режима на базе СА. Тут вроде как надо еще асинхронный режим соединения включить. Код: sql 1.
Пробовал это для SQLEXEC() - работает, но скорость получения результата в разы ниже. VIVA_CAвключи трассировку ODBC и посмотри лог для каждого случая. - Если не затруднит - подробнее как это сделать Панель управления - ODBC - вкладка Трассировка это в W7, в XP было в администрировании. Пример на картинке. Задаешь лог и жмешь "Пуск трассировки". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 19:02 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Dima T благодарю! Когда что-то получится отпишусь. Текучка отвлекает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 10:24 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
Включил трассировку Включил SQLSETPROP(handle, 'Asynchronous', .T.) На форме создал кнопку с такой командой: lnResult = SQLEXEC(m.gn_Soed,'') т.е. так пытаюсь дернуть следующую порцию проверяю в степе lnResult = -1 И вот последние строки лога: ошибка видна - но хотелось бы поточнее читать и понимать каждую строчку! vfp9 868-f9c ENTER SQLSetStmtOption HSTMT 0x00B6AB08 UWORD 9 <SQL_ROWSET_SIZE> SQLPOINTER 1 vfp9 868-f9c EXIT SQLSetStmtOption with return code 0 (SQL_SUCCESS) HSTMT 0x00B6AB08 UWORD 9 <SQL_ROWSET_SIZE> SQLPOINTER 1 vfp9 868-f9c ENTER SQLExecDirect HSTMT 0x00B6AB08 UCHAR * 0x01E0DEA8 [ -3] "\ 0" SDWORD -3 vfp9 868-f9c EXIT SQLExecDirect with return code -1 (SQL_ERROR) HSTMT 0x00B6AB08 UCHAR * 0x01E0DEA8 [ -3] "\ 0" SDWORD -3 DIAG [S1000] [MySQL][ODBC 3.51 Driver][mysqld-5.1.48-community]Query was empty (1065) vfp9 868-f9c ENTER SQLErrorW HENV 0x00B6FF58 HDBC 0x00B6A828 HSTMT 0x00B6AB08 WCHAR * 0x0012DAC0 SDWORD * 0x0012DB08 WCHAR * 0x0012D6C0 SWORD 512 SWORD * 0x0012DB0C vfp9 868-f9c EXIT SQLErrorW with return code 0 (SQL_SUCCESS) HENV 0x00B6FF58 HDBC 0x00B6A828 HSTMT 0x00B6AB08 WCHAR * 0x0012DAC0 [ 5] "S1000" SDWORD * 0x0012DB08 (1065) WCHAR * 0x0012D6C0 [ 65] "[MySQL][ODBC 3.51 Driver][mysqld-5.1.48-community]Query was empty" SWORD 512 SWORD * 0x0012DB0C (65) vfp9 868-f9c ENTER SQLErrorW HENV 0x00B6FF58 HDBC 0x00B6A828 HSTMT 0x00B6AB08 WCHAR * 0x0012DAC0 SDWORD * 0x0012DB08 WCHAR * 0x0012D6C0 SWORD 512 SWORD * 0x0012DB0C vfp9 868-f9c EXIT SQLErrorW with return code 100 (SQL_NO_DATA_FOUND) HENV 0x00B6FF58 HDBC 0x00B6A828 HSTMT 0x00B6AB08 WCHAR * 0x0012DAC0 SDWORD * 0x0012DB08 WCHAR * 0x0012D6C0 SWORD 512 SWORD * 0x0012DB0C vfp9 868-f9c ENTER SQLCancel HSTMT 0x00B6AB08 vfp9 868-f9c EXIT SQLCancel with return code 0 (SQL_SUCCESS) HSTMT 0x00B6AB08 vfp9 868-f9c ENTER SQLCancel HSTMT 0x00B6AB08 vfp9 868-f9c EXIT SQLCancel with return code 0 (SQL_SUCCESS) HSTMT 0x00B6AB08 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 12:17 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CAQuery was emptyИщите, где у вас пустой запрос формируется... а впрочем, чего там искать, вот же он: VIVA_CAlnResult = SQLEXEC(m.gn_Soed,'') т.е. так пытаюсь дернуть следующую порциюМожет, уберёте '' и проверите снова? PS. Асинхронным режимом сам не пользовался, может, надо тот же запрос посылать, а не опускать его текст... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 13:00 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CAИ вот последние строки лога: ошибка видна - но хотелось бы поточнее читать и понимать каждую строчку! ХЗ чего эти строчки означают. Какой-то внутренний протокол ODBC. Все что я там понимаю - это запросы посылаемые серверу "select ...". Видно что посылается и сколько раз. Я тебе посмотреть предлагал в чем разница выполнения запроса разными способами. VIVA_CAВключил SQLSETPROP(handle, 'Asynchronous', .T.) На форме создал кнопку с такой командой: lnResult = SQLEXEC(m.gn_Soed,'') т.е. так пытаюсь дернуть следующую порцию Не уверен что это будет работать совместно с КА. У асинхронного режима другая логика: отправляется запрос и периодически проверяется пришел ли ответ, в это время можно какой-то другой код выполнять. В файле форма-тест. Я как-то разбирался с асинхронным режимом, но так и не нашел ему применения. Задаешь строку подключения к серверу, пишешь запрос и нажимаешь кнопку "выполнить". Весь код прописан в таймере. Как вариант после получения курсора прицепить его к КА через CursorAttach() ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 13:10 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
проверил --- AsyncSQL.zip - 2Kb) cкачать select top 100 * from ttt MySQL не понимает а вот так select * from ttt limit 100 - работает, но дальше не двигается ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 16:13 |
|
CA-медленно обновляется - помогите советом
|
|||
---|---|---|---|
#18+
VIVA_CAпроверил --- AsyncSQL.zip - 2Kb) cкачать select top 100 * from ttt MySQL не понимает а вот так select * from ttt limit 100 - работает, но дальше не двигается куда дальше? "limit 100" - первые 100 записей. все. надо все - убери "limit 100". у меня top 100 стояло чтоб сервер не насиловать пока пишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 16:24 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1583158]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 156ms |
0 / 0 |