![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Помогите правильно записать 3-х мерный массив в таблицу БД...
Итак есть массив var store:array[1..L,1..N,1..M] of Integer; Есть база и таблица такого типа: (1 основное поле - дата (день), 2 поле для хранения этого массива) ... Код:
with FieldDefs do begin Add('date',ftDate,0, True); // date Add('tab',ftBytes, SizeOf(store)*4, False); // array data end;[/b] Код:
with Form1.dt2 do begin Insert; FieldByName('date').AsDateTime := Form1.dtp1.date ; // date FieldByName('tab').Value[1] := store[1,1,1]; //array Post; end Как можно правильно записать массив (желательно без цикла, одним махом весь массив в БД) ??? Я также пробовал менять типа поля на ftARRAY но не знаю как с ним работать: Код:
...FieldByName('tab').AsArrayof Integer (??) := store[]; Последний раз редактировалось Admin, 30.05.2013 в 09:50. |
#2
|
||||
|
||||
![]() А нафик такой изврат? В плоскую структуру 3-х мерку запихивать?
Но пускай так надо. У вас тогда каждая ячейка должна содержать не элемент, а одномерный массив элементов, а таким макаром: Код:
FieldByName('tab').Value[1] := store[1,1,1] вы получаете плоскую 2-мерную табличку. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Цитата:
FieldByName('tab').Value := store; ? да и как правильно все таки задать поле для моего массива? LMN:=L*M*N; // размер массива в байтах Add('tab',ftBytes, LMN*4, False); // 4 байта на INTEGER или так? Add('tab',ftArray(?), LMN*4, False); // 4 байта на INTEGER |
#4
|
||||
|
||||
![]() У вас целочисленные данные. Создайте поле типа Blob и запихивайте туда третью размерность потоком. Считывайте так-же.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
![]() Цитата:
А можно пример как мой массив запихнуть в поток? Попробовал Stream := TMemoryStream.Create; BlobStream:= TABSBlobStream(CreateBlobStream(FieldByName('tab') ,bmWrite)); Но одни ошибки... ![]() |
#6
|
|||
|
|||
![]() Цитата:
Я бы не спрашивал, но в интернете нету примеров Вернее там миллиард копий дебильного примера в котором Блоп записывается в файловый поток и читается оттуда. А мне это совершенно не надо, у меня единая БД - 1 файл. А вот как 3-х мерный массив засунуть в поток(память) и оттуда в Блоб в таблицу - таких примеров нигде не нашел... ![]() |