我看到比较晚,我这段代码不知能不能帮你<br>Function d_sys_sel(sqlc:TADOConnection;sql:String;var ds:String):Integer;<br>var<br> Query:TADOQuery;<br> DataSetProvider:TDataSetProvider;<br>begin<br> result := -1;<br> try<br> Query := TADOQuery.Create(nil);<br> Query.Connection := sqlc;<br><br> DataSetProvider := TDataSetProvider.Create(nil);<br> DataSetProvider.DataSet := Query;<br> DataSetProvider.Options := [poAllowCommandText];<br> DataSetProvider.UpdateMode := upWhereAll;<br><br> Query.Close;<br> Query.Sql.Add(sql);<br> Query.Open;<br> if not Query.Fields[0].IsNull then<br> begin<br> ds := VarArrayToString(DataSetProvider.Data);<br> result := 0;<br> End<br> finally<br> FreeAndNil(Query);<br> FreeAndNil(DataSetProvider);<br> end;<br>end;<br>其中因为三层传输变量类型的限制,我把检索出的数据通过VarArrayToString转成String了,在客户端再用StringToVariant转回来,赋给ClientDataSet.Data,这两个函数能从网上找到