|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.11.2011, 15:36 | #1 |
Новичок
Джуниор
Регистрация: 17.11.2011
Сообщений: 2
|
Не могу сохранить данные(Бд клиент-сервер)
Всем доброго времени суток. Суть проблемы в следующем. Пушу клиент-серверное приложение на делфе. Опыта написания вообще нет, литературку почитал но возникают вопросы. У меня на приложении- сервере стоит компонент адоквэри (MainQuery) он связан соответственно с датасетпровайдером (DSPMain). Соответственно на клиенте есть компонент Клиентдатасэт (MainClientDS) который связан с DSPMain. В базе данных есть таблица Specialnost куда я хочу добавить данные. При активации формы добавления пишу следующий код:
procedure TSpecialnostForm.FormActivate(Sende r: TObject); begin {Настраиваю ClientDataSet} MainForm.MainClientDS.Active := false; {Сначала выключаю} SpecialnostDBGrid.DataSource := MainForm.MainDataSource; // Связываю Дбгрид формы добавления с датасорсом(который связан с Клиентдатасэт (MainClientDS)) MainForm.MainClientDS.CommandText:= 'Select* From Specialnost'; {Ввожу сикуэль запрос} MainForm.MainClientDS.Active := true; {включаю} {тут редактирую грид} SpecialnostDBGrid.DataSource.DataSe t.FieldByName('Code').Visible := false; // скрываю ключевое поле SpecialnostDBGrid.DataSource.DataSe t.FieldByName('Name').DisplayLabel := 'Специальность'; //переименовываю в гриде поле ласт наме на Фамилия... SpecialnostDBGrid.DataSource.DataSe t.FieldByName('Name').DisplayWidth := 25; //ставлю ширину в 12 символов end; Далее для кнопки добавить пишу следующий код procedure TSpecialnostForm.BitBtn1Click(Sende r: TObject); begin MainForm.MainClientDS.Insert; //вставляю запись в MainClientDS SpecialnostDBGrid.SetFocus; //передаю фокус в грид end; А для кнопки сохранить пишу следующее: procedure TSpecialnostForm.BitBtn3Click(Sende r: TObject); begin If MainForm.MainClientDS.Modified then // если были изменения MainForm.MainClientDS.ApplyUpdates( 0); // сохраняю данны end; Как я понимаю после выполнения команды MainForm.MainClientDS.ApplyUpdates( 0); все изменения проделанные с Клиентдатосетом передадутся на провайдер… А вот как сохранить эти изменения в базе?! Помогите разобраться. Если я что-то делаю неправильно пожалуйста подскажите. Ps: у компонента адоквэри (MainQuery) свойство сикуэль пусто, так как запросы отправляю с клиента. Да если кто знает хорошие книжки по данной технологии напишите. Читал Сорокин А.В. Delphi Разработка баз данных, Шкрыль А. - Разработка клиент-серверных приложений в Delphi – 200 |
22.11.2011, 16:57 | #2 |
Новичок
Джуниор
Регистрация: 17.11.2011
Сообщений: 2
|
Все разобрался сам... У КлиентДатаСета есть свойство CommandText в которое можно забивать СикуЭль запросы... Но чтоб оно работало необходимо в провайдере в свойстве options выставить в true свойство poAllowCommandText. После этого по нажатию на кнопку сохранить просто формирую запрос 'INSERT INTO ИмяТаблицы (поле1,поле2,...,полеN) VALUES ('''+Значение поля1+''','''+Значение поля2+''',...,'''+Значение поляN+''')'. Все на данный вопрос больше не надо отвечать
|
22.11.2011, 17:42 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Можно CommandText не пользоваться. SELECT помещать в Query.SQL на сервере приложений. После активизации ClientDataSet выбранные записи доступны на клиенте, кол-во их может быть и 0. Спокойно правим ClientDataSet и методом ApplyUpdates отправляем изменения на сервер приложений, который в свою очередь на SQL-сервер. Это удобней чем городить огород командами INSERT, UPDATE и DELETE. DataSetProvider сам их сгенерирует на сервере приложений и через Query передаст в СУБД
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент | RODNOC | Мультимедиа в Delphi | 17 | 03.10.2010 22:31 |
Не могу найти (БД+клиент\сервер) | grom333 | БД в Delphi | 3 | 23.08.2010 17:41 |
сервер+клиент+клиент на телефон | Razyiller | Работа с сетью в Delphi | 3 | 01.04.2010 20:10 |
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? | Demol | Работа с сетью в Delphi | 1 | 21.04.2009 16:18 |