Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

ADO   Найти похожие ветки 

 
DimOk   (2008-03-03 09:34) [0]

Доброго времени суток вам мастера. Скажите пожалуйсто как можно ускорить работу ADO. У меня ситуация следующая - таблица имеет около 20 тысяч записей, после того как я пишу ADOTable.Activate := True; сижу и смоотрю в монитор минут пять, при чем на достаточно хорошм железе.... Все настройки компонента по умолчанию, за исключением Connection


 
Сергей М. ©   (2008-03-03 09:44) [1]

Для начала откажись от TADOTable в пользу TADOQuery или TADODataSet.


> за исключением Connection


Покажи дословный текст строки коннекта


 
Sergey13 ©   (2008-03-03 09:45) [2]

> [0] DimOk   (03.03.08 09:34)
> Скажите пожалуйсто как можно ускорить работу ADO

Это винда глючит и/или железо слабое.
Еще вариант (редко встречается) - плохо написана программа, например используются неправильные приемы работы с БД.


 
DimOk   (2008-03-03 09:47) [3]


> Покажи дословный текст строки коннекта

Provider=VFPOLEDB.1;Data Source=D:\SAFE\BEST\BASE\FILINEW\SCLAD;Mode=Share Deny None;Extended Properties="";User ID="";Password="";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=MACHINE;DSN=""


 
Сергей М. ©   (2008-03-03 09:51) [4]


> DimOk   (03.03.08 09:47) [3]


Коннектом управляешь явно или неявно ?


 
DimOk   (2008-03-03 09:53) [5]


> Коннектом управляешь явно или неявно ?

Я не знаю, явно или нет, но строку подключения я собрал в визарде, а свойство Connected := True установленно в Object Inspector


 
Сергей М. ©   (2008-03-03 09:56) [6]


> DimOk   (03.03.08 09:53) [5]


Значит явно.

И собственно коннект (а не открытие таблицы) при этом происходит мгновенно ?


 
DimOk   (2008-03-03 09:59) [7]


> И собственно коннект (а не открытие таблицы) при этом происходит
> мгновенно ?

Да. А таблица "активизирутся" очень медленно


 
Сергей М. ©   (2008-03-03 10:01) [8]

DataSource-компонент при этом отключен от TADOTable ?


 
DimOk   (2008-03-03 10:03) [9]


> DataSource-компонент при этом отключен от TADOTable ?

Да, его нет вообще - потому что данные не выводятся пользователю...


 
Сергей М. ©   (2008-03-03 10:04) [10]

Приведи значения св-в
Filter, Filtered, IndexName ..


 
Kolan ©   (2008-03-03 10:05) [11]

Так а если через запрос(TADODataSet), ты проверил или нет?


 
DimOk   (2008-03-03 10:06) [12]


> Приведи значения св-в
> Filter, Filtered, IndexName ..

Object Inspector

Filter - пусто
Filtered - False
IndexName - пусто


 
Sergey13 ©   (2008-03-03 10:07) [13]

> [7] DimOk   (03.03.08 09:59)
> Да. А таблица "активизирутся" очень медленно

Подозреваю, что когда будет 40 тысяч записей будет еще медленнее. Переходи на АДОДатаСет и запросы.


 
Kolan ©   (2008-03-03 10:07) [14]

> Подозреваю, что когда будет 40 тысяч записей будет еще медленнее.

Лол, а мы все подозревали, что станет быстрее :)


 
DimOk   (2008-03-03 10:09) [15]


> Переходи на АДОДатаСет и запросы.

Та же песня.... Я уже пробовал, запрос мне не нужен т.к. надо заполднить контрол всеми значениями из одного поля одной таблицы.


 
Сергей М. ©   (2008-03-03 10:09) [16]


> DimOk   (03.03.08 10:06) [12]


Св-во Sort = ?


 
Сергей М. ©   (2008-03-03 10:11) [17]


> надо заполднить контрол всеми значениями из одного поля
> одной таблицы.


Абалдеть !

Ты что, хочешь заставить юзера любоваться десятками тысяч строк одновременнно ?

Да ты садист, батенька)


 
DimOk   (2008-03-03 10:13) [18]


> Да ты садист, батенька)

Да нет :) Это номенклатурый справочник, просто хотелось при формировании отчета конкретизировать его по выбранной позиции..... ну это уже другая песня.. :)


 
Сергей М. ©   (2008-03-03 10:13) [19]


> запрос мне не нужен


При условии


> всеми значениями из одного поля


как раз запрос тебе и нужен !
Причем он д.б. request live и unidirectional


 
DimOk   (2008-03-03 10:14) [20]


> Св-во Sort = ?

Незаданно


 
DimOk   (2008-03-03 10:14) [21]


