Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.05.2010, 21:54
ainagul ainagul вне форума
Прохожий
 
Регистрация: 02.05.2010
Сообщения: 5
Репутация: 10
Сообщение из DBGrid в динамический массив

Доброго времени суток всем!
Увы, не могу найти ответа на свой вопрос, сколь бы простым он ни казался.
Есть многострочно-многоколоночный, и при этом ещё и невидимый DBGrid. Как из одной из его колонок выдернуть данные в динамический массив?
Уточняю вопрос:
DBGrid на три колонки отображает постепенно заполняемую базу данных.
Нужно из одной из колонок типа autoincrement перенести данные в Ar: array of integer; для последующей работы с этим массивом. Данный DBGrid отображает данные подчинённой таблицы, поэтому просто взять цифры (напр. подсчитав кол-во записей и добавляя в массив циклом) я не могу, хоть поле и автоинкрементное.
Ответить с цитированием
  #2  
Старый 02.05.2010, 21:58
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Я основного не понял. Нафик нужен скрытый DBGrid? Что мешает брать данные напрямую из источника?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 02.05.2010, 22:03
ainagul ainagul вне форума
Прохожий
 
Регистрация: 02.05.2010
Сообщения: 5
Репутация: 10
По умолчанию

Конечный пользователь не должен видеть этот грид. Для него оно инвизибл. Админ, который редактирует БД - может, а вот пользователю это вредно. Там свои заморочки.
Ответить с цитированием
  #4  
Старый 02.05.2010, 22:18
Аватар для Bars1992
Bars1992 Bars1992 вне форума
Активный
 
Регистрация: 24.04.2010
Адрес: Украина, Кременчуг
Сообщения: 249
Репутация: 22
По умолчанию

Страдалецъ наверно он клиента пишет или чтото в этом роде

Сори з DBgrid мало работал ничем помочь не могу
__________________
Не твори зла, и жизнь повернется к тебе передом
Ответить с цитированием
  #5  
Старый 02.05.2010, 22:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Сообщение от ainagul
Конечный пользователь не должен видеть этот грид. Для него оно инвизибл. Админ, который редактирует БД - может, а вот пользователю это вредно. Там свои заморочки.
Видит/не видит. Разницы никакой, зачем пытаться брать данные из грида, когда можно сразу брать из источника? Что у вас такого грид делает с данными, что их не взять из источника?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 02.05.2010, 22:57
ainagul ainagul вне форума
Прохожий
 
Регистрация: 02.05.2010
Сообщения: 5
Репутация: 10
По умолчанию

мож я и не прав, спору нет.
есть "код дисциплины", есть "код вопроса", есть "вопрос"
нужно выдернуть:
- либо коды вопросов по конкретной дисциплине в динамический массив;
- либо случайный код по конкретной дисциплине в переменную.
Но:
- во втором случае нужно иметь дополнительное поле флага чтоб знать, задавали уже этот вопрос или же нет, а если в массив - удалили потом код из массива и больше он нас не волнует;
-опять же во втором случае определить, какую дисциплину выбрал пользователь ("код дисциплины", "дисциплина") и потом учитывать её каждый раз, когда вопрос рандомно выбирается и выводится на экран - вроде как более хлопотно.
ЗЫ: Код использовали в запросе на выбор вопроса, вопрос вывели в лэйбл и удили из массива код
Ответить с цитированием
  #7  
Старый 03.05.2010, 11:21
ainagul ainagul вне форума
Прохожий
 
Регистрация: 02.05.2010
Сообщения: 5
Репутация: 10
По умолчанию

Или скажите хотя бы почему не работает:

with TStringGrid(DBGrid1) do
begin
EE:=Cells[1, 1];
end;

Ведь если взять левый стринггрид EE:=StringGrid1.Cells[1, 1];, то всё в переменную прекрасно передаётся

Последний раз редактировалось ainagul, 03.05.2010 в 11:23.
Ответить с цитированием
  #8  
Старый 03.05.2010, 13:59
ainagul ainagul вне форума
Прохожий
 
Регистрация: 02.05.2010
Сообщения: 5
Репутация: 10
По умолчанию

Сам уже решил вопрос... Таким вот макаром (фрагмент кода, мо кому надо будет):
Код:
i:=Form2.Table2.RecordCount; //общее кол-во записей
j:=0; //индекс элемента массива
RecNum:=1; //номер записи в таблице БД
while RecNum<=i do //ставил RecNum:=0; whileRecNum<i - некорректно
  begin
  Form2.Table2.RecNo:=RecNum;
  SetLength(qnumarray, i); //задаём длину динамического массива с нужными данными 
  qnumarray[j]:=Form2.Table2.FieldByName('Код вопроса').AsInteger;
  j:=j+1;
  RecNum:=RecNum+1;
  end;
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 03.05.2010 в 15:08.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025