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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 20:21   #1
PaVeL111
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 18
По умолчанию DBGrid и Access

Доброе время суток, имеется БД в Access и через DBGrid, который связан с TDataSource > TADOTable > TADOConnection, вывожу таблицу которую выберу в TADOTable.TableName, но это работает пока я сам не выберу, а программным кодом через ComboBox не получается.
Пытался сделать 0: tbl1.TableName:='Студент';
но попал на ошибку

Помогите пожалуйста решить проблему, заранее спасибо.
PaVeL111 вне форума Ответить с цитированием
Старый 25.04.2011, 23:27   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Все же, перед тем как манипулировать с ADOTable закрыть бы его не мешало:
Код:
  ADOTable1.Close;
Текст ошибки об этом недвусмысленно намекает.
Прик вне форума Ответить с цитированием
Старый 26.04.2011, 19:09   #3
PaVeL111
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 18
По умолчанию

Спасибо большое!
Но тут возникла следующая заминка...
Когда я выбираю в поле ДБГрид размеры каждой ячейки и уменьшаю их до 80 из 1500 то в рабочей программе они остаются размером 1500 а не 80 как я выставил, и ещё, почему при смене таблицы размеры ячеек автоматически меняются?
Нельзя сделать как-то стандартом для каждой таблицы?
Заранее спасибо.
PaVeL111 вне форума Ответить с цитированием
Старый 26.04.2011, 19:57   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

При переподключении к другой таблице грида (DBGrid) автоматом выставляет ширину колонок, которая рассчитывается в зависимости от типа полей, содержащихся в таблице БД.
Применяя один компонент DBGrid для разных таблиц БД невозможно выставить ширину колонок какие хочется.
Если только разные таблицы не содержат одинаковое количество полей, одинаковые типы и одинаковое расположение полей (их порядок).

По идее так никто не делает. Один компонент DBGrid используют для одного набора данных из БД.
Тогда другое дело.
В редакторе колонок DBGrid можно установить нужную ширину колонок, а так же изменить некоторые свойства, которые устанавливаются по умолчанию, если колонки в редакторе не были созданы. Редактор вызывается двойным щелчком на компоненте DBGrid.

В этом редакторе создаются колонки. В свойствах вновь созданной колонки указывается поле таблицы БД (или запроса), которое она будет отображать. Ширина колонки. Здесь же можно изменить заголовок и пр.

Последний раз редактировалось Прик; 26.04.2011 в 20:04.
Прик вне форума Ответить с цитированием
Старый 26.04.2011, 20:16   #5
PaVeL111
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 18
По умолчанию

Поигрался я с тем редактором, он работает только для одной таблицы(запроса), фигово одним словом...
Выходом из этого способа, это создать столько Гридов сколько будет батлиц и забросов, а потом только играться с визиблом?
Может вы знаете какой-то другой способ? Поделитесь пожалуйста.
PaVeL111 вне форума Ответить с цитированием
Старый 26.04.2011, 20:37   #6
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Другой способ только один.
При подключении к очередной таблице удалять созданные колонки и заново их создавать (опираясь на поля подключаемой таблицы БД), присваивая им нужные параметры (свойства). Все это программно, во время ее работы.
Прик вне форума Ответить с цитированием
Старый 26.04.2011, 21:51   #7
PaVeL111
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 18
По умолчанию

dbgrd1.Columns.destroy но чет таблица как стояла так и стоит....
Пожалуйста наведите пример как программно удалить предыдущую таблицу и как обращаться к новым индексам колонок, и как их заводить новые.
PaVeL111 вне форума Ответить с цитированием
Старый 26.04.2011, 21:51   #8
PaVeL111
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 18
По умолчанию

dbgrd1.Columns.destroy но чет таблица как стояла так и стоит....
Пожалуйста наведите пример как программно удалить предыдущую таблицу и как обращаться к новым индексам колонок, и как их заводить новые.
PaVeL111 вне форума Ответить с цитированием
Старый 26.04.2011, 22:28   #9
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Предыдущую таблицу удалять не надо (если речь о DBGrid). dataset, с которым она соединена переключают на другую таблицу БД (как показано в первом посте), а этого достаточно чтобы грида показывала данные из другой таблицы.
Код:
var
  I : Integer;
  C : TColumn;
begin
  tbl1.DisableControls;
  tbl1.Close;
  tbl1.TableName:='Студент';
  DBGrid1.Columns.Clear;
  for I := 0 to tbl1.Fields.Count-1 do begin
    C := DBGrid1.Columns.Add;
    C.FieldName := tbl1.Fields[I].Name;
    C.Width := 100; //или сколько надо
    C.Title.Caption := tbl1.Fields[I].Name; //или свой заголовок колонки
    C.Title.Alignment := taCenter;
//    ...
  end;
  tbl1.Open;
  tbl1.EnableControls;
end;
К колонкам по индексу обращаются так: tbl.Columns[I]. Только это уже не потребуется.

Последний раз редактировалось Прик; 26.04.2011 в 22:35.
Прик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение даннах из dbgrid в dbgrid Hobbit_88 БД в Delphi 7 10.06.2009 13:33
как Microsoft Access(ADOConnection ADOTable DataSource DBGrid) переделать под mySQL? Levsha100 БД в Delphi 6 23.05.2009 19:48
перенос данных из DBGrid в DBGrid KingSize БД в Delphi 17 24.04.2009 09:30
Как добавлять данные в таблицу выведенную из ACCESS в DBGrid (Delphi ADO) Ce4kok БД в Delphi 26 26.01.2009 20:35