Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
ВнизОбновление DataSet Найти похожие ветки
← →
Apollo (2003-12-11 17:05) [0]Здравствуйте. Проблема у меня такая:
Через ADODataset делаю выборку SQL-запросом из двух баз.
Затем при нажатии на кнопку выполняется следующий код
ADOCommand1.ConnectionString:=...;
ADOCommand1.CommandType:=cmdText;
ADOCommand1.CommandText:="Delete from KontrAgent where ID ="+IntToStr(Org.ID);
ADOCommand1.Execute;
ADODataSet1.Close;
ADODataSet1.Open
После всего этого ADODataSet1 выдает тоже самое, что и до нажатия кнопки. Т.е. ничего не обновилось. :о(
Потом, отдельно делаюADODataSet1.Refresh
и оно обновляется. ЕслиADODataSet1.Refresh
делаю вместоClose-Open
не обновляется. :о(
Подскажите, как можно обновить набор данных...
Заранее спасибо.
← →
Apollo (2003-12-16 14:46) [1]Возможно это из-за длительности выполнения.
Делаю следующий код:
var i:integer;
t1,t2:TDateTime;
begin
i:=ADODataSet1.RecordCount;
ADOCommand1.ConnectionString:=csMain;
ADOCommand1.CommandType:=cmdText;
ADOCommand1.CommandText:="Delete from KontrAgent where ID ="+IntToStr(Org.ID);
ADOCommand1.Execute;
{ TODO :
НЕ РАБОТАЕТ
Посмотри в форуме ответы }
t1:=Time;
while i<=ADODataSet1.RecordCount do
ADOPoluch.Requery;
t2:=Time;
ShowMessage(FormatDateTime("hh:mm:ss.zzz",t1)+#10+
FormatDateTime("hh:mm:ss.zzz",t2)+#10+
FormatDateTime("hh:mm:ss.zzz",t2-t1)+#10);
end;
Получается, что удаление одной записи занимает до 5-6 секунд.
Есть ли другие соображения на этот счет.
← →
roottim (2003-12-16 14:56) [2]что установлено в ExecuteOptions?
← →
roottim (2003-12-16 14:58) [3]+ConnectOptions в ADOConnecton
← →
sniknik (2003-12-16 15:05) [4]в ADOCommand1 и ADODataSet1 один ADOConnecton или разные?
← →
Apollo (2003-12-18 10:47) [5]--> roottim
ExecuteOption все в False и там и там.
ADOConnection не использую, сразу в ConnectionString пишу.
--> sniknik
ConnectionString у обоих одинаковые.
← →
Семен Сорокин (2003-12-18 10:52) [6]ADODataSet1.Requery;
from help:
Call Requery to refresh the recordset. Requery updates the dataset by re-executing the original command or SQL statement that produced the recordset.
The effects of Requery are the same as calling the dataset’s Close method and then its Open method. However, there are circumstances when one means of refreshing the recordset is better than the other. The values in properties like CursorLocation, CursorType, and LockType cannot be changed while the dataset is open, so Requery can only refresh the recordset using the existing values in these properties. To refresh the recordset using different values for these properties, effect the refresh using the Close and Open methods.
Options is a TExecuteOptions value that specifies the characteristics of the command execution affected by the requery that produces the recordset for the dataset.
← →
Плохиш_ (2003-12-18 11:01) [7]
> Apollo © (18.12.03 10:47) [5]
> --> roottim
> ExecuteOption все в False и там и там.
> ADOConnection не использую, сразу в ConnectionString пишу.
Для каждого создаётся своя Connection
> --> sniknik
> ConnectionString у обоих одинаковые.
А это уже не важно
← →
sniknik (2003-12-18 11:20) [8]важно, может не в этом случае (в этом все правильно работает), но не раз сдесь были вопросы по странным глюкам именно изза того что не использовался компонент ADOConnection, а прописывались строки.
во всяком случае изменение только этого решало проблему. (что конкретно было не вспомню, даже для одного случая)
← →
Apollo (2003-12-18 17:51) [9]А если запросы "Select..." хранить непосредственно в базе. А затем подключать их как таблицы? По идее проблему должно решить. Но как по скорости? база у меня предполагается большая, тысяч на 10 записей.
← →
Apollo (2003-12-22 13:15) [10]--> sniknik
Да, действительно. Поставил ADOConnection на ADOCommand1 и ADODataSet1. После выполнения добавления записи в ADOCommand запись сразу же появляется в DBGrid.
--> All
Спасибо всем.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c