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

Вниз

Вопрос по набору данных в ADOTable   Найти похожие ветки 

 
KyRo   (2006-07-20 18:09) [0]

Как сделать что бы когда переводиш ADOTable.active в  True он не подтягивал из базы все данные из таблицы потому что на это время программа получается залипает.
Подскажите как сделать что бы он вообще не подтягивал
записи  или хотя бы чтоб подтягивал последних например пару тысяч .


 
Desdechado ©   (2006-07-20 18:16) [1]

Посмотреть параметры компонентов.
И не использовать ADOTable.

> последних например пару тысяч
Отсортировать в обратном порядке и брать первые пару тысяч или сформулировать условие в ADOCommand.


 
KyRo   (2006-07-20 19:04) [2]

В том  то и дело что я через ADOTable.
просто добавляю записи в базу мне не надо просматривать данные. Переделывать мне как то не хочетса потому что придется переписывать довольно не малый кусок кода.
Кроме как поменять компонент на другой не как нельзя решить эту проблему?


 
Ega23 ©   (2006-07-20 19:12) [3]


> Кроме как поменять компонент на другой не как нельзя решить
> эту проблему?


Никак.


 
Anatoly Podgoretsky ©   (2006-07-20 20:05) [4]

KyRo   (20.07.06 19:04) [2]
Тем более, не нужен ADOTable - это все таки двухнаправленный компонент.


 
sniknik ©   (2006-07-20 20:24) [5]

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

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

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


 
Slym ©   (2006-07-21 05:18) [6]

sniknik ©   (20.07.06 20:24) [5]
с невыполняющимся условием

:) я также делаю когда ident вернуть нуна...
SELECT * FROM table WHERE false;
вернет 0 записей, но добавляемые будут видны и соответственно будут видны генерируемые значения полей.


 
sniknik ©   (2006-07-21 08:46) [7]

Slym ©   (21.07.06 05:18) [6]
сам по себе способ с условием имеет право на жизнь... (хотя если надо только identity вернуть то тут наверное лучше делать запрос из двух команд, инсерт и селект идентити, от конкретики зададач конечно зависит, может и не лучше)
изврат в том что придется запрос пихать в ADOTable... а он вообщето не для этого.
(о том для чего он можно спорить, борландом для него вкладывался такой призрачный смысл как "для облегчения перехода" с BDE в основном (и еще 2 компанента)... но по-моему ничего ини не облегчают, только путают, и мешают когда оказывается, что старые стереотипы не срабатывают на более новых технологиях)


 
Stanislav ©   (2006-07-21 09:44) [8]

Можно заменить AdoTable на ADOQuery, а имя дать ему, то которое было у таблицы. Не думаю что переделывать придется много.


 
KyRo   (2006-07-21 11:36) [9]


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


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


 
Desdechado ©   (2006-07-21 11:38) [10]

> переделывать  придется строк так 800
ха-ха 3 раза
на час-два работы


 
Stanislav ©   (2006-07-21 11:45) [11]

KyRo   (21.07.06 11:36) [9]
Не пойму что можно там переделывать?
Наоборот (с ADOCOmmand или ADOQuery на ADOTable) я бы еще понял.

Desdechado ©   (21.07.06 11:38) [10]
Думаю на 0,5-1ч :-).


 
sniknik ©   (2006-07-21 12:08) [12]

описываеш тип
type
 TMyADOTable = class(TADOTable);

и вместо ADOTable1.Open; пишеш

 ADOTable1.TableName:= "SELECT * FROM "+ADOTable1.TableName+" WHERE 1=2";
 with TMyADOTable(ADOTable1) do begin
   CommandType:= cmdText;
   Open;
 end;


понятно, что если писать в имя сразу запрос то переприсвавать его будет не надо, а если  CommandType заранее поставить в cmdText то и этого не надо будет делать (возможно... может меняется гдето по ходу. проверь), тогда сработает и стандартный Open.

но поменять компанент на ADODataSet всетаки лучше (да и не сложно совсем, 800 строк переписывать не придется, только одну практически, просто имя оставь ADOTable1 а тип ему поменяй...)


 
KyRo   (2006-07-21 14:06) [13]


> но поменять компанент на ADODataSet всетаки лучше (да и
> не сложно совсем, 800 строк переписывать не придется, только
> одну практически, просто имя оставь ADOTable1 а тип ему
> поменяй...)

Тогда вопрос я смогу через тот же ADOCOmmand добовлять строки в формате
Inco_Table.Insert;
Inco_Table.FieldByName("ID_ATM_NAME").Value:=ATM_Name_Id;
Inco_Table.FieldByName("TRANS_INFO").Value:=Trans[2];
Inco_Table.post;
?
Или там надо на SQL Писать Insert (итд.) ?


 
Stanislav ©   (2006-07-21 14:10) [14]

Используй TADOQuery


 
KyRo   (2006-07-21 14:14) [15]


> Используй TADOQuery

Почему именно TADOQuery ?


 
Stanislav ©   (2006-07-21 14:17) [16]

Там все методы как у TADOTable, единственное что ты можешь написать SQL на выборку т.е. вместо имени таблицы пишешь SELECT * FROM MYTABLE WHERE...
А Insert, Edit,POst все есть, как и у ADOTable


 
KyRo   (2006-07-21 14:19) [17]

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


 
sniknik ©   (2006-07-21 15:33) [18]

> Почему именно TADOQuery ?
потому что после ADOTable и он тебе сказкой покажется...

а вообще, родные для ADO, это  ADOConnection, ADOCOmmand, ADODataSet, RDCConnection их и надо использовать при необходимости, все остальное в корзину однозначно.


 
KyRo   (2006-07-21 16:40) [19]

Все переделал TADOQuery  подошол вроде все отлично . Всем спасибо.



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

Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.048 c
1-1155311553
ph0sgen
2006-08-11 19:52
2006.09.24
DLL без SysInit.pas и System.pas


2-1157463917
VEZ
2006-09-05 17:45
2006.09.24
Ссылка не обнуляется.


10-1123433445
Nick Denry
2005-08-07 20:50
2006.09.24
Все тот же ActiveX....


1-1155112767
5serg
2006-08-09 12:39
2006.09.24
Как редактировать реестр из под пользователя


2-1157619572
Виталька 2006
2006-09-07 12:59
2006.09.24
Две формы одного класса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский