Главная страница
    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-1317290569
я
2011-09-29 14:02
2012.01.08
ClientDataSet как записать произвольный массив в базу данных (cds


15-1316204983
Юрий
2011-09-17 00:29
2012.01.08
С днем рождения ! 17 сентября 2011 суббота


1-1279206108
я_только_учусь
2010-07-15 19:01
2012.01.08
Как создать процесс c hardware breakpoint?


15-1316550580
Юрий
2011-09-21 00:29
2012.01.08
С днем рождения ! 21 сентября 2011 среда


2-1317495602
Leon-Z
2011-10-01 23:00
2012.01.08
Соединение с БД MySQL.





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