> Св-во Sort = ?

Незаданно


 
Сергей М. ©   (2008-03-03 10:14) [22]


> Это номенклатурый справочник


Ну и нафига юзеру обозревать его весь, если его интересует десяток-другой записей, отобранных по некоему критерию ?


 
Сергей М. ©   (2008-03-03 10:16) [23]


> хотелось при формировании отчета конкретизировать его по
> выбранной позиции


Для выбора "позиции" существуеьт инкрементальный поиск, которыйЮ, в свою очередь, базируется на запросах.


 
DimOk   (2008-03-03 10:18) [24]


> Ну и нафига юзеру обозревать его весь, если его интересует
> десяток-другой записей, отобранных по некоему критерию ?
>

Возьмем 1С Предприятие. При формирования отчета пользователь может конкретизировать его по номеклатурной позиции и т.п.


 
Сергей М. ©   (2008-03-03 10:19) [25]


> конкретизировать его по выбранной позиции


А сортировать этот список ты как собрался ?
Он же несортированный у тебя !

Ты что же, хочешь заставить юзера искать в этой двадчатитысячной солянке интересующую его строку ? Тогда ты точно садист)


 
DimOk   (2008-03-03 10:20) [26]


> Для выбора "позиции" существуеьт инкрементальный поиск,
> которыйЮ, в свою очередь, базируется на запросах.

У меня не только же позиция выбирается. И запросы есть. Но результат один и тот же - правильный, но очень "медленный".


 
Kolan ©   (2008-03-03 10:21) [27]

> И запросы есть.

Показывай запрос.


 
Сергей М. ©   (2008-03-03 10:21) [28]


> Возьмем 1С Предприятие


Давай возьмем.

И копнув глубже увидим, что там для этой цели используется аналог дельфийского DBComboBox"a, коим у тебя и не пахнет, судя по тобой вышеизложенному.


 
DimOk   (2008-03-03 10:22) [29]


> Ты что же, хочешь заставить юзера искать в этой двадчатитысячной
> солянке интересующую его строку ? Тогда ты точно садист)

Это поможет мне в данной ситуации..... О том удобно или нет речи же не идет...:)


 
Сергей М. ©   (2008-03-03 10:23) [30]


> У меня не только же позиция выбирается


А неважно.

Инкр.поиск на то и придуман, чтобы избавить юзера от необходимости шариться по спискам бешеных размеров.


 
DimOk   (2008-03-03 10:24) [31]


> Показывай запрос.

Запрос достаточно примитивный...
select nnum.mlabel, name.mlabel, kolpost.mkart from mlabel mkart where nnum.mlabel = nnum.mkart


 
Kolan ©   (2008-03-03 10:25) [32]

> Это поможет мне в данной ситуации&#133 О том удобно или
> нет речи же не идет&#133:)

Тебе говорят, что если пльзователь хочет найти вермешель, то и надо делать:
SELECT * FROM <Table>
WHERE FoodType = "вермешель";

а не давать ему все продукты сразу&#133

Переделай сабж с пом запроса, и доложи о результатах(незабудь показать сам запрос).


 
Сергей М. ©   (2008-03-03 10:25) [33]


> том удобно или нет речи же не идет


Ну что ж .. смотри, кума, тебе жить)

Но почему не использован DBLookup/ComboBox - вот это совершенно непонятно и ничем не оправдано.


 
DimOk   (2008-03-03 10:26) [34]


> дельфийского DBComboBox"

С этим компонентом у меня работать не получилось, и я прибег к обычному ComboBoxу


 
Kolan ©   (2008-03-03 10:27) [35]

> select nnum.mlabel, name.mlabel, kolpost.mkart from mlabel
> mkart where nnum.mlabel = nnum.mkart

О, а тут джоин. Как же ты его с пом TADOTAble делал?


 
Сергей М. ©   (2008-03-03 10:28) [36]


> where nnum.mlabel = nnum.mkart


А говоришь нет фильтрации)

Вот тебе и засада !
Индекса-то по полю nnum.mlabel нет и в помине)


 
DimOk   (2008-03-03 10:28) [37]


> Kolan ©   (03.03.08 10:25) [32]

Я не совсем понял вопроса, этот запрос не для поиска информации, а для создания конкретой выборки


 
Kolan ©   (2008-03-03 10:28) [38]

> С этим компонентом у меня работать не получилось, и я прибег
> к обычному ComboBoxу

От тут видимо и тормоза, все дело в долгм выводе в ComboBox&#133


 
Сергей М. ©   (2008-03-03 10:29) [39]


> Как же ты его с пом TADOTAble делал?


Да, оч интересно было бы послушать на эту тему нач-ка транспортного цеха) ..


 
Kolan ©   (2008-03-03 10:29) [40]

