Войти

Показать полную графическую версию : Как записать массив в поле ClientDataSet?


ALI
24-10-2008, 17:47
Доброго времени суток, господа! У меня есть маленькая проблемка. Я создаю динамически поля в 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
Если я правильно понял проблему, то должно выглядеть что-то типо такого:

...
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
Если бы все было так просто, то я бы здесь не задавал вопрос. Вот что мне выдает компилятор при попытке выполнить программу 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
В массиве qi какой тип данных?
Попробуйте изменить тип данных в этой строке - "DataType := ftArray;" на тот что хранится в массиве.

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




© OSzone.net 2001-2012