Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Вниз

Длина поля 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 1.098 c
1-1278075174
ifmomax
2010-07-02 16:52
2012.01.01
Windows-service.Некорректное чтение бинарного файла.


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


1-1278308829
HikTronic
2010-07-05 09:47
2012.01.01
формы, потоки и TWebBrowser


1-1279025385
antsa
2010-07-13 16:49
2012.01.01
как получит PID процесса ntvdm.exe


3-1269587791
12
2010-03-26 10:16
2012.01.01
Как бы половчее сделать Аудит. Не триггером.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский