Форум: "Начинающим";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];
ВнизClientDataSet как записать произвольный массив в базу данных (cds Найти похожие ветки
← →
я (2011-09-29 14:02) [0]Собственно Сабж. Акромя всего прочего, если использовать визуальные компоненты, то поле с типом ftArray создать нельзя, это даж не учитывая того, что если бы и можно было бы, то все равно не понятно как с ним работать.
← →
OW © (2011-09-29 14:21) [1]что есть БД в этом случае?
← →
Медвежонок Пятачок © (2011-09-29 14:39) [2]зачем тебе поле, с которым тебе все равно непонятно как работать?
← →
я (2011-09-29 14:41) [3]БД просто в файле CDS хранится. в одном поле нужно хранить массив структур, в структуре 2 параметра с типом Integer. как то так. Если в визуальном ClientDataSet создаешь поле с типом ftArray то при нажатии Create DataSet вылазит ошибка, Invalid Parametr....
← →
я (2011-09-29 14:41) [4]
> зачем тебе поле, с которым тебе все равно непонятно как
> работать?
а мне нужно и поле и понятие как с ним работать.
← →
Медвежонок Пятачок © (2011-09-29 14:43) [5]нужно хранить массив структур
ок, нужно.
а зачем для этого поле ftArray?
только потому, что массив и ftArray похожи по смыслу?
← →
я (2011-09-29 14:49) [6]
> только потому, что массив и ftArray похожи по смыслу?
ну как бэ раздел для начинающих, как бэ намекает. Так что если есть варианты я готов их послушать. Размер массива каждый раз разный. Есть идея сделать подчиненную таблицу, только она мне что-то не очень нравится.
← →
Медвежонок Пятачок © (2011-09-29 14:53) [7]массив структур, в структуре 2 параметра с типом Integer
<item par1="1" par2="2"/>
<item par1="3" par2="4"/>
...
<item par1="x" par2="y"/>
ftString
← →
OW © (2011-09-29 14:58) [8]function TForm1.CreateCDS(A: array of string; B: array of TFieldType): TClientDataSet;
var
CDS: TClientDataSet;
i: integer;
begin
CDS := TClientDataSet.Create(nil);
CDS.FieldDefs.BeginUpdate;
for i := Low(A) to High(A) do
begin
CDS.FieldDefs.Add(A[i], B[i]);
end;
CDS.FieldDefs.EndUpdate;
CDS.CreateDataSet;
Result := CDS;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
a: TClientDataSet;
i: integer;
begin
a := CreateCDS(["field1","field2"],[ftInteger, ftInteger]);
for i := 0 to 5 do
begin
a.Append;
a.Fields[0].AsInteger := (i+1)*2;
a.Fields[1].AsInteger := (i+1)*3;
a.Post;
end;
a.SaveToFile("c:\11.xml");
end;
← →
Медвежонок Пятачок © (2011-09-29 15:01) [9].....и в следущую пятницу, когда уже будет стопитсот записей, окажется, что параметров надо не два, а десять
← →
я (2011-09-29 15:11) [10]хм, вообщем то идея возникла в связи с тем, что изначально в базе хранились BMP файлы. Но во первых мне не нужны все пиксели оттуда, а только какая то часть. А во вторых размер базы при хранении бмп достигает потрясающих размеров, даж не смотря на то, что сами бмп и близко столько не весят. Правда скорость чтения и расшифровки более критична, чем размер все таки. Если хранить в строке, то придется расшифровывать строку сначала, и еще вопрос, что быстрее пробежаться по бмп или по такой строке. может все таки хранить бмп (небольшие картинки...)
← →
Медвежонок Пятачок © (2011-09-29 15:16) [11]ты какой-то странный.
хочешь поле, с которым непонятно как работать.
хранишь бмп, в которых "нужны не все пиксели"
жить попроще не пробовал?
← →
OW © (2011-09-29 15:23) [12]xml вообще не для хранения или чего-то еще - для передачи, отображения
Хоть что говорите.
Сделали файло, передали
for i := 0 to 5 do
begin
a.Append;
for j:= 0 to countparam -1 do //или так как-то , короче, думать надо далее
a.Fields[j].AsInteger := (i+1)*2; // asЧто - тоже думать
a.Post;
end;
--------
> я (29.09.11 15:11) [10]
если blob хранить, плюс еще поля, типа основные характеристики картинки
там, размеры, цветность еще чего, что надо
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c