Question:
Is it possible to modify the TQuery.SQL property when it
resides in a remote data module?
Answer:
Yes. There are three different avenues to accomplish this:
1. If it is a parameterized query, you can use the
IProvider.SetParams call. Assuming you have 2 parameters
(Param1 and Param2). The following code fragment
demonstrates matching by index, Value1 goes to the first
parameter, etc...
ClientDataSet1.Provider.SetParams(VarArrayOf(Value1, Value2));
Or matching by param name:
var
V: Variant;
ParamCount: Integer; //used for ease of reading
begin
ClientDataSet1.Close;
ParamCount := 2;
V := VarArrayCreate([0, ParamCount - 1], varVariant);
V[0] := VarArrayOf(['Param1',Value1]);
V[1] := VarArrayOf(['Param2',Value2]);
ClientDataSet1.Provider.SetParams(V);
ClientDataSet1.Open;
end;
For more example code see \demos\midas\setparam.
2. If you want to change the SQL, then you can use the
IProvider.DataRequest method.
On the Client;
CDS.Data := CDS.Provider.DataRequest('select * from customer');
On the server, you must use a TProvider object, and assign
the OnDataRequest event;
function TForm1.Provider1DataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
//assumes DataSet is a TQuery.
Provider1.DataSet.Close;
TQuery(Provider1.DataSet).SQL.Text := Input;
Provider1.DataSet.Open;
Result := Provider1.Data;
end;
For more example code see \demos\midas\adhoc.
3. Create you own interface function that executes the SQL
statement.
In the RemoteDataModule:
a. Edit | Add To Interface "procedure ExecSQL(SQL:
WideString);" This will add a procedure to your
interface.
b. On the server, code the new procedure:
procedure RemoteData.ExecSQL(SQL: WideString);
begin
{ Query1 is kept in the RemoteDatamodule for this purpose}
Query1.SQL.Text := SQL;
Query1.ExecSQL;
end;
c. On the client, call the new procedure:
RemoteServer1.AppServer.ExecSQL('Delete from deal details
where dealnumber=1');
Subscribe to:
Post Comments (Atom)
air max, burberry outlet, true religion jeans, louboutin, louis vuitton outlet, louboutin, ray ban sunglasses, tiffany and co, coach outlet store online, oakley sunglasses cheap, christian louboutin shoes, longchamp outlet, louis vuitton, true religion jeans, tory burch outlet, kate spade outlet, kate spade handbags, oakley sunglasses, jordan shoes, polo ralph lauren outlet, louis vuitton outlet, louis vuitton handbags, coach outlet, prada outlet, ray ban sunglasses, chanel handbags, michael kors outlet, longchamp handbags, michael kors outlet, oakley sunglasses, nike shoes, air max, coach purses, michael kors outlet, longchamp handbags, louis vuitton outlet stores, nike free, prada handbags, coach factory outlet, gucci outlet, tiffany and co, louboutin outlet, michael kors outlet, polo ralph lauren outlet, michael kors outlet, burberry outlet, michael kors outlet
marc jacobs, soccer shoes, abercrombie and fitch, hollister, asics running shoes, canada goose, ugg boots, nfl jerseys, reebok outlet, herve leger, ugg, north face outlet, mont blanc, longchamp, insanity workout, canada goose uk, chi flat iron, babyliss pro, ugg pas cher, ugg australia, canada goose jackets, mcm handbags, canada goose, wedding dresses, new balance shoes, mac cosmetics, soccer jerseys, celine handbags, birkin bag, p90x, ferragamo shoes, valentino shoes, nike huarache, beats by dre, ghd, instyler, jimmy choo outlet, lululemon outlet, bottega veneta, canada goose, rolex watches, canada goose outlet, vans shoes, nike roshe run, moncler, ugg boots, north face jackets, uggs outlet, giuseppe zanotti
louboutin, moncler outlet, juicy couture outlet, iphone 6 cases, hollister, moncler, karen millen, oakley, baseball bats, wedding dresses, ray ban, gucci, canada goose, ralph lauren, canada goose, swarovski crystal, hollister clothing store, moncler, air max, converse, pandora jewelry, juicy couture outlet, rolex watches, moncler, supra shoes, moncler, pandora charms, ugg, vans, toms shoes, links of london, pandora charms, air max, timberland boots, parajumpers, hollister, thomas sabo, louis vuitton, montre homme, coach outlet store online, lancel, ugg, swarovski, moncler, converse shoes