> а для создания конкретой выборки

Так вот эту конкретную выборку хорошобы сокращать до минимума&#133 Проблемма конечно именнов отсутствии индекстов или прорисовке на комбобоксе&#133


 
DimOk   (2008-03-03 10:30) [41]


> [36]
Поиск элементов у меня не реализован, т.к. на данный момент мне хотелось бы разобраться со скоростью Activate


 
Сергей М. ©   (2008-03-03 10:30) [42]


> все дело в долгм выводе в ComboBox


Тогда, получается, автор нагло обманывает общественность, утверждая что


> пишу ADOTable.Activate := True; сижу и смоотрю в монитор
> минут пять


 
Kolan ©   (2008-03-03 10:32) [43]

> Поиск элементов у меня не реализован

Что ты путаешь нас?

Была TAdoTable так?
Замени теперь её на TADODataSet и расскажи что получилось + сам запрос покажи&#133


 
Сергей М. ©   (2008-03-03 10:33) [44]


> DimOk   (03.03.08 10:30) [41]


Разберешься, не волнуйся)

Но для этого ты должен сначала разобраться, каким образом ты умудрился обойтись одним компонентом TADOTable для получения данных аж из целых 3-х таблиц одновременно)


 
DimOk   (2008-03-03 10:33) [45]


> Проблемма конечно именнов отсутствии индекстов или прорисовке
> на комбобоксе…

Проблемма в следующем, если в FormCreate вставить (Таблица/Запрос).Activate := True; Форма не открывается минуты 1,5-2. Если даже в режиме дизайна, попытаться в Object Inspector св-во Activate установить в True - то же самое, среда виснет и долго что то там делает....


 
Сергей М. ©   (2008-03-03 10:34) [46]


> Проблемма в следующем


Это не проблема, а ее видимые последствия


 
Kolan ©   (2008-03-03 10:35) [47]

За две минуты 20000 тыщ строк &#151; тут что-то не так &#151; это точно&#133
Может это чудеса фокс про? я им не пользовался никогда&#133


 
Kolan ©   (2008-03-03 10:36) [48]

А может это все по сети тащиться?


 
Сергей М. ©   (2008-03-03 10:36) [49]


> Может это чудеса фокс про?


Если индексы не задействованы, то крайне маловероятно.


 
DimOk   (2008-03-03 10:36) [50]


> Разберешься, не волнуйся)
>
> Но для этого ты должен сначала разобраться, каким образом
> ты умудрился обойтись одним компонентом TADOTable для получения
> данных аж из целых 3-х таблиц одновременно)

Там используется одна таблица. На вапрос показать запрос я его показал из другого компонента ADOQuery.... Вот и все.... Просто у меня запрос используется там где надо вывести сводную информацию, а не занчения конкретной таблицы...


 
Kolan ©   (2008-03-03 10:38) [51]

> На вапрос показать запрос я его показал из другого компонента
> ADOQuery

Та понимаешь, что запрос с JOIN никак не получить с помошбю TTable&#133 Так что ты что-то недоговариваешь.


 
DimOk   (2008-03-03 10:39) [52]


> А может это все по сети тащиться?

Нет.


 
DimOk   (2008-03-03 10:41) [53]


> Та понимаешь, что запрос с JOIN никак не получить с помошбю
> TTable…

Перечисляю компоненты TADOConnection, TADOQuery, TADOTAble - все, больше компонентов для работы с БД у меня не используется.....


 
Kolan ©   (2008-03-03 10:41) [54]

Есть предложение &#151; сделай тестовый проект.
1. Создаешь проект.
2. Кидаешь ADOConnection и настраиваешь
3. Кидаешь DataSource и TDBGrid
4. Кидаешь TADOTable.
5. Все настраиваешь.
6. Проверяешь &#151; тормозит&#133

7. удаляешь TADOTable кладешь TADODataSet.
8. Проверяешь&#133


 
Kolan ©   (2008-03-03 10:41) [55]

> TADOTAble &#151; все, больше

Убери совсем этот компонент замени на запрос&#133


 
Сергей М. ©   (2008-03-03 10:42) [56]


> Там используется одна таблица


Вот и накатай соответствующий  запрос этой одной таблице и запусти его с пом. TADOTable или TADODataSet, поделись результатами его открытия, тогда и разговор будет предметный


 
Kolan ©   (2008-03-03 10:43) [57]

> пом. TADOTable или TADODataSet

Имхо Сергей описался, он имел ввиду TADOQuery.


 
Сергей М. ©   (2008-03-03 10:43) [58]


> его с пом. TADOTable или TADODataSet


с пом. TADOQuery или TADODataSet


 
DimOk   (2008-03-03 10:44) [59]


> Убери совсем этот компонент замени на запрос…

Убрал... Написал select * from mlabel и тоже самое...


 
Сергей М. ©   (2008-03-03 10:46) [60]


> D:\SAFE\BEST\BASE\FILINEW\SCLAD


Это путь к локальному ресурсу ?


 
DimOk   (2008-03-03 10:47) [61]

ADODataSet с ним стало побыстрее, но все равно секунд 20 проходит....


 
DimOk   (2008-03-03 10:47) [62]


> Это путь к локальному ресурсу ?

Да, диск D: несетевой


 
sniknik ©   (2008-03-03 10:48) [63]

> Может это чудеса фокс про?
врядли, это скорее "чудеса" реализации...

для примера, на довольно таки слабой сейчас машине (пень 3000, 1 гиг памяти)
полный запрос SELECT * FROM sales
с коннектом
Provider=VFPOLEDB.1;Data Source=D:\;Password="";Collating Sequence=MACHINE
выполняется 17 сек. и возвращает 315883 записей (сколько есть в базе взятой для примера)
"ширина" записи - 20 полей, из них 12 VarChar(32), остальные - даты, числа, деньги (т.е. ничего "массивного").


 
Kolan ©   (2008-03-03 10:48) [64]

> и тоже самое

Вариант, который решает не проблемму а последствия.

Так, как пользователю твои 20 тыщ все равно не нужны, ты сначала спроси его что он хочет конкретнно, а потом делалай
select * from mlabel where &#133
Так ты значительно сократиш выборку.


 
Kolan ©   (2008-03-03 10:50) [65]

> врядли, это скорее &laquo;чудеса&raquo; реализации&#133

Автор, сделай ка тестовый проект как в [54].


 
DimOk   (2008-03-03 10:52) [66]


> для примера, на довольно таки слабой сейчас машине (пень
> 3000, 1 гиг памяти)

Эсли у вас в офисе такая машина считается слабой......


> Вариант, который решает не проблемму а последствия.

Хорошо, подскажите тогда что  за причина этих последствий... :)


 
Сергей М. ©   (2008-03-03 10:53) [67]


> все равно секунд 20 проходит


Есть стойкое подозрение, что у автора где-то после открытия происходит перемещение к последней записи в неиндексированном НД.

Подобные "чудеса" при этом вполне объяснимы и ожидаемы.


 
Kolan ©   (2008-03-03 10:53) [68]

> Эсли у вас в офисе такая машина считается слабой&#133

А у тебя какая машина?


> Хорошо, подскажите тогда что  за причина этих последствий&#133
> :)

Причину и пытаемся понять, для чистоты эксперимента сделай новый проект, бо мало ли что там у тебя в рабочем еще делается&#133


 
Сергей М. ©   (2008-03-03 10:54) [69]


> причина этих последствий


Ты пока ни словом не обмолвился о существовании и использованиии индексов по интересующему полю.


 
Kolan ©   (2008-03-03 10:54) [70]

> Ты пока ни словом не обмолвился о существовании и использованиии
> индексов по интересующему полю.

Дак он же select * делает&#133


 
Сергей М. ©   (2008-03-03 10:56) [71]


> Дак он же select * делает


Мало ли чего он еще делает (или не делает), но об этом не договаривает)


 
DimOk   (2008-03-03 10:58) [72]


> Автор, сделай ка тестовый проект как в [54].

Сделал... Медленно и так и сяк, до секунд не сравнивал но помоему одинаково медленно :(


 
ЮЮ ©   (2008-03-03 11:00) [73]

> Запрос достаточно примитивный...
> select nnum.mlabel, name.mlabel, kolpost.mkart from mlabel
> mkart where nnum.mlabel = nnum.mkart


Такой запрос не должен работать ни на одном движке из-за ошибок в синтаксисе


 
Kolan ©   (2008-03-03 11:03) [74]

> Сделал&#133 Медленно

Чудеса, мож и впрям железо хилое?


 
DimOk   (2008-03-03 11:06) [75]

БД старая FoxBase в таблице mlabel 4 поля с типом memo может из за этого...? Хотя в фоксе кидаешь грид на форму, устанавливаешь ему в качестве источника данных эту таблици и.. вуаля, грид заполняется практически мнгновенно....


 
DimOk   (2008-03-03 11:09) [76]


> Такой запрос не должен работать ни на одном движке из-за
> ошибок в синтаксисе

Мог и ошибиться я не копировал а набирал руками, имена таблиц спереди пишутся, но все понял о че реч... :)


 
Сергей М. ©   (2008-03-03 11:13) [77]


> DimOk   (03.03.08 11:06) [75]


Версия модуля сервера vfpoledb.dll у тебя какая ?


 
DimOk   (2008-03-03 11:16) [78]


