powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создать поле в открытом TClientDataset ?
8 сообщений из 33, страница 2 из 2
Создать поле в открытом TClientDataset ?
    #35803769
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L

Не все укладывается в эту схему. Считайте это за религию и что не сумел
приготовить :)



А чем пользуетесь?
...
Рейтинг: 0 / 0
Создать поле в открытом TClientDataset ?
    #35803824
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: V.Borzov
> А чем пользуетесь?
>

ADO и IBX в зависимости от СУБД. Хватает. Когда их перестает хватать и ручки
тянутся к средствам кэширования навроде CDS - это первый признак
проктологии.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Создать поле в открытом TClientDataset ?
    #35803987
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот примерный результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
 function  ReadDataSet(DestinationCDS :TClientDataSet;
                     SourceDataSet :TDataSet;
                     AddField_Names:  array   of   string ;
                     AddField_Types : array   of  TFieldType ;
                     AddField_Kinds : array   of  TFieldKind;
                     AddField_Sizes : array   of  Integer
                     ) :Boolean;

 var  iC :Integer;
    k :Integer;
    Field :TField;
 begin 
   iC := High(AddField_Names);
    if  (iC <> High(AddField_Names))
       or  (iC <> High(AddField_Types))
       or  (iC <> High(AddField_Kinds))
    then   raise  Exception.Create('Íåñîîòâåòñòâèå êîëè÷åñòâà ýëåìåíòîâ â ñïèñêàõ');

   DestinationCDS.DisableControls;
    try 
      if  iC>= 0 
      then   begin 
        if   not  SourceDataSet.Active  then  SourceDataSet.Open;

       DestinationCDS.Close;
       DestinationCDS.Fields.Clear;

        with  SourceDataSet  do 
        for  k :=  0   To  FieldCount- 1   do 
        begin 
         Field := TFieldClass(Fields[k].classtype).Create(DestinationCDS.Owner);  //  defaultfieldClasses[SourceDataSet.Fields[k].DAtatype].Create(DestinationCDS.Owner); 
         Field.FieldName := Fields[k].FieldName;
         Field.Size := Fields[k].Size;
         Field.DataSet := destinationcds;
        end ;

        for  k :=  0   To  iC  do 
        begin 
         Field := defaultfieldClasses[addfield_types[k]].Create(DestinationCDS.Owner);
         Field.FieldName := AddField_Names[k];
         Field.FieldKind := addField_kinds[k];
          if  High(addField_Sizes[k]) >= ic
          then  Field.Size := AddField_Sizes[k];

         Field.DAtaset := DestinationCDS;
        end ;

      end ;


     DestinationCDS.data := REadDAtaset(SourceDataset);
    finally 
     DestinationCDS.EnableControls;
    end ;
   Result := True;
 end ;


 function  ReadDataset(SourceDataset :TDataSet) :OleVariant;
 var   dsp : TDatasetProvider;
 begin 
  Result := NULL;

  dsp := TDatasetProvider.Create( nil );
   try 
     sourcedataset.DisableControls;
      try 
        if  sourcedataset.Active  then  sourcedataset.First;  // Åñëè ýòîãî íå ñäåëàòü, òî âîçüìóòñÿ äàííûå ñ òåêóùåé ñòðîêè òîëüêî 
       dsp.DataSet := sourcedataset;
       result := dsp.data;
      finally 
       SourceDataSet.EnableControls;
      end 
    finally 
     dsp.Free;
    end ;
 end ;


---------------------------------


 procedure  TForm1.Button1Click(Sender: TObject);
 var  Field :TField;
 begin 
  Table1.Open;
  ReadDataSet(CDS2,Table1, ['Field2','Field3'],[ftInteger,ftString],[fkInternalCalc,fkCalculated],[ 0 , 100 ]);
 end ;

 procedure  TForm1.CDS2CalcFields(DataSet: TDataSet);
 begin 
  dataset.FieldByName('field2').AsInteger := dataset.recno;
  dataset.FieldByName('field3').AsString := 'Recno = '+IntToStr(dataset.recno);
 end ;



