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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 13:07   #11
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Как я понял d1..d31 это название полей, если так то можно пройтись по ним цикле for (начало и конец цикла указывается в едитах)
Код:
var i:integer;
MyTable.Insert;//Edit
for i:=strtoint(edit1.Text)-1 to strtoint(edit2.Text)- 1 do
MyTable.Fields.Fields[i].AsString:=.....//какоето значение
MyTable.Post;
SERG1980 вне форума Ответить с цитированием
Старый 10.04.2009, 13:24   #12
new_user
Пользователь
 
Регистрация: 07.04.2009
Сообщений: 19
По умолчанию

ура работает, спасибо SERG1980, но думаю что у меня еще много будет вопросов
new_user вне форума Ответить с цитированием
Старый 10.04.2009, 13:51   #13
new_user
Пользователь
 
Регистрация: 07.04.2009
Сообщений: 19
По умолчанию

у меня есть программка которая заполняет в stringrid календарем, как мне перенести его к себе в таблицу и отображать в dbgrid нада чтоб в таблице создавалось столько дней сколько в месяце к-м мы вибираем и так чтобы где выпадает сб, вс вставлять в поля "В"

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Dateutils, Mask, Grids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    Button2: TButton;
    ComboBox2: TComboBox;
    MaskEdit1: TMaskEdit;
    StaticText1: TStaticText;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  st: SYSTEMTIME;
  NYDate, TEMPDate, FDMDate, EDMDate: TDateTime;
  IOW, IOD, d, w, tmp_Y: integer; //index of week, index of days


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin


begin
 NYDate:=EncodeDateTime(2009,1,1,0,0,0,0);
 ShowMessage('До нового года осталось '+
           IntToStr(DaysBetween(NYDate,Date))+ ' дн.');
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//Очистка календаря
d:=0;
for w:=0 to 7 do
begin
  Form1.StringGrid1.Cells[d, w]:='';
  Form1.StringGrid1.Cells[d+1, w]:='';
  Form1.StringGrid1.Cells[d+2, w]:='';
  Form1.StringGrid1.Cells[d+3, w]:='';
  Form1.StringGrid1.Cells[d+4, w]:='';
  Form1.StringGrid1.Cells[d+5, w]:='';
  Form1.StringGrid1.Cells[d+6, w]:='';
end;



form1.StringGrid1.Cells[0, 0]:='Пн.';
form1.StringGrid1.Cells[1, 0]:='Вт.';
form1.StringGrid1.Cells[2, 0]:='Ср.';
form1.StringGrid1.Cells[3, 0]:='Чт.';
form1.StringGrid1.Cells[4, 0]:='Пт.';
form1.StringGrid1.Cells[5, 0]:='Сб.';
form1.StringGrid1.Cells[6, 0]:='Вс.';

//Проверка правильности ввода
if form1.ComboBox2.Text='' then
  begin
  form1.Label1.Caption:='Выберите месяц!!!';
  messageDlg('Выберите месяц!!!', mtWarning, [mbOK], 0);
  end
  else
    begin
      if  form1.MaskEdit1.Text='    ' then
      begin
      form1.Label1.Caption:='Выберите месяц!!!';
      messageDlg('Выберите год!!!', mtWarning, [mbOK], 0);
      end
      else
        begin

//Функция DayOfTheWeek возвращает индекс дня недели:

//1 = Понедельник
//2 = Вторник
//3 = Среда
//4 = Четверг
//5 = Пятница
//6 = Суббота
//7 = Воскресенье

//Функция DaysInAMonth выдает число дней в указанном Году и Месяце.

//Для работы с этими функциями и процедурами нужно подключить библиотеку Dateutils в uses
//Инфа о модуле: http://www.delphisources.ru/pages/faq/faq_delphi_basics/navDateUtils.php.html



try
tmp_Y:=StrToInt(form1.MaskEdit1.Text);
except
on EConvertError do
  begin
    messageDlg('Неправильный формат данных в строке год! Исправьте данные!', mtError, [mbOK], 0);
  end;
end;

//заполняем таблицу
          begin
          IOW:=1;
          for IOD:=1 to DaysInAMonth(StrToInt(form1.MaskEdit1.Text), form1.ComboBox2.ItemIndex) do  // c 1 числа до конца месяца
            begin
            FDMDate:=EncodeDateTime(StrToInt(form1.MaskEdit1.Text), Form1.ComboBox2.ItemIndex, IOD, 0, 0, 0, 0); // установка даты

            if (IOD<>1) then
              begin
                TempDate:=EncodeDateTime(StrToInt(form1.MaskEdit1.Text), Form1.ComboBox2.ItemIndex, (IOD-1), 0, 0, 0, 0); // узнаем предыдущий день недели
                if ((DayOfTheWeek(TempDate))=7) then                                                                      // если было Вс.
                inc(IOW);                                                                                                 // то началась новая неделя
              end;
            form1.StringGrid1.Cells[DayOfTheWeek(FDMDate)-1, IOW]:=IntToStr(IOD); // вписываем число!!! // отнимаю потому что нумерация столбцов и строк нач с ноля в StringGrid!
            end;
          end;
          Form1.Label1.Caption:='Выбранный период: '+form1.ComboBox2.Text+', '+form1.MaskEdit1.Text+' г.';

        end;
    end;
end;

end.

// то же самое можно сделать с БД вместо StringGrid - будет рабочий календарь условие (если сб или вс - то выходной) + вручную добавить праздники если надо
new_user вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как загрузить в DBGrid таблицу из Excel artemavd БД в Delphi 11 13.04.2011 09:41
Инвертировать таблицу? Ash БД в Delphi 2 29.01.2009 02:23
Как добавлять данные в таблицу выведенную из ACCESS в DBGrid (Delphi ADO) Ce4kok БД в Delphi 26 26.01.2009 20:35
в диаграмму таблицу Exo Microsoft Office Excel 2 16.04.2008 13:01