> Версия модуля сервера vfpoledb.dll у тебя какая ?

Помоему 9 я его с Microsoft скачивал, последнюю, и Fox 9 у меня на машине стоит.


 
Сергей М. ©   (2008-03-03 11:24) [79]

9.0.0.3504 - это у меня.

Никаких тормозов не наблюдаю даже в условиях доступа к сетевым шаровым FP2.5-таблицам гораздо большего размера.


> Fox 9 у меня на машине стоит


Сам Фокс, если не ошибаюсь, ОлейДиБи-механизм не использует.

Попробуй для сравнения получить доступ к таблице через odbc-драйвер


 
DimOk   (2008-03-03 11:26) [80]


> Попробуй для сравнения получить доступ к таблице через odbc-
> драйвер

Пробовал, но после при активате := труе пишет. Ошибка поставщика данных!


 
Сергей М. ©   (2008-03-03 11:28) [81]

Можно еще для сравнения попробовать доступ прямо из MS Access (через Jet3.5 + FoxPro ISAM или через Jet4.0 + VFP ODBC)


 
Сергей М. ©   (2008-03-03 11:29) [82]


> Ошибка поставщика данных


А он у тебя установлен в системе, VFP ODBC - провайдер ?


 
DimOk   (2008-03-03 11:29) [83]


> [81]

Хорошо сейчас попробую, но какой мне следует пото сделать вывод?


 
Сергей М. ©   (2008-03-03 11:31) [84]

Если при том же самом провайдере в чужом приложении доступ к таблице быстрый, а в твоем медленный, значит ты что-то недоговариваешь)


 
DimOk   (2008-03-03 11:33) [85]


> Если при том же самом провайдере в чужом приложении доступ
> к таблице быстрый, а в твоем медленный, значит ты что-то
> недоговариваешь)

Понятно. Ноя все как есть выложил... :)


 
Сергей М. ©   (2008-03-03 11:33) [86]


> какой мне следует пото сделать вывод


А пока вывод один - собственно АДО тут абсолютно ни причем.


 
Kolan ©   (2008-03-03 11:40) [87]

Может грид нестандартный? а без грида тоже самое?
А с этим фокс прое есть где скрипт запустить? Там быстро?


 
DimOk   (2008-03-03 11:40) [88]

Access вообще не подключается. В Delphi при использовании ODBC если я выбираю поставщика Visual FoxPro Tables выдает ошибку инициализации поставщика....


 
Сергей М. ©   (2008-03-03 11:42) [89]


> Access вообще не подключается


Через что не подключается ? Вариантов-то минимум два, в зависимости от конкретного семейства/версии MS Access..


 
DimOk   (2008-03-03 11:43) [90]


> Может грид нестандартный? а без грида тоже самое?
> А с этим фокс прое есть где скрипт запустить? Там быстро?
>

Пока я только пытаюсь сделать  ADODataSet1.Activate := True; только что бы побыстрее. В Фоксе все быстро работает.


 
Сергей М. ©   (2008-03-03 11:45) [91]


> DimOk   (03.03.08 11:43) [90]


А как насчет доступа через БДЕ ? Пробовал ? Такие же пироги или картина иная ?


 
DimOk   (2008-03-03 11:47) [92]

Через БДЕ - пробовал, все впорядке, все быстро.


 
Сергей М. ©   (2008-03-03 11:50) [93]

остается попробовать через связку ADO+ODBC или Jet+ODBC


 
DimOk   (2008-03-03 11:52) [94]


> остается попробовать через связку ADO+ODBC или Jet+ODBC

Я в этих делах не очень, можно немножко расшифровать? :)


 
DimOk   (2008-03-03 11:55) [95]


> Jet+ODBC

Как мне указать в строке подключения Extendet Driver или что то еще я уже и непомню.... :(


 
DimOk   (2008-03-03 11:59) [96]


> Extendet Driver

Вернее Extendet Provider=


 
Сергей М. ©   (2008-03-03 12:02) [97]

ODBC - это
http://www.google.ru/search?complete=1&hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla:ru:official&hs=Lml&defl=ru&q=define:ODBC&sa=X&oi=glossary_defi nition&ct=title

Не вдаваясь в подробности, для тебя это выглядит как "поставщик данных" или "источник данных".

Соотв. драйвер ODBC должен быть утановлен в системе.

В строке ADO-коннекта ты должен указать, что ты используешь именно odbc-, а не oledb-поставщика данных.

Равно как и при импорте/привязке внешних таблиц в MS Access-базе ты можешь указать, что источником данных является такой-то конкретный odbc-движок.

Только MS Access подключается к odbc-движку через "родной" для него Jet, а не через ADO.


 
Palladin ©   (2008-03-03 12:04) [98]

выставь парметры

q.CursorLocation:=clUseServer;
q.CursorType:=ctOpenForwardOnly;
q.LockType:=ltReadOnly;


 
Palladin ©   (2008-03-03 12:05) [99]


> остается попробовать через связку ADO+ODBC или Jet+ODBC

лучше не надо, в случае существования OLEDB провайдера


 
sniknik ©   (2008-03-03 12:09) [100]

> Хотя в фоксе кидаешь грид на форму, устанавливаешь ему в качестве источника данных эту таблици и.. вуаля,
> грид заполняется практически мнгновенно....
сравнил. там же не делается выборки всей таблицы предварительно, там она просто открывается как файл и отображаются(читаются) только несколько первых строк по числу показанных в гриде.

реализация в общем там не твоя... уже сделано все за тебя.


 
DimOk   (2008-03-03 12:11) [101]


> выставь парметры
>
> q.CursorLocation:=clUseServer;
> q.CursorType:=ctOpenForwardOnly;
> q.LockType:=ltReadOnly;

Всеравно медленно.... :(


 
DimOk   (2008-03-03 12:14) [102]


> > выставь парметры
> >
> > q.CursorLocation:=clUseServer;
> > q.CursorType:=ctOpenForwardOnly;
> > q.LockType:=ltReadOnly;
>
> Всеравно медленно.... :(

И выдает ошибку Dataset does not support bookmarks, with are required for multi-record data controls


 
Palladin ©   (2008-03-03 12:14) [103]

смотри
> sniknik ©   (03.03.08 12:09) [100]

про выборку всей таблицы


 
DimOk   (2008-03-03 12:19) [104]


> сравнил. там же не делается выборки всей таблицы предварительно,
>  там она просто открывается как файл и отображаются(читаются)
> только несколько первых строк по числу показанных в гриде.
>

И что при запуске формы на гриде отображается тлько количество строк которое в него вмещается...? :)


 
Сергей М. ©   (2008-03-03 12:23) [105]


> Palladin ©   (03.03.08 12:05) [99]


Я просто полностью не исключаю "кривизну" имеющегося у автора oledb-провайдера.. Или "кривизну" его инсталляции.

А MSAccess позволит подключиться к фоксовым таблицам иным маршрутом - через OLEDB for ODBC + VFP ODBC .. хотя бы для исключения подозрения на "кривизну"


 
Сергей М. ©   (2008-03-03 12:28) [106]

Вот строка подключения для связки ADO -> OLEDB for ODBC -> VFP ODBC:

Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Visual FoxPro Database;UID=;SourceDB=g:\DBASES\SOME_VFPDB_DIR;SourceType=DBF;Exclusive=No;Back groundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"

p.s. Флаг ShareDenyNone убрать нафих !


 
Palladin ©   (2008-03-03 12:29) [107]


> Сергей М. ©   (03.03.08 12:23) [105]

угу... согласен...


 
DimOk   (2008-03-03 12:36) [108]


> Provider=MSDASQL.1;Persist Security Info=False;Extended
> Properties="DSN=Visual FoxPro Database;UID=;SourceDB=g:\DBASES\SOME_VFPDB_DIR;
> SourceType=DBF;Exclusive=No;Back groundFetch=Yes;Collate=Machine;
> Null=Yes;Deleted=Yes;"


Еще хуже.... среда повисла..... :(


 
Сергей М. ©   (2008-03-03 12:40) [109]


> DimOk   (03.03.08 12:36) [108]
>
>


Я так и не понял. у тебя vfp odbc установлен или нет ?


 
DimOk   (2008-03-03 12:42) [110]


> Я так и не понял. у тебя vfp odbc установлен или нет ?

Да. Но когда я в ODBC выбираую поставщика Microsoft Visual FoxPro Table , то вылетает ошибка инициализации поставщика :(


 
sniknik ©   (2008-03-03 12:43) [111]

>  Еще хуже.... среда повисла..... :(
а DSN "Visual FoxPro Database" у тебя есть? чтобы к нему подключаться...

а вообще, все это как как мертвому припарки... настройками не поможешь, реализацию/логику менять надо.


 
DimOk   (2008-03-03 12:44) [112]


> DSN "Visual FoxPro Database"

В данном случа Table а не Database


 
Сергей М. ©   (2008-03-03 12:45) [113]


> В данном случа Table а не Database
>


по барабану.

И так и эдак должнго работать


 
sniknik ©   (2008-03-03 12:50) [114]

> В данном случа Table а не Database
нет. в данном случае как раз таки Database, т.к. реплика была к
DimOk   (03.03.08 12:36) [108]
...
> Еще хуже.... среда повисла..... :(
а там указано в подключении вовсе не Table.


 
DimOk   (2008-03-03 12:52) [115]

Наверное у меня драйвер не правильно работает.... Сейчас опять пустой проект создали попробовал через ODBC Ошибка SQLSetConnectAttr драйвера.


 
Kolan ©   (2008-03-03 12:54) [116]

А ты параметры в диалоге выбираешь?


 
DimOk   (2008-03-03 12:56) [117]


> А ты параметры в диалоге выбираешь?

Нет, только прописываю путь и имя источника данных


 
Kolan ©   (2008-03-03 12:58) [118]

> Нет, только прописываю путь и имя источника данных

А ты дважды на TADOConnection кликни и построй эту строку с пом диалога.


 
DimOk   (2008-03-03 13:02) [119]


> А ты дважды на TADOConnection кликни и построй эту строку
> с пом диалога.

Я так и делаю..... Если я выбираю в качестве поставщика Microsoft OLE DB Provider for Visual FoxPro то все работает но очень медленно, если я выбираю ODBC и на вкладке подключение выбираю имя источника данных Visual FoxPro Database/Tablset и устанавливаю начальный каталог D:\safe\best\base\filinew\sclad жму тест - ошибка.


 
DimOk   (2008-03-03 13:03) [120]


> Tablset

Tables - опечатка


 
Palladin ©   (2008-03-03 13:05) [121]

что можно посоветовать... распрощатся нафик с этим монстром...


 
Сергей М. ©   (2008-03-03 13:11) [122]

Флаг ShareDenyNone снял ?
Сними вообще все флаги ...


 
Сергей М. ©   (2008-03-03 13:26) [123]

А что такого удивительного может храниться в таблице, если все ее поля типа мемо ? Вот что еще любопытно ..


 
sniknik ©   (2008-03-03 13:27) [124]

> если я выбираю ODBC и на вкладке подключение выбираю имя источника данных Visual FoxPro Database/Tablset
настрой провайдера в самом DSN ODBC, если он у тебя вообще есть (ODBC и OLEDB для VFP это разные провайдеры, ставятся раздельно, и в новую винду не включаются. (раньше ODBC включался))


 
sniknik ©   (2008-03-03 13:35) [125]

> что можно посоветовать... распрощатся нафик с этим монстром...
ага. любого с управлением чего не справился считать монстром, и распрощаться нафик...
а когда все кончится? %) что делать? ;)


 
DimOk   (2008-03-03 14:07) [126]


> если все ее поля типа мемо ? Вот что еще любопытно ..

Только 4 [75]


 
Kolan ©   (2008-03-03 14:12) [127]

> Только 4 [75]

Это значит что всего их 75?


 
DimOk   (2008-03-03 14:15) [128]


> Это значит что всего их 75?

4 из 26


 
Сергей М. ©   (2008-03-03 14:15) [129]


> Только 4


Хотя бы одно из них тебя в выборке интересует ?
Если нет, то зачем эти поля у тебя участвуют в выборке ?


 
DimOk   (2008-03-03 14:20) [130]


> Хотя бы одно из них тебя в выборке интересует ?
> Если нет, то зачем эти поля у тебя участвуют в выборке ?
>

Это было сказанно когда я пытался работать с ADOTable, сейчас исправился использую ADODataSet c select field1, field2,...... fieldn from table, но результат тот же.


 
Kolan ©   (2008-03-03 14:22) [131]

> select field1, field2,&#133 fieldn from table, но результат
> тот же

Предлагается сократить список этиф филдов до нужного.


 
Сергей М. ©   (2008-03-03 14:23) [132]

Действительно, нафига тебе куча филдов в запросе, если тебя интересует всего одно поле для заполнения твоего комбобокса значениями этого поля ?


 
DimOk   (2008-03-03 14:25) [133]


> Предлагается сократить список этиф филдов до нужного.

Вроде получается.... всем спасибо


 
Kolan ©   (2008-03-03 14:25) [134]

20 сек &#151; может это и есть объективная скорость выборки на твоем железе. В QueryAnalyzer"e (как там для фокса аналог называется) выполнить надо запрос, и посмотреть.


 
Kolan ©   (2008-03-03 14:26) [135]

> Вроде получается&#133 всем спасибо

Что получается? Ты сокращаеь список и у тебя это получается?


 
DimOk   (2008-03-03 14:30) [136]


> Что получается? Ты сокращаеь список и у тебя это получается?

Да, в запросе выбрал только два конкретных поля и он стал выполняться около 4-ех секунд


 
Сергей М. ©   (2008-03-03 14:37) [137]


> два конкретных поля


Включая как минимум одно мемо-поле ?


 
DimOk   (2008-03-03 14:40) [138]


> Включая как минимум одно мемо-поле ?

Нет, только типа char и double :)


 
Сергей М. ©   (2008-03-03 14:45) [139]

И результат в <= 4 сек - это с учетом [98] или без ?


 
DimOk   (2008-03-03 14:47) [140]


> И результат в <= 4 сек - это с учетом [98] или без ?

Без.


 
DimOk   (2008-03-03 14:48) [141]


> И результат в <= 4 сек - это с учетом [98] или без ?

А с этим еще быстрее !!!! :)


 
Сергей М. ©   (2008-03-03 14:49) [142]

Ну а с учетом этого еще минимум в 2 раза быстрей будет.


 
Kolan ©   (2008-03-03 14:51) [143]

+ еще сразу количество уменьшить до того, как показываешь и будет нормально.


 
Сергей М. ©   (2008-03-03 14:53) [144]


> DimOk


Похоже, что из-за бестолкового привлечения тобой в запросе мемо-полей львиная доля времени уходила на вынужденное открытие файлов с мемо-данными и позиционирование в них. Чего сам Фокс по умолчанию, естественно, не делал в таких же условиях.


 
DimOk   (2008-03-03 14:55) [145]


> Похоже, что из-за бестолкового привлечения тобой в запросе
> мемо-полей львиная доля времени уходила на вынужденное открытие
> файлов с мемо-данными и позиционирование в них. Чего сам
> Фокс по умолчанию, естественно, не делал в таких же условиях.
>

Я не профи но думаю так же и полностья с вами согласен. Всем еще раз большое спасибо! :)


 
Сергей М. ©   (2008-03-03 14:56) [146]


> А с этим еще быстрее


А если еще async fetch прикрутить, то вообще со свистом пролетать будет)


 
DimOk   (2008-03-03 14:58) [147]


