Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2013, 02:27   #1
rafffkaaa
Пользователь
 
Регистрация: 04.01.2012
Сообщений: 26
По умолчанию Запись данных из базы в массив

Есть БД в которой 3 столбца и n строк.
Как считать значения первых двух столбцов в двумерный массив?
Бд dbf. Подключаюсь через ADO. Вывожу в dbgrid.
p.s первый день с бд(

Последний раз редактировалось rafffkaaa; 10.03.2013 в 03:26.
rafffkaaa вне форума Ответить с цитированием
Старый 10.03.2013, 09:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в цикле можно. примерно так (допустим, что массив создан и имеет нужную размерность):
Код:
i := 0;
ADOQuery1.First;
while not ADOQuery1.Eof do begin
    Mas[i,0] := ADOQuery1.Fields[0].Value; {первый столбец}
    Mas[i,1] := ADOQuery1.Fields[1].Value; {второй столбец}
    inc(i);  {увеличили индекс в массиве}
    ADOQuery1.Next;  {перешли к следующей записи}
end;
к столбцам можно обращаться и по имени:
Код:
    Mas[i,0] := ADOQuery1.FieldByName('Stolb1Name').Value; {первый столбец}
    Mas[i,1] := ADOQuery1.FieldByName('Stolbec2')..Value; {второй столбец}

p.s. только есть подозрение, что Вы пытаетесь сделать то, что Вам не нужно!
Пересмотрите свой алгоритм, скорее всего Вам массив НЕ НУЖЕН,
то, что Вы хотите сделать - это дополнительные расходы памяти и потери времени...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.03.2013, 14:53   #3
rafffkaaa
Пользователь
 
Регистрация: 04.01.2012
Сообщений: 26
По умолчанию

Спасибо, разобрался сам.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в цикле можно. примерно так (допустим, что массив создан и имеет нужную размерность):
Код:
i := 0;
ADOQuery1.First;
while not ADOQuery1.Eof do begin
    Mas[i,0] := ADOQuery1.Fields[0].Value; {первый столбец}
    Mas[i,1] := ADOQuery1.Fields[1].Value; {второй столбец}
    inc(i);  {увеличили индекс в массиве}
    ADOQuery1.Next;  {перешли к следующей записи}
end;
к столбцам можно обращаться и по имени:
Код:
    Mas[i,0] := ADOQuery1.FieldByName('Stolb1Name').Value; {первый столбец}
    Mas[i,1] := ADOQuery1.FieldByName('Stolbec2')..Value; {второй столбец}

p.s. только есть подозрение, что Вы пытаетесь сделать то, что Вам не нужно!
Пересмотрите свой алгоритм, скорее всего Вам массив НЕ НУЖЕН,
то, что Вы хотите сделать - это дополнительные расходы памяти и потери времени...
Почти так и сделал.

С массивами просто привычнее работать.
Если понадобится, то потом можно будет и оптимизировать.

Последний раз редактировалось rafffkaaa; 10.03.2013 в 15:00.
rafffkaaa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись данных массив<->Excel andbrother Microsoft Office Excel 30 13.12.2013 13:01
Запись содержимого базы данных в текстовый файл erebakan БД в Delphi 1 03.04.2012 15:09
чтение данных из файла и запись в в массив.как чтобы до конца читал? Fundorin Общие вопросы C/C++ 0 15.11.2011 18:10
запись данных в массив + цикл ассемблерной вставкой ahz4et Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 16.01.2011 11:10
Запись в массив данных бинарного дерева m9yt Общие вопросы C/C++ 2 14.03.2010 12:49