Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.01;
Скачать: CL | DM;

Вниз

Длина поля String в ClientDataSet   Найти похожие ветки 

 
pavor   (2011-09-22 13:28) [0]

Добрый день,

пишется программа, в которой для формирования списка используется ClientDataSet в памяти. Все было в порядке, но возникают проблемы, когда добавляются строки больше определенного числа символов (оно всегда одно и то же: 64 символа и не зависит от установленного размера поля).
Проверял, все строковые значения передаются в нормальном виде, а после записи в базу "портятся".

Вот функция, которая формирует запись:

procedure StoreToList (Drw:TDItem);
begin frmDrwLstModule.DrwLstClientDataSet.Append;
 frmDrwLstModule.DClientDataSet.FieldByName("Number").AsString:=StripPerformance( Drw.Number);
frmDrwLstModule.DClientDataSet.FieldByName("Designation").AsString:=Drw.Designat ion;
frmDrwLstModule.DClientDataSet.FieldByName("SheetsNum").AsInteger:=Drw.SheetsNum ;
frmDrwLstModule.DClientDataSet.FieldByName("AssyNum").AsInteger:=Drw.AssyNum;
frmDrwLstModule.DClientDataSet.FieldByName("IsSpec").AsBoolean:=Drw.IsSpec;
frmDrwLstModule.DClientDataSet.Post;
end;


Может, вопрос уже избитый, подскажите, в чем может быть дело?


 
Ega23 ©   (2011-09-22 14:03) [1]


>  в чем может быть дело?


Не знаю, у меня всё отлично работает:

unit uMain;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DB, DBClient, StdCtrls;

type
 TForm22 = class(TForm)
   CDS: TClientDataSet;
   Memo1: TMemo;
   Edit1: TEdit;
   Button1: TButton;
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   procedure RefreshMemo;
 public
   { Public declarations }
 end;

var
 Form22: TForm22;

implementation

{$R *.dfm}

//*****************************************************************************

procedure TForm22.Button1Click(Sender: TObject);
begin
 CDS.Append;
 try
   CDS.FieldByName("TestStrField").AsString := Edit1.Text;
 finally
   CDS.Post;
 end;
 RefreshMemo;
end;

//*****************************************************************************

procedure TForm22.FormCreate(Sender: TObject);
begin
 with CDS.FieldDefs.AddFieldDef do
 begin
   DataType := ftString;
   Name := "TestStrField";
   Size:=255;
 end;
 CDS.CreateDataSet;
 RefreshMemo;
end;

//*****************************************************************************

procedure TForm22.RefreshMemo;
var
 s: string;
begin
 with Memo1 do
 begin
   Clear;
   CDS.First;
   while not CDS.Eof do
     try
       s := CDS.FieldByName("TestStrField").AsString;
       Lines.Add(IntToStr(Length(s)) +#9 + s);
     finally
       CDS.Next;
     end;
 end;
end;

//*****************************************************************************

end.


 
pavor   (2011-09-23 07:04) [2]

Заработало.
Ega23, ваш пример навел меня на мысль. У меня ClientDataSet настраивается в design time и почему-то он не реагирует на изменения размера полей типа String, видимо, в самом начале было задано 64, после я менял это значение, но эффекта не было (может, не все операции сделал, конечно).

Короче говоря - заработало нормально только тогда, когда имеющийся ClientDataSet "грохнул" и создал заново с нужными параметрами.

Но это же не дело. У меня полей было меньше десяти, а если бы штук 50?
Скорее всего, просто чего-то не знаю.


 
Ega23 ©   (2011-09-23 07:40) [3]


>  и почему-то он не реагирует на изменения размера полей
> типа String

CreateDataSet


 
pavor   (2011-09-23 07:43) [4]

Так делал, Clear Data сначала, потом Create Data Set


 
Ega23 ©   (2011-09-23 09:55) [5]


> Так делал, Clear Data сначала, потом Create Data Set


Код показывай.



Страницы: 1 вся ветка

Текущий архив: 2012.01.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
1-1279133084
Дмитрий Белькевич
2010-07-14 22:44
2012.01.01
Как передать параметры при инсталляции сервиса


4-1253602770
Brick
2009-09-22 10:59
2012.01.01
Сетевой каталог и сервис


15-1315203721
pasha_golub
2011-09-05 10:22
2012.01.01
Ода молодому поколению


15-1316118584
Юрий
2011-09-16 00:29
2012.01.01
С днем рождения ! 16 сентября 2011 пятница


4-1253616407
Xmen
2009-09-22 14:46
2012.01.01
ShellListView