> async fetch

А это что за зверь такой.....?


 
Сергей М. ©   (2008-03-03 15:00) [148]

См. TADOTable.ExecuteOptions


 
DimOk   (2008-03-03 15:05) [149]


> См. TADOTable.ExecuteOptions

Cool! Вообще летает :)


 
Сергей М. ©   (2008-03-03 15:06) [150]


> что за зверь такой


Впрочем для твоей задачи этот "пролет со свистом" будет скорей более вреден, чем полезен - тебе ж надо предоставить юзеру твои 20 тыс. записей сразу, а не "частями" по мере их загрузки.


 
DimOk   (2008-03-03 15:09) [151]


> Впрочем для твоей задачи этот "пролет со свистом" будет
> скорей более вреден, чем полезен - тебе ж надо предоставить
> юзеру твои 20 тыс. записей сразу, а не "частями" по мере
> их загрузки.

Вообще то да, но и 2-4 секунды можно подождать ..... :)


 
Сергей М. ©   (2008-03-03 15:23) [152]

Чудненько)

Осталась самая "малость" - [25]...


 
DimOk   (2008-03-03 15:27) [153]


> Осталась самая "малость" - [25]...

Ну это я думаю у меня трудносте не вызовет, т.к. результаты запросов уже приходилось сортировать, да и в справке написанно про это понятней уже не куда. Но.......... если что начну новуу тему, как сортировать выборку из таблицы имеющую одну колонку..... :))


 
Сергей М. ©   (2008-03-03 15:34) [154]


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


Нафига сортировать результат, если можно получить уже сортированную выборку ?

см.
SELECT SomeField OREDR BY SomeField

На сравнительно больших НД существующий индекс по полю SomeField по результирующей скорости выполнения запроса наверняка обставит любой изощренный алгоритм сортировки на стороне клиента.


 
DimOk   (2008-03-03 15:38) [155]


> см.
> SELECT SomeField OREDR BY SomeField

Большое спасибо за подсказку! Буду пробовать все это воплощать в жизнь....:)


 
Anatoly Podgoretsky ©   (2008-03-03 18:49) [156]

> DimOk  (03.03.2008 11:09:16)  [76]

А нафига нам обсуждать один нереальный запрос, а у тебя совсем другой крутится.
Приведеный запрос никогда не сможет исполниться.



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.86 MB
Время: 0.033 c
6-1183981829
tytus
2007-07-09 15:50
2008.03.30
Неправельный IP через шлюз.


2-1204457589
<code>
2008-03-02 14:33
2008.03.30
Подскажите как рисовать на форме без мерцания?


15-1203380076
Base
2008-02-19 03:14
2008.03.30
Как убрать у TPageControl бордюр?


3-1194797551
soj
2007-11-11 19:12
2008.03.30
Проблема с не целыми числами


3-1194447563
Still Swamp
2007-11-07 17:59
2008.03.30
Вопрос по отправке сообщений SendMessage