Changeset 34


Ignore:
Timestamp:
Nov 24, 2011, 2:06:10 PM (12 years ago)
Author:
chronos
Message:
  • Modified: Report loading is now done by TChronisClient.
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Application/Clients/UChronisClientMySQL.pas

    r33 r34  
    6161      Filter := '';
    6262      for I := 0 to AList.ColumnsFilter.Count - 1 do
    63         Filter := Filter + AList.ColumnsFilter[I] + ',';
    64       Delete(Filter, Length(Filter), 1);
     63        Filter := Filter + '`' + AList.ColumnsFilter[I] + '`, ';
     64      Delete(Filter, Length(Filter) - 1, 2);
    6565    end else Filter := '*';
    6666    if AList.ConditionUse then Condition := '`' + AList.ConditionColumn + '` = "' +
    6767      AList.ConditionValue + '"'
    6868      else Condition := '1';
    69     Database.Select(DbRows, AList.ObjectName, Filter, Condition);
     69    Database.Query(DbRows, 'SELECT ' + Filter + ' FROM `' + AList.SchemaName + '`.`' +
     70      AList.ObjectName + '` WHERE ' + Condition);
    7071    AList.Objects.Clear;
    71     for I := 0 to DbRows.Count - 1 do
     72    for I := 0 to DbRows.Count - 1 do begin
    7273      NewObject := TObjectProxy.Create;
    7374      NewObject.Client := AList.Client;
    7475      NewObject.Properties.Assign(TDictionaryStringString(DbRows[I]));
    7576      AList.Objects.Add(NewObject);
     77    end;
    7678  finally
    7779    DbRows.Free;
  • trunk/Application/UChronisClient.pas

    r33 r34  
    4343    ConditionUse: Boolean;
    4444    ObjectName: string;
     45    SchemaName: string;
    4546    Objects: TListObject; // TListObject<TObjectProxy>
     47    procedure SetCondition(ColumnName: string; Value: string);
    4648    procedure Clear;
    4749    constructor Create;
     
    105107{ TListProxy }
    106108
     109procedure TListProxy.SetCondition(ColumnName: string; Value: string);
     110begin
     111  ConditionColumn := ColumnName;
     112  ConditionValue := Value;
     113  ConditionUse := True;
     114end;
     115
    107116procedure TListProxy.Clear;
    108117begin
  • trunk/USystem.pas

    r33 r34  
    187187procedure TReport.Load(Obj: TChronisObject; Filter: string = '');
    188188var
    189   Properties: TDbRows;
    190   Values: TDbRows;
     189  Properties: TListProxy;
     190  Values: TListProxy;
    191191  I: Integer;
    192192  C: Integer;
     
    195195  ColumnsQuery: string;
    196196  DataType: TDataType;
     197  ProxyObj: TObjectProxy;
    197198begin
    198199  Clear;
     
    200201    // Load column names
    201202    try
    202       Properties := TDbRows.Create;
    203       Base.Database.Query(Properties, 'SELECT * FROM `' + PropertyTable +
    204         '` WHERE `Object`=' + IntToStr(Obj.Id));
     203      Properties := TListProxy.Create;
     204      Properties.Client := Base.Client;
     205      Properties.ObjectName := PropertyTable;
     206      Properties.SchemaName := Base.Database.Database;
     207      Properties.SetCondition('Object', IntToStr(Obj.Id));
     208      Properties.Load;
    205209      Columns.Clear;
    206210
    207       for I := 0 to Properties.Count - 1 do begin
    208         DataType := GetDataType(StrToInt(Properties[I].Values['CustomType']));
     211      for I := 0 to Properties.Objects.Count - 1 do begin
     212        ProxyObj := TObjectProxy(Properties.Objects[I]);
     213        DataType := GetDataType(StrToInt(ProxyObj.Properties.Values['CustomType']));
    209214        NewColumn := TReportColumn.Create;
    210215        Columns.Add(NewColumn);
    211         NewColumn.Caption := Properties[I].Values['Name'];
    212         NewColumn.ColumnName := Properties[I].Values['ColumnName'];
     216        NewColumn.Caption := ProxyObj.Properties.Values['Name'];
     217        NewColumn.ColumnName := ProxyObj.Properties.Values['ColumnName'];
    213218        NewColumn.CustomType := DataType;
    214219        if (DataType is TDataTypeRelationMany) then NewColumn.VirtualItem := True;
     
    216221
    217222      // Load items
    218       Values := TDbRows.Create;
    219       ColumnsQuery := '';
     223      Values := TListProxy.Create;
     224      Values.Client := Base.Client;
    220225      for I := 0 to Columns.Count - 1 do
    221226        if not TReportColumn(Columns[I]).VirtualItem then
    222         ColumnsQuery := ColumnsQuery + ', `' + TReportColumn(Columns[I]).ColumnName + '`';
    223       System.Delete(ColumnsQuery, 1, 2);
    224       if Filter <> '' then Filter := ' WHERE ' + Filter;
    225       Base.Database.Query(Values, 'SELECT ' + ColumnsQuery + ', `' + Obj.PrimaryKey + '` AS `SYS_PRIMARY_KEY`  FROM `' + Obj.Schema + '`.`' +
    226         Obj.Table + '`' + Filter);
    227       for I := 0 to Values.Count - 1 do begin
     227          Values.ColumnsFilter.Add(TReportColumn(Columns[I]).ColumnName);
     228      Values.ColumnsFilter.Add(Obj.PrimaryKey);
     229      Values.ColummsFilterUse := True;
     230      Values.ObjectName := Obj.Table;
     231      Values.SchemaName := Obj.Schema;
     232      Values.Load;
     233
     234      //Base.Database.Query(Values, 'SELECT ' + ColumnsQuery + ', `' + Obj.PrimaryKey + '` AS `SYS_PRIMARY_KEY`  FROM `' + Obj.Schema + '`.`' +
     235      //  Obj.Table + '`' + Filter);
     236      for I := 0 to Values.Objects.Count - 1 do begin
     237        ProxyObj := TObjectProxy(Values.Objects[I]);
    228238        NewItem := TReportLine.Create;
    229239        //NewItem.Items.Add(Values[I].Values[Obj.PrimaryKey]);
    230         NewItem.Id := StrToInt(Values[I].Values['SYS_PRIMARY_KEY']);
     240        NewItem.Id := StrToInt(ProxyObj.Properties.Values[Obj.PrimaryKey]);
    231241        for C := 0 to Columns.Count - 1 do
    232242        if not TReportColumn(Columns[C]).VirtualItem then begin
    233           NewItem.Items.Add(Values[I].Values[TReportColumn(Columns[C]).ColumnName]);
     243          NewItem.Items.Add(ProxyObj.Properties.Values[TReportColumn(Columns[C]).ColumnName]);
    234244        end else NewItem.Items.Add('');
    235245        Add(NewItem);
  • trunk/chronis.lpi

    r33 r34  
    105105      </Item6>
    106106    </RequiredPackages>
    107     <Units Count="59">
     107    <Units Count="60">
    108108      <Unit0>
    109109        <Filename Value="chronis.lpr"/>
     
    266266        <IsPartOfProject Value="True"/>
    267267        <UnitName Value="USystem"/>
    268         <IsVisibleTab Value="True"/>
    269268        <EditorIndex Value="8"/>
    270269        <WindowIndex Value="0"/>
    271         <TopLine Value="190"/>
    272         <CursorPos X="1" Y="203"/>
     270        <TopLine Value="213"/>
     271        <CursorPos X="1" Y="232"/>
    273272        <UsageCount Value="200"/>
    274273        <Loaded Value="True"/>
     
    332331        <IsPartOfProject Value="True"/>
    333332        <UnitName Value="UDataTypes"/>
    334         <EditorIndex Value="9"/>
    335         <WindowIndex Value="0"/>
    336         <TopLine Value="5"/>
    337         <CursorPos X="23" Y="20"/>
     333        <WindowIndex Value="0"/>
     334        <TopLine Value="126"/>
     335        <CursorPos X="12" Y="139"/>
    338336        <UsageCount Value="204"/>
    339         <Loaded Value="True"/>
    340337        <DefaultSyntaxHighlighter Value="Delphi"/>
    341338      </Unit19>
     
    364361        <TopLine Value="149"/>
    365362        <CursorPos X="44" Y="164"/>
    366         <UsageCount Value="158"/>
     363        <UsageCount Value="159"/>
    367364        <DefaultSyntaxHighlighter Value="Delphi"/>
    368365      </Unit22>
     
    430427        <TopLine Value="40"/>
    431428        <CursorPos X="29" Y="54"/>
    432         <UsageCount Value="107"/>
     429        <UsageCount Value="108"/>
    433430        <DefaultSyntaxHighlighter Value="Delphi"/>
    434431      </Unit30>
     
    469466        <EditorIndex Value="1"/>
    470467        <WindowIndex Value="0"/>
    471         <TopLine Value="9"/>
    472         <CursorPos X="18" Y="30"/>
     468        <TopLine Value="235"/>
     469        <CursorPos X="8" Y="238"/>
    473470        <UsageCount Value="23"/>
    474471        <Loaded Value="True"/>
     
    483480        <TopLine Value="175"/>
    484481        <CursorPos X="3" Y="183"/>
    485         <UsageCount Value="57"/>
     482        <UsageCount Value="58"/>
    486483        <DefaultSyntaxHighlighter Value="Delphi"/>
    487484      </Unit36>
     
    525522        <TopLine Value="4"/>
    526523        <CursorPos X="33" Y="19"/>
    527         <UsageCount Value="51"/>
     524        <UsageCount Value="52"/>
    528525        <DefaultSyntaxHighlighter Value="Delphi"/>
    529526      </Unit41>
     
    564561        <EditorIndex Value="6"/>
    565562        <WindowIndex Value="0"/>
    566         <TopLine Value="20"/>
    567         <CursorPos X="13" Y="31"/>
    568         <UsageCount Value="47"/>
     563        <TopLine Value="130"/>
     564        <CursorPos X="1" Y="140"/>
     565        <UsageCount Value="48"/>
    569566        <Loaded Value="True"/>
    570567        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    577574        <TopLine Value="1"/>
    578575        <CursorPos X="1" Y="14"/>
    579         <UsageCount Value="47"/>
     576        <UsageCount Value="48"/>
    580577        <DefaultSyntaxHighlighter Value="Delphi"/>
    581578      </Unit47>
     
    587584        <TopLine Value="8"/>
    588585        <CursorPos X="35" Y="14"/>
    589         <UsageCount Value="46"/>
     586        <UsageCount Value="47"/>
    590587        <DefaultSyntaxHighlighter Value="Delphi"/>
    591588      </Unit48>
     
    594591        <IsPartOfProject Value="True"/>
    595592        <UnitName Value="UChronisModule"/>
    596         <EditorIndex Value="10"/>
     593        <EditorIndex Value="9"/>
    597594        <WindowIndex Value="0"/>
    598595        <TopLine Value="1"/>
    599596        <CursorPos X="5" Y="15"/>
    600         <UsageCount Value="37"/>
     597        <UsageCount Value="38"/>
    601598        <Loaded Value="True"/>
    602599        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    606603        <IsPartOfProject Value="True"/>
    607604        <UnitName Value="UModuleSystem"/>
    608         <EditorIndex Value="11"/>
     605        <EditorIndex Value="10"/>
    609606        <WindowIndex Value="0"/>
    610607        <TopLine Value="54"/>
    611608        <CursorPos X="42" Y="66"/>
    612         <UsageCount Value="37"/>
     609        <UsageCount Value="38"/>
    613610        <Loaded Value="True"/>
    614611        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    645642        <WindowIndex Value="0"/>
    646643        <TopLine Value="27"/>
    647         <CursorPos X="20" Y="73"/>
    648         <UsageCount Value="30"/>
     644        <CursorPos X="15" Y="40"/>
     645        <UsageCount Value="31"/>
    649646        <Loaded Value="True"/>
    650647        <LoadedDesigner Value="True"/>
     
    655652        <UnitName Value="Forms"/>
    656653        <WindowIndex Value="0"/>
    657         <TopLine Value="735"/>
    658         <CursorPos X="17" Y="748"/>
    659         <UsageCount Value="9"/>
     654        <TopLine Value="1749"/>
     655        <CursorPos X="29" Y="1760"/>
     656        <UsageCount Value="10"/>
    660657      </Unit55>
    661658      <Unit56>
     
    673670        <IsPartOfProject Value="True"/>
    674671        <UnitName Value="UChronisClientMySQL"/>
    675         <WindowIndex Value="0"/>
    676         <TopLine Value="1"/>
    677         <CursorPos X="31" Y="3"/>
     672        <IsVisibleTab Value="True"/>
     673        <EditorIndex Value="11"/>
     674        <WindowIndex Value="0"/>
     675        <TopLine Value="52"/>
     676        <CursorPos X="40" Y="64"/>
    678677        <UsageCount Value="27"/>
     678        <Loaded Value="True"/>
    679679        <DefaultSyntaxHighlighter Value="Delphi"/>
    680680      </Unit57>
     
    686686        <TopLine Value="63"/>
    687687        <CursorPos X="3" Y="74"/>
    688         <UsageCount Value="23"/>
     688        <UsageCount Value="24"/>
    689689        <DefaultSyntaxHighlighter Value="Delphi"/>
    690690      </Unit58>
     691      <Unit59>
     692        <Filename Value="../../../Lazarus/0.9.31_2.5.1/fpc/2.5.1/source/rtl/objpas/sysutils/sysstrh.inc"/>
     693        <WindowIndex Value="0"/>
     694        <TopLine Value="106"/>
     695        <CursorPos X="10" Y="119"/>
     696        <UsageCount Value="10"/>
     697      </Unit59>
    691698    </Units>
    692     <JumpHistory Count="13" HistoryIndex="11">
     699    <JumpHistory Count="30" HistoryIndex="28">
    693700      <Position1>
    694         <Filename Value="USystem.pas"/>
    695         <Caret Line="91" Column="9" TopLine="70"/>
     701        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     702        <Caret Line="76" Column="1" TopLine="55"/>
    696703      </Position1>
    697704      <Position2>
    698         <Filename Value="USystem.pas"/>
    699         <Caret Line="40" Column="3" TopLine="29"/>
     705        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     706        <Caret Line="73" Column="1" TopLine="55"/>
    700707      </Position2>
    701708      <Position3>
    702         <Filename Value="Application/UChronisClient.pas"/>
    703         <Caret Line="47" Column="21" TopLine="23"/>
     709        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     710        <Caret Line="74" Column="1" TopLine="55"/>
    704711      </Position3>
    705712      <Position4>
    706         <Filename Value="Application/UChronisClient.pas"/>
    707         <Caret Line="24" Column="18" TopLine="15"/>
     713        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     714        <Caret Line="75" Column="1" TopLine="55"/>
    708715      </Position4>
    709716      <Position5>
    710         <Filename Value="Application/UChronisClient.pas"/>
    711         <Caret Line="49" Column="28" TopLine="38"/>
     717        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     718        <Caret Line="76" Column="1" TopLine="55"/>
    712719      </Position5>
    713720      <Position6>
    714         <Filename Value="Application/UChronisClient.pas"/>
    715         <Caret Line="59" Column="44" TopLine="39"/>
     721        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     722        <Caret Line="73" Column="1" TopLine="55"/>
    716723      </Position6>
    717724      <Position7>
    718         <Filename Value="Application/UChronisClient.pas"/>
    719         <Caret Line="55" Column="43" TopLine="39"/>
     725        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     726        <Caret Line="74" Column="1" TopLine="55"/>
    720727      </Position7>
    721728      <Position8>
    722         <Filename Value="Application/UChronisClient.pas"/>
    723         <Caret Line="22" Column="17" TopLine="4"/>
     729        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     730        <Caret Line="75" Column="1" TopLine="55"/>
    724731      </Position8>
    725732      <Position9>
    726         <Filename Value="Application/UChronisClient.pas"/>
    727         <Caret Line="75" Column="18" TopLine="73"/>
     733        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     734        <Caret Line="76" Column="1" TopLine="55"/>
    728735      </Position9>
    729736      <Position10>
    730         <Filename Value="Application/UChronisClient.pas"/>
    731         <Caret Line="44" Column="5" TopLine="23"/>
     737        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     738        <Caret Line="73" Column="1" TopLine="55"/>
    732739      </Position10>
    733740      <Position11>
    734         <Filename Value="Application/UChronisClient.pas"/>
    735         <Caret Line="131" Column="15" TopLine="121"/>
     741        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     742        <Caret Line="74" Column="1" TopLine="55"/>
    736743      </Position11>
    737744      <Position12>
    738         <Filename Value="UCore.pas"/>
    739         <Caret Line="58" Column="39" TopLine="42"/>
     745        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     746        <Caret Line="75" Column="1" TopLine="55"/>
    740747      </Position12>
    741748      <Position13>
    742         <Filename Value="UCore.pas"/>
    743         <Caret Line="107" Column="1" TopLine="82"/>
     749        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     750        <Caret Line="76" Column="1" TopLine="55"/>
    744751      </Position13>
     752      <Position14>
     753        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     754        <Caret Line="73" Column="1" TopLine="55"/>
     755      </Position14>
     756      <Position15>
     757        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     758        <Caret Line="74" Column="1" TopLine="55"/>
     759      </Position15>
     760      <Position16>
     761        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     762        <Caret Line="75" Column="1" TopLine="55"/>
     763      </Position16>
     764      <Position17>
     765        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     766        <Caret Line="76" Column="1" TopLine="55"/>
     767      </Position17>
     768      <Position18>
     769        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     770        <Caret Line="73" Column="1" TopLine="55"/>
     771      </Position18>
     772      <Position19>
     773        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     774        <Caret Line="74" Column="1" TopLine="55"/>
     775      </Position19>
     776      <Position20>
     777        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     778        <Caret Line="75" Column="1" TopLine="55"/>
     779      </Position20>
     780      <Position21>
     781        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     782        <Caret Line="76" Column="1" TopLine="55"/>
     783      </Position21>
     784      <Position22>
     785        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     786        <Caret Line="73" Column="1" TopLine="55"/>
     787      </Position22>
     788      <Position23>
     789        <Filename Value="USystem.pas"/>
     790        <Caret Line="232" Column="1" TopLine="219"/>
     791      </Position23>
     792      <Position24>
     793        <Filename Value="../../PascalClassLibrary/Network/CoolWeb/Persistence/USqlDatabase.pas"/>
     794        <Caret Line="246" Column="1" TopLine="235"/>
     795      </Position24>
     796      <Position25>
     797        <Filename Value="USystem.pas"/>
     798        <Caret Line="208" Column="1" TopLine="213"/>
     799      </Position25>
     800      <Position26>
     801        <Filename Value="USystem.pas"/>
     802        <Caret Line="232" Column="1" TopLine="213"/>
     803      </Position26>
     804      <Position27>
     805        <Filename Value="Application/UChronisClient.pas"/>
     806        <Caret Line="140" Column="1" TopLine="130"/>
     807      </Position27>
     808      <Position28>
     809        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     810        <Caret Line="69" Column="3" TopLine="52"/>
     811      </Position28>
     812      <Position29>
     813        <Filename Value="Application/Clients/UChronisClientMySQL.pas"/>
     814        <Caret Line="70" Column="1" TopLine="52"/>
     815      </Position29>
     816      <Position30>
     817        <Filename Value="../../PascalClassLibrary/Network/CoolWeb/Persistence/USqlDatabase.pas"/>
     818        <Caret Line="238" Column="8" TopLine="235"/>
     819      </Position30>
    745820    </JumpHistory>
    746821  </ProjectOptions>
     
    793868  </CompilerOptions>
    794869  <Debugging>
     870    <BreakPoints Count="2">
     871      <Item1>
     872        <Kind Value="bpkSource"/>
     873        <WatchScope Value="wpsLocal"/>
     874        <WatchKind Value="wpkWrite"/>
     875        <Source Value="USystem.pas"/>
     876        <Line Value="208"/>
     877      </Item1>
     878      <Item2>
     879        <Kind Value="bpkSource"/>
     880        <WatchScope Value="wpsLocal"/>
     881        <WatchKind Value="wpkWrite"/>
     882        <Source Value="USystem.pas"/>
     883        <Line Value="232"/>
     884      </Item2>
     885    </BreakPoints>
    795886    <Watches Count="1">
    796887      <Item1>
Note: See TracChangeset for help on using the changeset viewer.