Вроде работает :)
...
Рейтинг: 0 / 0
Создать поле в открытом TClientDataset ?
    #35803991
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.Borzov
Код: plaintext
1.
2.
    then   raise  Exception.Create('Íåñîîòâåòñòâèå êîëè÷åñòâà ýëåìåíòîâ â ñïèñêàõ');




then raise Exception.Create('Несоответствие количества элементов в списках');

Остальное можно не переводить
...
Рейтинг: 0 / 0
Создать поле в открытом TClientDataset ?
    #35803995
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создавая поля не забудьте выставить свойство .Name для полей. Не помню какие, но с этим были проблемы.
...
Рейтинг: 0 / 0
Создать поле в открытом TClientDataset ?
    #35803999
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ньюанс:

Код: plaintext
1.
2.
3.
4.
   ...
   Result := DestinationCDS.Active;  // true; 
 end ;


хоть и бессмысленный, но рука чешется...
...
Рейтинг: 0 / 0
Создать поле в открытом TClientDataset ?
    #35861048
Extender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
 unit  FieldInfo;

 interface 

 uses 
  Windows, Messages, SysUtils, Classes, Db, DbClient;

 type 
  PFieldProps = ^TFieldProps;
  TFieldProps =  record 
    FieldName:  string ;
    ClassType: TFieldClass;
    MemoryStream: TMemoryStream;
    LookUpDataSet: TDataSet;
   end ;

   {New: Add Calculated fields} 
 procedure  AddCalculatedFields(Dataset: TDataSet;  const  FieldsNames,
  FieldsTypes:  array   of   string );
 {New: Assign data and Fields to new structure} 
 {With this function you can add Data Field (not calculated) to client dataset
but this function is slow and heavy} 
 procedure  AssignData(List: TList; Dataset: TClientDataSet);
 {Streams Fields List Clear} 
 procedure  ClearAllFieldsInfo(List: TList);
 {New: Copy Old Data in Modified Dataset} 
 procedure  CopyDatasetData(Source, Target: TDataSet);
 {New: delete an Item from List} 
 procedure  DeleteField(List: TList; index: integer);
 {Get information about Field definition into Dataset and then put into List} 
 procedure  GetAllFieldsInfo(List: TList; DataSet: TDataSet);
 {Get information about one Field and then put into List} 
 procedure  GetFieldInfo(List: TList; Field: TField);
 {New:  get the FieldIndex of Item} 
 function  GetFieldIndex(List: TList; FieldName:  string ): integer;
 {New:  get the FieldName of Item} 
 function  GetFieldName(List: TList; index: integer):  string ;
 {Get information about Field definition into Stream List and then put into Dataset} 
 procedure  SetAllFieldsInfo(List: TList; DataSet: TDataSet);
 {Field Classes register} 
 procedure  RegClasses;
 {Field Classes Unregister} 
 procedure  UnRegClasses;

 implementation 

 uses 
  Variants;

 procedure  AddCalculatedFields(Dataset: TDataSet;  const  FieldsNames,
  FieldsTypes:  array   of   string );
 var 
  List: TList;
  i: integer;
  oField: TField;
  clFieldClass: TFieldClass;
 begin 
   if   not  DataSet.Active  then 
     raise  Exception.Create('I can not create calculated Fields when dataset is closed' + # 13 
      + 'with function AddCalculatedFields')
   else 
   begin 
    List := TList.Create;
    GetAllFieldsInfo(List, DataSet);
     for  i := Low(FieldsNames)  to  High(FieldsNames)  do 
       if   not  Assigned(Dataset.FindField(FieldsNames))  then 
       begin 
        clFieldClass := TFieldClass(GetClass(FieldsTypes[i]));
        oField := clFieldClass.Create(DataSet);
        oField.FieldName := FieldsNames[i];
        oField.Calculated := True;
         if  oField  is  TStringField  then 
          oField.Size :=  100 ;  [i]{!!!} 
        oField.FieldKind := fkInternalCalc;
        GetFieldInfo(List, oField);
        oField.Free;
       end ;
    DataSet.Close;
    SetAllFieldsInfo(List, DataSet);
    ClearAllFieldsInfo(List);
    List.Free;
    DataSet.Open;
   end ;
 end ;

 procedure  AssignData(List: TList; Dataset: TClientDataSet);
 var 
  NewDs: TClientDataSet;
 begin 
  DataSet.DisableControls;
  NewDs := TClientDataSet.Create( nil );
  SetAllFieldsInfo(List, NewDs);
  NewDs.CreateDataSet;
  CopyDatasetData(Dataset, NewDs);
  Dataset.Data := Null;
  SetAllFieldsInfo(List, DataSet);
  Dataset.Data := NewDs.Data;
  NewDs.Data := Null;
  NewDs.Free;
  DataSet.EnableControls;
 end ;

 procedure  ClearAllFieldsInfo(List: TList);
 var 
  i: Integer;
 begin 
   {Free record in each element of list} 
   for  i :=  0   to  List.Count -  1   do 
   begin 
    TFieldProps(List^).MemoryStream.Free;
    TFieldProps(List[i]^).ClassType :=  nil ;
    TFieldProps(List[i]^).LookUpDataSet :=  nil ;
    Dispose(List[i]);
   end ;
   [i]{Clear the List} 
  List.Clear;
 end ;

 procedure  CopyDatasetData(Source, Target: TDataSet);
 type 
  TSourceTargetFields =  array [ 0 .. 1 ]  of  TField;
 var 
  i, index: Integer;
  aFields:  array   of  TSourceTargetFields;
  oField: TField;
 begin 
   if   not  Source.Active  then 
    Source.Active := True;
   if   not  Target.Active  then 
    Target.Active := True;
   for  i :=  0   to  Source.FieldCount -  1   do 
   begin 
    oField := Target.FindField(Source.Fields.FieldName);
     if  oField <>  nil   then 
     begin 
      index := High(aFields) +  1 ;
      SetLength(aFields, index +  1 );
      aFields[index][ 0 ] := Source.Fields[i];
      aFields[index][ 1 ] := oField;
     end ;
   end ;

  Source.First;
   while   not  Source.Eof  do 
   begin 
    Target.Insert;
     for  i :=  0   to  High(aFields)  do 
     begin 
      aFields[i][ 1 ].Value := aFields[i][ 0 ].Value;
     end ;
    Target.Post;
    Source.Next;
   end ;
 end ;

 procedure  DeleteField(List: TList; index: integer);
 begin 
   if  index < List.Count  then 
   begin 
    TFieldProps(List[index]^).MemoryStream.Free;
    TFieldProps(List[index]^).ClassType :=  nil ;
    TFieldProps(List[index]^).LookUpDataSet :=  nil ;
    Dispose(List[index]);
    List.Delete(index);
   end ;
 end ;

 procedure  GetAllFieldsInfo(List: TList; DataSet: TDataSet);
 var 
  i: Integer;
  Field: TField;
 begin 
   for  i :=  0   to  DataSet.Fields.Count -  1   do 
   begin 
    Field := DataSet.Fields[i];
     [i]{Put Field information into list} 
    GetFieldInfo(List, Field)
   end ;
 end ;

 procedure  GetFieldInfo(List: TList; Field: TField);
 var 
  FieldProps: PFieldProps;
  i: integer;
 begin 
  New(FieldProps);

   {FieldName is necesary to compare if exist into the list} 
  FieldProps^.FieldName := Field.FieldName;
  FieldProps^.ClassType := TFieldClass(Field.ClassType);
  FieldProps^.MemoryStream := TMemoryStream.Create;
  FieldProps^.MemoryStream.WriteComponent(Field);
   {LookUpDataSet is necesary because is a pointer and WriteComponent do not keep this information} 
  FieldProps^.LookUpDataSet := Field.LookupDataSet;

   for  i :=  0   to  List.Count -  1   do 
   begin 
     if  TFieldProps(List^).FieldName = FieldProps^.FieldName  then 
     begin 
       [i]{if exist into list then delete it} 
      TFieldProps(List^).MemoryStream.Free;
      TFieldProps(List[i]^).ClassType :=  nil ;
      TFieldProps(List[i]^).LookUpDataSet :=  nil ;
      Dispose(List[i]);
      List.Delete(i);
      Break;
     end ;
   end ;

   [i]{Add information into the list} 
  List.Add(FieldProps);
 end ;

 function  GetFieldIndex(List: TList; FieldName:  string ): integer;
 var 
  i: integer;
 begin 
  result := - 1 ;
   for  i :=  0   to  List.Count -  1   do 
   begin 
     if  AnsiCompareText(PFieldProps(List).FieldName, FieldName) =  0   then 
     begin 
      result := i;
      Break;
     end ;
   end ;
 end ;

 function  GetFieldName(List: TList; index: integer):  string ;
 begin 
   if  index < List.Count  then 
    result := PFieldProps(List[index]).FieldName
   else 
    result := '';
 end ;

 procedure  SetAllFieldsInfo(List: TList; DataSet: TDataSet);
 var 
  i: Integer;
  LocalField: TField;
  FieldClass: TFieldClass;
  SourceInfo: TMemoryStream;
 begin 
   if  DataSet.Active  then 
    DataSet.Active := False;

   [i]{se recorre toda la lista de definiciones de campos} 
  DataSet.Fields.Clear;
  DataSet.FieldDefs.Clear;

   {Add all List Field definition into List to DataSet} 
   for  i :=  0   to  List.Count -  1   do 
   begin 
     {Get Correct Class Type} 
    FieldClass := TFieldProps(List^).ClassType;

     [i]{if Class exists} 
     if  FieldClass <>  nil   then 
     begin 
       {Goto the first position of stream} 
      SourceInfo := TFieldProps(List^).MemoryStream;
      SourceInfo.Seek( 0 , soFromBeginning);

       [i]{Create Field with Dataset} 
      LocalField := FieldClass.Create(DataSet);
       {Set Field information} 
      LocalField := TField(SourceInfo.ReadComponent(LocalField));
       {Assign DataSet to Field} 
      LocalField.DataSet := DataSet;
      LocalField.LookupDataSet := TFieldProps(List^).LookUpDataSet;

       [i]//      if FieldClass=TStringField then LocalField.Size:=100; {!!!} 
     end ;
   end ;
 end ;

 procedure  RegClasses;
 var 
  AFieldClasses:  array [ 0 .. 25 ]  of  TPersistentClass;
 begin 
  AFieldClasses[ 0 ] := TADTField;
  AFieldClasses[ 1 ] := TAggregateField;
  AFieldClasses[ 2 ] := TArrayField;
  AFieldClasses[ 3 ] := TAutoIncField;
  AFieldClasses[ 4 ] := TBCDField;
  AFieldClasses[ 5 ] := TBinaryField;
  AFieldClasses[ 6 ] := TBlobField;
  AFieldClasses[ 7 ] := TBooleanField;
  AFieldClasses[ 8 ] := TBytesField;
  AFieldClasses[ 9 ] := TCurrencyField;
  AFieldClasses[ 10 ] := TDateField;
  AFieldClasses[ 11 ] := TDataSetField;
  AFieldClasses[ 12 ] := TDateTimeField;
  AFieldClasses[ 13 ] := TFloatField;
  AFieldClasses[ 14 ] := TGraphicField;
  AFieldClasses[ 15 ] := TIntegerField;
  AFieldClasses[ 16 ] := TLargeintField;
  AFieldClasses[ 17 ] := TMemoField;
  AFieldClasses[ 18 ] := TNumericField;
  AFieldClasses[ 19 ] := TObjectField;
  AFieldClasses[ 20 ] := TReferenceField;
  AFieldClasses[ 21 ] := TSmallintField;
  AFieldClasses[ 22 ] := TStringField;
  AFieldClasses[ 23 ] := TTimeField;
  AFieldClasses[ 24 ] := TVarBytesField;
  AFieldClasses[ 25 ] := TWordField;
  RegisterClasses(AFieldClasses);
 end ;

 procedure  UnRegClasses;
 var 
  AFieldClasses:  array [ 0 .. 25 ]  of  TPersistentClass;
 begin 
  AFieldClasses[ 0 ] := TADTField;
  AFieldClasses[ 1 ] := TAggregateField;
  AFieldClasses[ 2 ] := TArrayField;
  AFieldClasses[ 3 ] := TAutoIncField;
  AFieldClasses[ 4 ] := TBCDField;
  AFieldClasses[ 5 ] := TBinaryField;
  AFieldClasses[ 6 ] := TBlobField;
  AFieldClasses[ 7 ] := TBooleanField;
  AFieldClasses[ 8 ] := TBytesField;
  AFieldClasses[ 9 ] := TCurrencyField;
  AFieldClasses[ 10 ] := TDateField;
  AFieldClasses[ 11 ] := TDataSetField;
  AFieldClasses[ 12 ] := TDateTimeField;
  AFieldClasses[ 13 ] := TFloatField;
  AFieldClasses[ 14 ] := TGraphicField;
  AFieldClasses[ 15 ] := TIntegerField;
  AFieldClasses[ 16 ] := TLargeintField;
  AFieldClasses[ 17 ] := TMemoField;
  AFieldClasses[ 18 ] := TNumericField;
  AFieldClasses[ 19 ] := TObjectField;
  AFieldClasses[ 20 ] := TReferenceField;
  AFieldClasses[ 21 ] := TSmallintField;
  AFieldClasses[ 22 ] := TStringField;
  AFieldClasses[ 23 ] := TTimeField;
  AFieldClasses[ 24 ] := TVarBytesField;
  AFieldClasses[ 25 ] := TWordField;
  UnRegisterClasses(AFieldClasses);
 end ;

 initialization 
  RegClasses;

 finalization 
  UnRegClasses;
 end .
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Создать поле в открытом TClientDataset ?
    #39761854
BasilCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа так работает:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
begin

  CDS2 := TClientDataSet.Create(nil);
// &#231;&#228;&#229;&#241;&#252; &#228;&#238;&#225;&#224;&#226;&#232;&#242;&#252; &#234;&#238;&#228; &#228;&#238;&#225;&#224;&#226;&#235;&#229;&#237;&#232;&#255; &#228;&#240;&#243;&#227;&#232;&#245; &#239;&#238;&#235;&#229;&#233; ...

 With CDS2 do
  begin
// 1
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'NUMBER_LIST';
    end;
// 2
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftString;
     Size:=20;
     Name := 'NUMBER_SAKAS';
    end;
// 3
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'TIPORASMER_H_OCNOVI';
    end;
// 4
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftString;
     Size:=20;
     Name := 'TOLCHINA_NAPLAVKI';
    end;
// 5
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftString;
     Size:=20;
     Name := 'TIP_LENTI';
    end;
// 6
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'DLINA';
    end;
// 7
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'CHIRINA';
    end;
// 8
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftString;
     Size:=20;
     Name := 'MARKA_OCNOVI';
    end;
// 9
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftString;
     Size:=20;
     Name := 'TIP_MARKA_LENTI';
    end;
// 10
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftDate;
     Name := 'DATA_SADANIJA';
    end;
