zoukankan      html  css  js  c++  java
  • firedac引擎DATASNAP多表查询和多表提交

    firedac引擎DATASNAP多表查询和多表提交


    属性设置
    FDTableAdapter1.SchemaAdapter := FDSchemaAdapter;
    FDTableAdapter1.DatSTableName := 't1';
    FDMemTable1.Adapter := FDTableAdapter1;
    FDTableAdapter2.SchemaAdapter := FDSchemaAdapter;
    FDTableAdapter2.DatSTableName := 't2';
    FDMemTable2.Adapter := FDTableAdapter2;
    FDConection1连接DATASNAP参数设置
    FDConection1.DriverName := 'DS';
    FDConection1.LoginPrompt := False;
    FDStoredProc1.Connection := FDConection1;
    FDStoredProc1.StoredProcName := 'TServerMethods.StreamPost';

    // 客户端多表提交
    procedure TClientForm.PostTables;
    var
    LMemStream: TMemoryStream;
    I: integer;
    LDataSet: TDataSet;
    begin
    for I := 0 to FDSchemaAdapter.Count - 1 do
    begin
    LDataSet := FDSchemaAdapter.DataSets[I];
    if LDataSet <> nil then
    if LDataSet.State in dsEditModes then
    LDataSet.Post;
    end;

    LMemStream := TMemoryStream.Create;
    try
    FDSchemaAdapter.ResourceOptions.StoreItems := [siDelta, siMeta];
    FDSchemaAdapter.SaveToStream(LMemStream, TFDStorageFormat.sfBinary);
    LMemStream.Position := 0;
    FDStoredProc1.Params[0].asStream:= LMemStream;
    FDStoredProc1.ExecProc;
    except
    On E: Exception do
    raise Exception.Create(E.Message);
    end;
    end;
    服务端多表提交方法
    procedure TServerMethods.StreamPost(AStream: TStream);
    var
    LMemStream: TMemoryStream;
    LErrors: Integer;
    begin
    // Retreive entire stream from client
    LMemStream := CopyStream(AStream);
    LMemStream.Position := 0;
    try
    FDSchemaAdapter.LoadFromStream(LMemStream, TFDStorageFormat.sfBinary);
    LErrors := FDSchemaAdapter.ApplyUpdates
    finally
    LMemStream.Free;
    if LErrors > 0 then
    raise Exception.CreateFmt(sErrorsOnApplyUpdates , [GenerateErrorMessage]);
    end;
    end;

    服务端多表查询方法
    function TServerMethods.StreamGet: TStream;
    begin
    Result := TMemoryStream.Create;
    try
    qCustomers.Close;
    qCustomers.Open;
    qOrders.Close;
    qOrders.Open;
    FDSchemaAdapter.SaveToStream(Result, TFDStorageFormat.sfBinary);
    Result.Position := 0;
    except
    raise;
    end;
    end;
    客户端多表查询
    procedure TClientForm.GetTables;
    var
    LStringStream: TStringStream;
    begin
    FDStoredProcGet.ExecProc;
    LStringStream := TStringStream.Create(FDStoredProcGet.Params[0].asBlob);
    try
    if LStringStream <> nil then
    begin
    LStringStream.Position := 0;
    FDSchemaAdapter.LoadFromStream(LStringStream, TFDStorageFormat.sfBinary);
    end;
    finally
    LStringStream.Free;
    end;
    end;

  • 相关阅读:
    [SDOI 2009] HH去散步
    [SDOI 2017] 新生舞会
    【期望 数学】7.6神经衰弱
    初涉2-SAT
    【tarjan 拓扑排序 dp】bzoj1093: [ZJOI2007]最大半连通子图
    【贪心】bzoj1572: [Usaco2009 Open]工作安排Job
    【贪心优化dp决策】bzoj1571: [Usaco2009 Open]滑雪课Ski
    概述「并查集补集转化」模型&&luoguP1330 封锁阳光大学
    初涉tarjan缩点
    初涉三元环
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/9645912.html
Copyright © 2011-2022 走看看