Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как записать массив в поле ClientDataSet? (http://forum.oszone.net/showthread.php?t=120934)

ALI 24-10-2008 17:47 932653

Как записать массив в поле ClientDataSet?
 
Доброго времени суток, господа! У меня есть маленькая проблемка. Я создаю динамически поля в ClientDataSet. И встает необходимость сделать кое-какие поля массивного типа (ftArray), чтобы в дальнейшем туда загонять одномерные массивы. Суть вопроса такова: как записывать массив в конкретную "ячейку"?

Код:

  for i := 1 to number do                        // Создаю поле
    begin
      with CDS.FieldDefs.AddFieldDef do
        begin
          DataType := ftArray;
          Name := 'Dissection ' + IntToStr(i);
        end;
    end;
 
  ...



  with CDS do                                    // Как вот здесь записать массив qi[i] в поле конкретной записи?
    begin
      Append;
      FieldByName('Dissection 1').Value := qi[i];    //????????????????????
      Post;
    end;


detrin 27-10-2008 02:01 934556

Если я правильно понял проблему, то должно выглядеть что-то типо такого:
Код:

...
for i := 1 to number do                       
    begin
      str:='Dissection ' + IntToStr(i);
      with CDS do                                   
          begin
              Append;
              FieldByName(str).Value := qi[i]; 
              Post;
          end;
  end;


ALI 27-10-2008 18:25 935192

Если бы все было так просто, то я бы здесь не задавал вопрос. Вот что мне выдает компилятор при попытке выполнить программу c Вашим кодом:
Цитата:

Debugger Exception Notification:
Project Groups.exe raised exception class EDatabaseError with message: 'Invalid value for field "Dissection 1". Process stopped. Use Step or Run to continue.
Кстати говоря, ранее я уже пытался сделать тоже самое. :)

detrin 30-10-2008 18:31 938274

В массиве qi какой тип данных?
Попробуйте изменить тип данных в этой строке - "DataType := ftArray;" на тот что хранится в массиве.

ALI 01-11-2008 11:24 939753

А я уже по-другому решил проблему: написал - "DataType := ftString", а дальше массив перевел в строку, после чего записал строку в "ячейку".


Время: 22:36.

Время: 22:36.
© OSzone.net 2001-