Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.01 c
3-27413
denis24
2003-09-17 17:29
2003.10.09
кодировка в ole db 4.0


1-27444
Andy BitOff
2003-09-28 01:28
2003.10.09
Transparent Color и все, что с ним связано.


1-27493
Jora
2003-09-30 08:51
2003.10.09
сумма прописью


1-27567
Vasily_Ts
2003-09-26 20:45
2003.10.09
Проблема с архивированием каталога из собственной программы


1-27513
Pushkin
2003-09-26 13:34
2003.10.09
Как в StringGrid сделать проверку данных в ячейке?





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