Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Создаем клиент для чтения и редактирования данных






Для статьи я буду создавать новое приложение, а Вы, если хотите, можете изменять только что созданного клиента. Итак, чтобы создаем новый проект и бросаем на главную форму следующие компоненты:

  1. TSQLConnection
  2. TDSProviderConnection
  3. TClientDataSet
  4. TDataSource
  5. TDBGrid
  6. TDBNavigator
  7. TCheckBox

Внешний вид главной формы приложения у меня получился следующий:

 

Как видите, состав компонентов стал несколько другим. TDSProviderConnection необходим нам для того, чтобы обеспечить ссылку на TDataSetProvider на стороне сервера. Но, как Вы можете Видеть выше — никакого TDataSetProvider у нашего сервера нет. Поэтому на минуту вернемся к серверу, добавим в модуль ServerMethodsUnit1 компонент TDataSetProvider у которого в свойстве DataSet укажем SQLDataSet. Вид модуля у сервера теперь стал таким:

 

Теперь пересобирите ISAPI-модуль, выключите IIS, забросьте куда необходимо IIS-модуль и снова включите IIS.

Если сервер не будет работать, то мы просто не сможем получить ссылку на серверный DataSetProvider в клиенте.

Возвращаемся к нашему клиенту. Будем считать, что TSQLConnection у Вас уже настроен (тритий раз повторяться не буду). Переходим сразу к TDSProviderConnection и устанавливаем у него следующие свойства:

  1. SQLConnection = SQLConnection1
  2. ServerClassName = TServerMethods1

Здесь будьте предельно внимательны — не перепутайте класс TServerMethods1Client, который находится в клиенте с классом TServerMethods1, который находится в модуле сервера. TDSProviderConnection должен содержать имя класса именно сервера. По хорошему, было бы не плохо, если бы свойство ServerClassName содержало список, как у TSQLServerMethod, но имеем пока то, что имеем.

Теперь устанавливаем свойства у TClientDataSet:

  1. RemoteServer = DSProviderConnection1
  2. ProviderName = DataSetProvider1;

Свойство ProviderName — это список, который формируется после запроса к серверу и в это список ничего руками вписывать не следует. Если у вас не получается зделать вот так:

 

то одно из двух:

  1. Сервер не работает
  2. Не правильно настроен TDSProviderConnection или TSQLConnection

Теперь устанавливаем у DataSourse свойство DataSet как ClientDataSet1 и настраиваем свойства у DBGrid и DBNavigator.

У CheckBox1 снова пишем обработчик OnClick:

procedure TForm18.CheckBox1Click(Sender: TObject); begin ClientDataSet1.Active: =CheckBox1.Checked; end;

Этого будет достаточно, чтобы запустить все компоненты по цепочке. И остается решить вопрос с обновлением БД. Я не стал выдумывать ничего лишнего и сделал отправку изменений на сервер в ручном режиме. т.е. добавил на форму кнопку и определил обработчик OnClick следующим образом:

procedure TForm18.Button1Click(Sender: TObject); begin ClientDataSet1.ApplyUpdates(0); end;

Вот теперь можно запустить наш клиент и попробовать добавить/отредактировать/удалить записи.

Будьте уверены — данные отправятся на сервер и сохраняться в базе данных.

Если вместо русских символов в таблице появляются??????????? то установите на сервере свойство TConnection.Driver.ServerCharSet=»utf8″

Как видите сегодня мы с Вами решили поставленную задачу, а также определились с отличиями в составе компонентов у клиента, который работает только на чтения и у клиента для полноценной работы с данными. Исходники всех трех проектов я выложу, но пока открытым остается один вопрос, который, полагаю, возникал у тех, кого заинтересовала тема ISAPI — как проводить отладку ISAPI-модуля? Вопрос на самом деле не большой, поэтому сейчас его быстренько и рассмотрим.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.