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

Вниз

Обновление TADODataSet из TClientDataSet   Найти похожие ветки 

 
kreyl   (2005-12-20 23:44) [0]

Подскажите, пожалуйста, как обновить данные в базе из TClientDataSet?
(Access + D2005) Есть таблица в Аксессе. Создается ADOConnection, через него к таблице подключается временный датасет, из него данные копируются в ClientDataSet. Потом временный датасет убивается, ADOConnection тоже убивается, затем на основе ClientDataSet через DataSource строится DBGrid.
DBGrid редактируется (соответственно, изменяя ClientDataSet); а потом нужно обновить данные в таблице базы. То есть внести в таблицу базы изменения, сделанные в ClientDataSet.
Пробовал так:

procedure SaveDataSet (TableName: string; DataSet: TClientDataSet);
var
ds: TADODataSet;
pr: TDataSetProvider;
begin
 ds := TADODataSet.Create(nil);
 pr := TDataSetProvider.Create(nil);
   try
     ds.Connection  := ADOCon;
     ds.CommandType := cmdTable;
     ds.CommandText := TableName;
     ds.Open;
     pr.DataSet := ds;
     DataSet.SetProvider(pr);
     DataSet.ApplyUpdates(0);
   finally
     ds.Free;
     pr.Free;
   end;
end;

В изначально пустую таблицу данные добавить можно. Однако, если в гриде удалить всё и сказать сохранить, в базе ничего не меняется. При попытках добавить запись к уже имеющимся получаю ругань на повторяющиеся значения в индексе - очевидно, не удается именно что обновить данные.
Где засада?
Заранее спасибо :-)


 
Nikolay M. ©   (2005-12-20 23:54) [1]


> Где засада?

В извращенном способе работы с CDS. "Создается временный...", "убивается..." - в каком Архангельском ты прочитал такую чушь?
Конечно, если ты будешь вручную формировать и исполнять инструкции DML в DataSetProvider.BeforeUpdateRecord, это будет временным решением в твоей ситуации, но ДНК не исправит.


 
sniknik ©   (2005-12-21 00:13) [2]

тут ClientDataSet (как и скрипачь в кин дза-дза ;) не нужен совсем. только если специально для создания трудностей и геройского их после преодолевания... (намеки уже видны)


 
kreyl   (2005-12-21 00:31) [3]

Большое спасибо, пошел читать ADO Demo.



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

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

Наверх




Память: 0.45 MB
Время: 0.043 c
2-1138725144
Neo Trinitron
2006-01-31 19:32
2006.02.19
сортировка в TListViev


15-1138817907
Alarm
2006-02-01 21:18
2006.02.19
Поздравление Керку


15-1138299301
Pat
2006-01-26 21:15
2006.02.19
Замена текста в Ворде из макроса


15-1138265524
AlexD
2006-01-26 11:52
2006.02.19
Windows XP


8-1126434169
Ego
2005-09-11 14:22
2006.02.19
Как вставить звуковой файл в тело программы?





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