// 11
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftTime;
     Name := 'VREMJA_SADANIJA';
    end;

// 12
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftMemo;
     Size:=240;
     Name := 'OPICANIE';
    end;

// 13
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftGraphic;
     Size:=240;
     Name := 'FOTO';
    end;
// 14
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'USTANOVL_U';
    end;

// 15
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'USTANOVL_A';
    end;
// 16
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'SYPPORT_N';
    end;
// 17
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'Mode_Napl';
    end;
// 18
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'X_L1';
    end;
// 19
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'A_L';
    end;
// 20
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'B_L';
    end;
// 21
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'Y_L1';
    end;
// 22
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'R_R';
    end;
// 23
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'XY_NUMBER';
    end;
// 24
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := '_ZIKL';
    end;
// 25
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'NOMER_MACHINE';
    end;
// 26
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftInteger;
     Name := 'NOMER_MACHINE_VIPOL';
    end;
// 27
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftGraphic;
     Size:=240;
     Name := 'PLAN_LISTA';
    end;
// 28
   With FieldDefs.AddFieldDef do
    begin
     DataType := ftString;
     Size:=20;
     Name := 'CVET';
    end;


   CreateDataSet;
   SaveToFile('C:\CLX_CLIENT_SERVER\csd\SAKAS2.cds');
  end;

end;


Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создать поле в открытом TClientDataset ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]