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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 23:57   #1
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
Вопрос Добавляются лишние столбцы в DBGrid

Добрый день всем.
Есть два файлика БД Acces db1.mdb таблица NewTable и db3.mdb таблица Award (по 4 столбца в каждой). Работаю с ADOQuery. По нажатию той или иной кнопки в DBGrid должна загрузится либо одна либо вторая. По умолчанию грузится db1 и сетка показывает 4 столбца как надо, но каждое переключение добавляет в конец еще 4 пустых столбца. Как от этого избавится.
Код:
procedure TMainForm.FormShow(Sender: TObject);
var BaseName, ConString, sql_line,table:string;
begin

   BaseName:= 'db1.mdb';
   table:='NewTable';
 ConString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+'"'+BaseName+'"';


  DBGrid1.Columns.Add;
  DBGrid1.Columns[0].FieldName:='Деталь';
  DBGrid1.Columns[0].Width:=100;
  DBGrid1.Columns[0].Title.Alignment:=taCenter;
  DBGrid1.Columns.Add;
  DBGrid1.Columns[1].FieldName:='Количество';
  DBGrid1.Columns[1].Width:=100;
  DBGrid1.Columns[1].Alignment:=taRightJustify;
  DBGrid1.Columns[1].Title.Alignment:=taCenter;
  DBGrid1.Columns.Add;
  DBGrid1.Columns[2].FieldName:='Место';
  DBGrid1.Columns[2].Width:=100;
  DBGrid1.Columns[2].Alignment:=taCenter;
  DBGrid1.Columns[2].Title.Alignment:=taCenter;
  DBGrid1.Columns.Add;
  DBGrid1.Columns[3].FieldName:='Цена';
  DBGrid1.Columns[3].Width:=50;
  DBGrid1.Columns[3].Alignment:=taRightJustify;
  DBGrid1.Columns[3].Title.Alignment:=taCenter;


   AdoConnection1.ConnectionString:=ConString;
 AdoConnection1.Open;
 sql_line:='SELECT Деталь, Количество, Место, Цена FROM '+table+' ORDER BY Деталь';
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add(sql_line);
 ADOQuery1.Active:=True;
end;
Код:
procedure TMainForm.AwardCompanyClick(Sender: TObject);
var BaseName, ConString, sql_line,table:string;
begin

ADOQuery1.Edit;
ADOQuery1.Post;

ADOConnection1.Close;
ADOQuery1.Active:=false;

  Tryumf.Checked:=False;
  AwardCompany.Checked:=True;


   BaseName:= 'db3.mdb';
   table:='Award';

 ConString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+'"'+BaseName+'"';


  DBGrid1.Columns.Add;
  DBGrid1.Columns[0].FieldName:='Деталь';
  DBGrid1.Columns[0].Width:=100;
  DBGrid1.Columns[0].Title.Alignment:=taCenter;
  DBGrid1.Columns.Add;
  DBGrid1.Columns[1].FieldName:='Количество';
  DBGrid1.Columns[1].Width:=100;
  DBGrid1.Columns[1].Alignment:=taRightJustify;
  DBGrid1.Columns[1].Title.Alignment:=taCenter;
  DBGrid1.Columns.Add;
  DBGrid1.Columns[2].FieldName:='Место';
  DBGrid1.Columns[2].Width:=100;
  DBGrid1.Columns[2].Alignment:=taCenter;
  DBGrid1.Columns[2].Title.Alignment:=taCenter;
  DBGrid1.Columns.Add;
  DBGrid1.Columns[3].FieldName:='Цена';
  DBGrid1.Columns[3].Width:=50;
  DBGrid1.Columns[3].Alignment:=taRightJustify;
  DBGrid1.Columns[3].Title.Alignment:=taCenter;


   AdoConnection1.ConnectionString:=ConString;
 AdoConnection1.Open;
 sql_line:='SELECT Деталь, Количество, Место, Цена FROM '+table+' ORDER BY Деталь';
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add(sql_line);
 ADOQuery1.Active:=True;
 end;
Подскажите пожалуйста что делаю не так. Заранее огромное спасибо.
atihiy2010 вне форума Ответить с цитированием
Старый 23.05.2014, 00:08   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Уберите
Цитата:
Код:
DBGrid1.Columns.Add;
необходимые столбцы ADO добавит самостоятельно после вызова Open для ADOQuery.
После этого можно спокойно задавать тексты заголовков столбцов и всё остальное.
Streletz вне форума Ответить с цитированием
Старый 23.05.2014, 00:28   #3
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

Спасибо огромное. Все заработало. И ведь помню когда-то уже такое было, и сам допер, а счас в голову не лезло)
atihiy2010 вне форума Ответить с цитированием
Старый 23.05.2014, 00:34   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Пожалуйста!
Streletz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При чтении массивов из файла добавляются лишние цифры Sammi2186 Помощь студентам 2 10.12.2013 17:43
Данные не добавляются в таблицу Dozent БД в Delphi 2 20.02.2013 13:41
Не добавляются записи в БД maximusgym PHP 0 31.01.2011 07:53
Калькулируемые столбцы в DBGrid Марк Охман Помощь студентам 4 22.11.2010 19:39
неподвижные столбцы DBGrid MargoNik БД в Delphi 2 27.04.2010 11:32