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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2014, 18:39   #1
Irina_94
Пользователь
 
Регистрация: 22.02.2013
Сообщений: 47
По умолчанию Компоненты Delphi

Здравствуйте. Помогите пожалуйста решить проблему.
Мне нужно в dbgrid и одновременно в Access создавать столбец с датой того числа, которое мне не обходимо. (типа электронного журнала)
Я нашла код, но он немного не подходит, там добавляется только текущее число.
А как переделать что бы число можно было выбирать например в MonthCalendar1 или в DateTimePicker1?
Вот код:
Код:
procedure TForm3.Button1Click(Sender: TObject);
 var
    I: Integer;
    column:String;
    fields:TStrings;
begin
  //создадим объект класса массив строк
  fields := TStringList.Create;
  //получим список всех полей таблицы в перем.
  ADOTable1.GetFieldNames(fields);

  { Поля можно добавлять только к неактивному набору данных. }
  ADOTable1.Close;
  try
   // Очистим св-во SQL в запросе
   ADOQuery1.SQL.Clear;
   // получим строку тек. даты в формате dd_mm_yyyy
   column := FormatDateTime('dd_mm_yyyy', Date);

   // проверим таблицу на наличие столбца с тек. датой
   for i:=3 to fields.Count-1 do
    begin
     // если нашли, то выведем сообщение об этом
     if fields[i]=column then
      begin
       MessageBox(handle,'Дата уже существует!','ОШИБКА',MB_OK or MB_ICONWARNING);
       // и выйдем из процедуры
       exit;
      end;
    end;
   // создадим запрос на добавление столбца в таблицу
   ADOQuery1.SQL.Add('ALTER TABLE '+ADOTable1.TableName+' ADD '+column+' Integer');
   // выполним запрос (зам.: Если в результате запроса
   //   не создается таблица, то необходимо исп. метод ExecSQL)
   ADOQuery1.ExecSQL;
   // добавим в таблицу "Темы" строку с тек. датой
   frmTema.ADOTema.AppendRecord([nil,column,nil]);
  finally
   { Теперь мы можем увидеть наши поля }
   ADOTable1.Open;
   //обновим поля в таблице
   frmGlav.FormActivate(frmGlav);
  end;
end;

Последний раз редактировалось Stilet; 17.02.2014 в 18:43.
Irina_94 вне форума Ответить с цитированием
Старый 17.02.2014, 18:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если ты пишешь классный журнал то уверяю тебя:
1) Столбец создавать не надо, а надо продумать структуру таблицы, в которой каждая запись будет содержать дату и связана с учеником
2) Заранее создать 31 столбец - дни в месяце. В особой колонке номер месяца и еще колонка - год.

Динамическое добавление колонок только все усугубит. БД это не плоская таблица, и поступать с ней так кощунственно. Не по феншую короче.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2014, 19:06   #3
Irina_94
Пользователь
 
Регистрация: 22.02.2013
Сообщений: 47
По умолчанию

Так этот код работает. только мне его надо как то связать с DateTimePicker1? там выбираешь число и он добавляет
Irina_94 вне форума Ответить с цитированием
Старый 17.02.2014, 21:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
column := FormatDateTime('dd_mm_yyyy', DateTimePicker1.Date);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компоненты Delphi Irina_94 Компоненты Delphi 9 09.02.2014 13:20
Компоненты Delphi Sanya_Garaeva Помощь студентам 1 17.12.2013 05:30
компоненты Delphi. Антон Лысенко Помощь студентам 10 08.05.2013 19:43
Компоненты Delphi Irina_94 Компоненты Delphi 3 21.03.2013 14:09
Компоненты в Delphi. Chudo4258 Помощь студентам 4 21.03.2009 18:53