Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.83 MB
Время: 0.059 c
6-1183968995
Рацелий
2007-07-09 12:16
2008.03.30
Проблемы с геттерами


6-1182924533
jailbrecker
2007-06-27 10:08
2008.03.30
Как осуществить синхронизацию времени через инет сервисы


15-1203380515
Base
2008-02-19 03:21
2008.03.30
А что если выложить архивы форума на какой-нибудь бесплатный


3-1194010850
Андрей Пл
2007-11-02 16:40
2008.03.30
FireBird нужна прога для визуальной работы!!!


2-1204113115
Прохожий 001
2008-02-27 14:51
2008.03.30
Как сделать так, чтобы при подключении firebird не вешал приложен





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский