Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1317554526
lesstab
2011-10-02 15:22
2012.01.08
DBGrid.SelectedRows.ПередайВонТомуГриду


2-1317631902
alexdn
2011-10-03 12:51
2012.01.08
Разложить строку посимвольно


2-1317272307
Gu
2011-09-29 08:58
2012.01.08
передний план


4-1252985488
defen
2009-09-15 07:31
2012.01.08
серийный номер диска


1-1279098114
packpaul
2010-07-14 13:01
2012.01.08
Реализация null-методов класса в Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский