Changeset 29
- Timestamp:
- Sep 10, 2022, 10:54:56 PM (2 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DbEngines/UEngineXML.pas
r28 r29 98 98 I: Integer; 99 99 begin 100 Row.Values.Count := Row. Parent.Fields.Count;100 Row.Values.Count := Row.Table.Fields.Count; 101 101 for I := 0 to Row.Values.Count - 1 do 102 Row.Values[I] := TValueClass(Row. Parent.Fields[I].GetValueClass).Create;102 Row.Values[I] := TValueClass(Row.Table.Fields[I].GetValueClass).Create; 103 103 104 104 Node2 := Node.FirstChild; 105 105 I := 0; 106 106 while Assigned(Node2) and (Node2.NodeName = 'Value') and (I < Row.Values.Count) do begin 107 case Row. Parent.Fields[I].DataType.FieldType of107 case Row.Table.Fields[I].DataType.FieldType of 108 108 ftString: TValueString(Row.Values[I]).Value := string(Node2.TextContent); 109 109 ftInteger: TValueInteger(Row.Values[I]).Value := StrToInt(string(Node2.TextContent)); … … 125 125 NewNode := Node.OwnerDocument.CreateElement('Value'); 126 126 Node.AppendChild(NewNode); 127 case Row. Parent.Fields[I].DataType.FieldType of127 case Row.Table.Fields[I].DataType.FieldType of 128 128 ftString: NewNode.TextContent := UnicodeString(TValueString(Row.Values[I]).Value); 129 129 ftInteger: NewNode.TextContent := UnicodeString(IntToStr(TValueInteger(Row.Values[I]).Value)); … … 144 144 while Assigned(Node2) and (Node2.NodeName = 'Record') do begin 145 145 NewRecord := TRecord.Create; 146 NewRecord. Parent := Records.Parent;146 NewRecord.Table := Records.Table; 147 147 LoadNodeRecord(NewRecord, Node2); 148 148 Records.Add(NewRecord); … … 492 492 if Assigned(Field) then begin 493 493 FieldIndex := Table.Fields.IndexOf(Field); 494 TValue(Row.Values[FieldIndex]).SetString(InsertValues.ValueFromIndex[ValueIndex]);494 Row.Values[FieldIndex].SetString(InsertValues.ValueFromIndex[ValueIndex]); 495 495 end else raise Exception.Create(Format(SColumnNotFoundInTable, 496 496 [InsertValues.Names[ValueIndex], TableName])); -
trunk/Forms/UFormConnect.lfm
r28 r29 87 87 Left = 110 88 88 Height = 43 89 Top = 2589 Top = 16 90 90 Width = 446 91 91 Anchors = [akTop, akLeft, akRight] … … 107 107 ClientWidth = 693 108 108 object Label4: TLabel 109 Left = 1 7109 Left = 19 110 110 Height = 26 111 111 Top = 19 … … 124 124 Left = 19 125 125 Height = 26 126 Top = 58126 Top = 72 127 127 Width = 40 128 128 Caption = 'Port:' … … 130 130 end 131 131 object SpinEditPort: TSpinEdit 132 Left = 15 0132 Left = 152 133 133 Height = 43 134 Top = 58134 Top = 64 135 135 Width = 133 136 136 MaxValue = 65535 -
trunk/Forms/UFormFields.pas
r28 r29 160 160 161 161 procedure TFormFields.ReloadList; 162 var163 DbRows: TDbRows;164 NewField: TField;165 I: Integer;166 162 begin 167 Fields.Clear; 168 DbRows := TDbRows.Create; 169 try 170 Fields.Table.DbClient.Query('SELECT * FROM ModelField WHERE Model = ' + Fields.Table.Name, DbRows); 171 for I := 0 to DbRows.Count - 1 do begin 172 NewField := Fields.AddNew(DbRows[I].Items['Name'], 173 Fields.Table.DbClient.DbManager.DataTypes.SearchByName(DbRows[I].Items['DataType'])); 174 NewField.TextBefore := DbRows[I].Items['Caption']; 175 end; 176 finally 177 DbRows.Free; 178 end; 163 Fields.Load; 179 164 180 165 ListView1.Items.Count := Fields.Count; -
trunk/Forms/UFormRecord.pas
r28 r29 37 37 38 38 uses 39 UDataTypes ;39 UDataTypes, UCore; 40 40 41 41 {$R *.lfm} … … 86 86 const 87 87 LabelWidth = 300; 88 begin 88 var 89 LineHeight: Integer; 90 begin 91 LineHeight := Core.ScaleDPI1.ScaleY(35, Core.ScaleDPI1.DesignDPI.Y); 92 89 93 Row := DataRecord; 90 94 Controls.Clear; 91 95 Labels.Clear; 92 96 for I := 0 to Table.Fields.Count - 1 do begin 93 CellRect := Rect(10, 10 + I * 35, Panel1.Width - 20, (I + 1) * 35);97 CellRect := Rect(10, 10 + I * LineHeight, Panel1.Width - 20, (I + 1) * LineHeight); 94 98 NewLabel := TLabel.Create(Panel1); 95 NewLabel.Caption := T Field(Table.Fields[I]).TextBefore;99 NewLabel.Caption := Table.Fields[I].TextBefore; 96 100 NewLabel.Parent := Panel1; 97 101 NewLabel.Left := CellRect.Left; … … 99 103 NewLabel.Visible := True; 100 104 Labels.Add(NewLabel); 101 case T Field(Table.Fields[I]).DataType.FieldType of105 case Table.Fields[I].DataType.FieldType of 102 106 ftString: begin 103 107 NewControl := TEdit.Create(Panel1); … … 183 187 begin 184 188 for I := 0 to Table.Fields.Count - 1 do begin 185 case T Field(Table.Fields[I]).DataType.FieldType of189 case Table.Fields[I].DataType.FieldType of 186 190 ftString: TValueString(Row.Values[I]).Value := TEdit(Controls[I]).Text; 187 191 ftInteger: TValueInteger(Row.Values[I]).Value := TSpinEdit(Controls[I]).Value; -
trunk/Forms/UFormRecords.pas
r28 r29 60 60 ToolBar1.Buttons[I].Hint := ToolBar1.Buttons[I].Caption; 61 61 Caption := STable + ' - ' + Table.Caption; 62 Table.Fields.Load; 62 63 ReloadList; 63 64 end; … … 68 69 begin 69 70 if (Item.Index >= 0) and (Item.Index < Table.Records.Count) then 70 with T Record(Table.Records[Item.Index])do begin71 with Table.Records[Item.Index] do begin 71 72 for I := 0 to Table.Fields.Count - 1 do begin 72 if I = 0 then Item.Caption := TValue(Values[0]).GetString73 else Item.SubItems.Add( TValue(Values[I]).GetString);73 if I = 0 then Item.Caption := Values[0].GetString 74 else Item.SubItems.Add(Values[I].GetString); 74 75 end; 75 76 Item.Data := Table.Records[Item.Index]; … … 116 117 I: Integer; 117 118 NewValue: TValue; 119 Columns: string; 120 Values: string; 118 121 begin 119 122 NewRecord := TRecord.Create; 120 NewRecord. Parent:= Table;123 NewRecord.Table := Table; 121 124 NewRecord.Values.Count := Table.Fields.Count; 122 125 for I := 0 to Table.Fields.Count - 1 do begin 123 ValueClass := T Field(Table.Fields[I]).GetValueClass;126 ValueClass := Table.Fields[I].GetValueClass; 124 127 NewValue := ValueClass.Create; 125 128 NewRecord.Values[I] := NewValue; … … 132 135 if ShowModal = mrOk then begin 133 136 Save(NewRecord); 134 Table.Records.Add(NewRecord); 137 138 Values := ''; 139 Columns := ''; 140 for I := 0 to Table.Fields.Count - 1 do begin 141 Columns := Columns + Table.Fields[I].Name; 142 Values := Values + '"' + NewRecord.Values[I].GetString + '"'; 143 if I < Table.Fields.Count - 1 then begin 144 Columns := Columns + ' , '; 145 Values := Values + ' , '; 146 end; 147 end; 148 Table.DbClient.Query('INSERT INTO ' + Table.Name + ' ( ' + Columns + ' )' + 149 ' VALUES ( ' + Values + ' )'); 150 151 NewRecord.Free; 135 152 ReloadList; 136 153 end else NewRecord.Free; … … 150 167 I: Integer; 151 168 begin 152 Table. LoadRecords;169 Table.Records.Load; 153 170 154 171 ListViewRecords.Columns.BeginUpdate; 155 while ListViewRecords.Columns.Count > Table.Fields.Count do 156 ListViewRecords.Columns[ListViewRecords.ColumnCount - 1].Free; 157 while ListViewRecords.Columns.Count < Table.Fields.Count do 158 ListViewRecords.Columns.Add; 159 for I := 0 to Table.Fields.Count - 1 do begin 160 ListViewRecords.Columns[I].Caption := TField(Table.Fields[I]).TextBefore; 161 ListViewRecords.Columns[I].Width := 200; 172 try 173 while ListViewRecords.Columns.Count > Table.Fields.Count do 174 ListViewRecords.Columns[ListViewRecords.ColumnCount - 1].Free; 175 while ListViewRecords.Columns.Count < Table.Fields.Count do 176 ListViewRecords.Columns.Add; 177 for I := 0 to Table.Fields.Count - 1 do begin 178 ListViewRecords.Columns[I].Caption := Table.Fields[I].TextBefore; 179 ListViewRecords.Columns[I].Width := 200; 180 end; 181 finally 182 ListViewRecords.Columns.EndUpdate; 162 183 end; 163 ListViewRecords.Columns.EndUpdate;164 184 165 185 ListViewRecords.Items.Count := Table.Records.Count; -
trunk/Forms/UFormTables.pas
r28 r29 73 73 with TTable(FTables[Item.Index]) do begin 74 74 Item.Caption := Caption; 75 Item.SubItems.Add(IntToStr(RecordsCount) + ' ' + IntToStr(Fields.Count));75 Item.SubItems.Add(IntToStr(RecordsCount)); 76 76 Item.Data := FTables[Item.Index]; 77 77 end -
trunk/UDatabase.pas
r28 r29 4 4 5 5 uses 6 Classes, SysUtils, ExtCtrls, dialogs, USqlDatabase, URegistry, UGenerics,6 Classes, SysUtils, ExtCtrls, Dialogs, USqlDatabase, URegistry, UGenerics, 7 7 Generics.Collections; 8 8 … … 76 76 procedure Assign(Source: TFields); 77 77 function AddNew(Name: string; DataType: TDataType): TField; 78 procedure Load; 78 79 end; 79 80 … … 81 82 82 83 TRecord = class 83 Parent: TTable;84 Table: TTable; 84 85 Values: TValues; 85 86 function Match(AValues: TStrings): Boolean; … … 93 94 94 95 TRecords = class(TObjectList<TRecord>) 95 Parent: TTable;96 Table: TTable; 96 97 procedure Assign(Source: TRecords); 97 98 function SearchByValue(Name, Value: string): TRecord; 98 99 function SearchByValues(Values: TStrings): TRecord; 99 100 function AddNew: TRecord; 101 procedure Load; 100 102 end; 101 103 … … 110 112 DbClient: TDbClient; 111 113 RecordsCount: Integer; 112 procedure LoadRecords;113 114 procedure LoadRecordsCount; 114 115 procedure Assign(Source: TTable); … … 594 595 begin 595 596 Result := nil; 596 Field := Parent.Fields.SearchByName(Name);597 Field := Table.Fields.SearchByName(Name); 597 598 if Assigned(Field) then begin 598 FieldIndex := Parent.Fields.IndexOf(Field);599 FieldIndex := Table.Fields.IndexOf(Field); 599 600 I := 0; 600 601 while (I < Count) and (Items[I].Values[FieldIndex].GetString <> Value) do Inc(I); … … 618 619 begin 619 620 Result := TRecord.Create; 620 Result. Parent := Parent;621 Result.Table := Table; 621 622 Result.InitValues; 622 623 Add(Result); 624 end; 625 626 procedure TRecords.Load; 627 var 628 DbRows: TDbRows; 629 I: Integer; 630 F: Integer; 631 NewRecord: TRecord; 632 NewValue: TValue; 633 Value: string; 634 begin 635 Clear; 636 DbRows := TDbRows.Create; 637 try 638 Table.DbClient.Query('SELECT * FROM ' + Table.Name, DbRows); 639 for I := 0 to DbRows.Count - 1 do begin 640 NewRecord := TRecord.Create; 641 for F := 0 to Table.Fields.Count - 1 do begin 642 NewValue := Table.Fields[F].GetValueClass.Create; 643 if DbRows[I].TryGetValue(Table.Fields[F].Name, Value) then begin 644 NewValue.SetString(Value); 645 NewRecord.Values.Add(NewValue); 646 end else begin 647 //NewValue.SetString(''); 648 NewRecord.Values.Add(NewValue); 649 end; 650 end; 651 Add(NewRecord); 652 end; 653 finally 654 DbRows.Free; 655 end; 623 656 end; 624 657 … … 658 691 end; 659 692 693 procedure TFields.Load; 694 var 695 DbRows: TDbRows; 696 NewField: TField; 697 I: Integer; 698 begin 699 Clear; 700 DbRows := TDbRows.Create; 701 try 702 Table.DbClient.Query('SELECT * FROM ModelField WHERE Model = ' + Table.Name, DbRows); 703 for I := 0 to DbRows.Count - 1 do begin 704 NewField := AddNew(DbRows[I].Items['Name'], 705 Table.DbClient.DbManager.DataTypes.SearchByName(DbRows[I].Items['DataType'])); 706 NewField.TextBefore := DbRows[I].Items['Caption']; 707 end; 708 finally 709 DbRows.Free; 710 end; 711 end; 712 660 713 { TRecord } 661 714 … … 668 721 Result := True; 669 722 for I := 0 to aValues.Count - 1 do begin 670 Field := Parent.Fields.SearchByName(AValues.Names[I]);671 FieldIndex := Parent.Fields.IndexOf(Field);723 Field := Table.Fields.SearchByName(AValues.Names[I]); 724 FieldIndex := Table.Fields.IndexOf(Field); 672 725 if Assigned(Field) then begin 673 726 if Values[FieldIndex].GetString <> AValues.ValueFromIndex[I] then begin … … 684 737 begin 685 738 Values.Clear; 686 for I := 0 to Parent.Fields.Count - 1 do687 Values.Add( Parent.Fields[I].GetValueClass.Create);739 for I := 0 to Table.Fields.Count - 1 do 740 Values.Add(Table.Fields[I].GetValueClass.Create); 688 741 end; 689 742 … … 781 834 end; 782 835 783 { TTable }784 785 procedure TTable.LoadRecords;786 var787 DbRows: TDbRows;788 I: Integer;789 F: Integer;790 NewRecord: TRecord;791 NewValue: TValue;792 Value: string;793 begin794 Records.Clear;795 DbRows := TDbRows.Create;796 try797 DbClient.Query('SELECT * FROM ' + Name, DbRows);798 for I := 0 to DbRows.Count - 1 do begin799 NewRecord := TRecord.Create;800 for F := 0 to Fields.Count - 1 do begin801 NewValue := Fields[F].GetValueClass.Create;802 if DbRows[I].TryGetValue(Fields[F].Name, Value) then begin803 NewValue.SetString(Value);804 NewRecord.Values.Add(NewValue);805 end else begin806 //NewValue.SetString('');807 NewRecord.Values.Add(NewValue);808 end;809 end;810 Records.Add(NewRecord);811 end;812 finally813 DbRows.Free;814 end;815 end;816 817 836 procedure TTable.LoadRecordsCount; 818 837 var … … 842 861 begin 843 862 Records := TRecords.Create; 844 Records. Parent:= Self;863 Records.Table := Self; 845 864 Fields := TFields.Create; 846 865 Fields.Table := Self;
Note:
See TracChangeset
for help on using the changeset viewer.