Форум: "Базы";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
ВнизDB - SQLDataSet - DataSetProvider-ClientDataSet Найти похожие ветки
← →
LinOS (2003-09-18 09:19) [0]Есть такая цепочка.
Есть форма с кнопкой и DBGrid.
При откратии формы пишу
DM.SQLDataSet.CommandText := "SELECT id, f_name, s_name, o_name FROM staff WHERE status IS NULL";
DM.SQLDataSet.Open;
DM.ClientDataSet.Open;
DBTable присоединена к ClientDataSet.
Теперь вношу в DBGrid новую запись и нажимаю кнопку. На ней обработчик такой:
if DM.ClientDataSet.ChangeCount > 0 then
DM.ClientDataSet.ApplyUpdates(-1);
По идеи все что я внес в DBGrid должно запоститься на сервер в BD. Однако пишет сообщения:
1. Unknow table name: "staff".
2. Unable to find record. Nokey specified.
Пробовал определять ключевое поле таким образом:
DM.SQLDataSet.Fields.FieldByName("id").ProviderFlags := [pfInKey];
Не помогает.
Мастера. Подскажите как делать?
← →
Nikolay M. (2003-09-18 09:54) [1]
> DM.SQLDataSet.Open
Не уловил, для чего это нужно?
Чему равно DataSetProvider.ResolveToDataSet?
DM. CDS.Fields.FieldByName("id").ProviderFlags := [pfInKey];
← →
LinOS (2003-09-18 10:11) [2]DataSetProvider.ResolveToDataSet := False;
Ладно, пускай убрал DM.SQLDataSet.Open и сделал
DM.CDS.Fields.FieldByName("id").ProviderFlags := [pfInKey];
Тоже самое.
Как правильно настроить такую связку?
← →
Nikolay M. (2003-09-18 10:18) [3]
> Как правильно настроить такую связку?
\Delphi6\Demos\Midas\Alchtest
← →
LinOS (2003-09-18 10:51) [4]А по проще нет ничего?
← →
Romkin (2003-09-18 10:54) [5]Устанавливать InKEy надо в датасете, к которому провайдер присоединен, а не на клиенте
← →
Nikolay M. (2003-09-18 11:12) [6]
> Устанавливать InKEy надо в датасете, к которому провайдер
> присоединен, а не на клиенте
А он уже так делал :)
← →
LinOS (2003-09-18 11:38) [7]Ну, что? insert/update писать, да заполнять grid самому - бред. Не может быть так. Они сами пишут, что ClientDataSet используется как кэш, а для записи в БД достаточно выполнить процедуру ApplyUpdates.
← →
Nikolay M. (2003-09-18 11:42) [8]Разберись с примером, там все есть.
← →
Romkin (2003-09-18 11:46) [9]Если ты юзаешь CommandText, то должен знать, к чему это приводит, и сам обо всем заботиться.
Меня вообще бесят регулярные вопросы, начинающиеся с SQL.Add("blabla") и затем выставление параметров.
Что мешает нормально разобраться в Params, Fields etc?
Сам ведь у провайдера указал upWhereKeyOnly, теперь спрашиваешь, как поля выставить
http://www.delphimaster.ru/articles/midas/index.html
http://www.delphimaster.ru/articles/midas2/index.html
http://rsdn.ru/article/db/midas.xml
← →
LinOS (2003-09-18 13:46) [10]Спасибо. Пробую по другому.
По книжке.
SQLDS
Provider
CDS
В CDS.CommandText пишу "select * from staff"
Активирую.
В SQLDS заполняю filds и полю id устанавливаб свойство pfInKey.
Перехожу в CDS заполняю поля.
Отсоединяюсь.
Запускаю приложение
CDS.Open - появляются данные в Grid.
Редактирую Grid
Жму на кнопку (CDS.ApplyUpdate(-1))
Ошибка unknow table name "staff".
Почему?
← →
LinOS (2003-09-18 13:50) [11]Если в Provider-е поставить ResolveToDataSet=True, то ругается, SQLDS: Cannot modify a read-only dataset.
← →
Romkin (2003-09-18 13:55) [12]Ну зачем тебе CommandTExt, если на сервере поля запроса уже выставлены? Забудь о нем. Какой тип у SQLDS? Какая БД? А у SQLDS LiveREsult = True?
Попробуй TProvider.OnGetTableName заполнить
← →
LinOS (2003-09-19 06:40) [13]//Ну зачем тебе CommandTExt, если на сервере поля запроса уже //выставлены? Забудь о нем. Какой тип у SQLDS?
Что значит "какой тип"? CommandType = ctQuery.
//Какая БД?
БД SAPDB через ODBC.
//А у SQLDS LiveREsult = True?
И где такой параметр у TSQLDataSet?
//Попробуй TProvider.OnGetTableName заполнить
КАк работает? Что заполнять?
← →
LinOS (2003-09-19 07:49) [14]Все, мастера - разобрался. Оказывается различает UPPERCASE and LOWCASE буквы в названиях таблиц. Не знаю почему, но когда я создаю таблицу в БД, то создаю в LOWCASE. И когда пишу Select из какой-нибудь data base tools, то все нормально. А тут вот такая особенность.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c