-
> или все же нужно через TClientDataSet?
Вовсе не обязательно.
Здесь важно чтобы формат данных, возвращаемых процедурой/функцией апп-сервера, соответствовал формату данных, предусмотренных св-вом Data объекта TClientDataSet, который ты используешь на стороне клиента для получения и отображения рез-в той самой требуемой тебе выборки.
-
2 Сергей М.
Спасибо за ответы. Очень помогли.
-
> yuray © (23.08.07 13:57) [19]
>
> Большое спасибо за ответ. Все работает. Только GetLinks
> написал как процедуру с использованием ТADOQuery.
>
> procedure TrdmServer.GetLinks(out Data: OleVariant);
> begin
> ADOQuery1.Open;
> Data:=DataSetProvider1.Data;
> ADOQuery1.Close;
> end;
>
> На клиенте работаю так
>
> procedure TfmClient.BitBtn1Click(Sender: TObject);
> var
> data:OleVariant;
> begin
> Server.GetLinks2(data);
> MyClientDataSet.Data := data;
> end;
>
> Так правильно или все же нужно через TClientDataSet? Есть
> ли в этом случае принципиальная разница?
> <Цитата>
>
> Сергей М. © (23.08.07 14:12) [20]
>
>
> > или все же нужно через TClientDataSet?
>
>
> Вовсе не обязательно.
>
> Здесь важно чтобы формат данных, возвращаемых процедурой/функцией
> апп-сервера, соответствовал формату данных, предусмотренных
> св-вом Data объекта TClientDataSet, который ты используешь
> на стороне клиента для получения и отображения рез-в той
> самой требуемой тебе выборки.
Здравствуйте!
Возможно вопрос не в тот форум, но всетаки...
А если результат такой выборки нужно отобразить на клиенте в C#, можно ли использовать свойства стандартных объектов C# аналогичные MyClientDataSet.Data?
Или есть другие решение, например через Array...
-
> можно ли использовать свойства стандартных объектов C# аналогичные
> MyClientDataSet.Data?
Откуда там возьмутся "аналогичные" ?
> есть другие решение, например через Array
Можно и через array.
Собссно изнутри св-во Data и представляет собой ничто иное как массив.
-
> Большое спасибо за ответ. Все работает. Только GetLinks
> написал как процедуру с использованием ТADOQuery.
>
> procedure TrdmServer.GetLinks(out Data: OleVariant);
> begin
> ADOQuery1.Open;
> Data:=DataSetProvider1.Data;
> ADOQuery1.Close;
> end;
>
> На клиенте работаю так
>
> procedure TfmClient.BitBtn1Click(Sender: TObject);
> var
> data:OleVariant;
> begin
> Server.GetLinks2(data);
> MyClientDataSet.Data := data;
> end;
Столкнулся с проблемой EOleException "Out of memory" когда передаю DataSet с сервера на клиент. Очень много данных… Как бороться? Спасибо.
-
> Как бороться?
Возвращать НД не весь целиком, а фрагментами, по мере навигации удаленного клиента по возвращаемому НД.
-
Тоесть, так просто писать нельзя...
ADOQuery1.Open;
Data:=DataSetProvider1.Data;
ADOQuery1.Close;
Интересно, а как определять оптимальный объем фрагмента?
-
Т.е. ты утверждаешь, что упомянутое тобой исключение возникает именно при выполнении строчки
> Data:=DataSetProvider1.Data;
?
-
Как дождаться завершения работы TADOQuery.ExecSQL
TADOQuery.AfterInsert
не поможет?
-
Да. Поможет. Проблема была в другом. Этот вопрос закрыт.