Главная страница
    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.004 c
15-1316925282
РВА
2011-09-25 08:34
2012.01.08
Подскажите по железу


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


2-1310979425
D_2010
2011-07-18 12:57
2012.01.08
Как обработать приход нескольких одинаковых TMessage как одно?


15-1316107383
Kerk
2011-09-15 21:23
2012.01.08
Вот так Google продвигает свой поиск в России


2-1317359287
Natalie
2011-09-30 09:08
2012.01.08
Как отобразить в Memo тест длинною 4000 символов?





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