Форум: "Базы";
Текущий архив: 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