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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 11:52   #1
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
Восклицание Обновление данных + TGauge

Вот у меня есть участок кода который обновляет базу с листов Экселя!

Код:
{додаваня нових даних}
procedure TMUpdate.UpdateClick(Sender: TObject);
var
  {змінна для індексації перебору рядків в екселі}
  rows : integer;
  {змінні для циклів додавання нових даних}
  j : integer;
  {змінна жддля збереження кількості рядків в екселі}
  k_rows : integer;
begin
{   Что бы начать работу с Экселем, нужно создать OLE объект:}
Ap := CreateOleObject('Excel.Application');

{вимикаємо кнопку}
update.Enabled := false;

{обираємо таб Аренда}
if (combobox1.ItemIndex = 0)
then begin
{  открыть файл:}
Ap.Workbooks.Open('C:\база\обновление_а.xls',0,True);

{Цикли на додавання нових даних до бд}

  {отримання значення кількості рядків екселя}
   k_rows := strtoint(ERows.Caption);

{ініціалізуєм змінну номером рядка
    з якого починається робота з ексельом}
  rows := 2;

  {цикл перебору рядків}
    for j := 1 to k_rows do
    begin
             {додавання форматованих даних в j-поле бд}
            DataModule2.Arenda.Insert;
            DataModule2.Arenda.Fields[1].AsString :=  Ap.Cells[rows,1];
            DataModule2.Arenda.Fields[2].AsInteger :=  Ap.Cells[rows,2];
            DataModule2.Arenda.Fields[3].AsString :=  Ap.Cells[rows,3];
            DataModule2.Arenda.Fields[4].AsInteger :=  Ap.Cells[rows,4];
            DataModule2.Arenda.Fields[5].AsInteger :=  Ap.Cells[rows,5];
            DataModule2.Arenda.Fields[6].AsString :=  Ap.Cells[rows,6];
            DataModule2.Arenda.Fields[7].AsString :=  Ap.Cells[rows,7];
            DataModule2.Arenda.Fields[8].AsString :=  Ap.Cells[rows,8];
            DataModule2.Arenda.Fields[9].AsString :=  Ap.Cells[rows,9];
            DataModule2.Arenda.Fields[10].AsInteger :=  Ap.Cells[rows,10];
            DataModule2.Arenda.Fields[11].AsInteger :=  Ap.Cells[rows,11];
            DataModule2.Arenda.Fields[12].AsInteger :=  Ap.Cells[rows,12];
            DataModule2.Arenda.Fields[13].AsInteger :=  Ap.Cells[rows,13];
            DataModule2.Arenda.Fields[14].AsString :=  Ap.Cells[rows,14];
            DataModule2.Arenda.Fields[15].AsString :=  Ap.Cells[rows,15];
            DataModule2.Arenda.Fields[16].AsString :=  Ap.Cells[rows,16];
            DataModule2.Arenda.Fields[17].AsString :=  Ap.Cells[rows,17];
            DataModule2.Arenda.Fields[18].AsString :=  Ap.Cells[rows,18];
            DataModule2.Arenda.Fields[19].AsString :=  Ap.Cells[rows,19];
            DataModule2.Arenda.Fields[20].AsString :=  Ap.Cells[rows,20];
            DataModule2.Arenda.Fields[21].AsString :=  Ap.Cells[rows,21];
            DataModule2.Arenda.Fields[22].AsDateTime :=  Ap.Cells[rows,22];
            datamodule2.Arenda.Post;

            {збільшення індекса рядка екселя}
             rows := rows + 1;
            end;

{кінець додавання в Аренду}
  end
Процес не то что бы очень длительный но не быстрый! Я просто хочу прикрутить к этому процессу Элемент TGauge вкрайньом случае ProgressBar! Но я незнаю как это зделать!( Помогите если кто знает!?
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 25.04.2010, 12:08   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Если использовать компонент ProgressBar1, то попробуйте поставить у него свойство Min=1, Max=22, a в свойстве StepBy() того же компонента указать кол-во строк в вашем цикле. Точно не знаю, но может как-то так:
Код:
 for j := 1 to k_rows do
    begin
             {додавання форматованих даних в j-поле бд}
            DataModule2.Arenda.Insert;
            DataModule2.Arenda.Fields[1].AsString :=  Ap.Cells[rows,1];
            DataModule2.Arenda.Fields[2].AsInteger :=  Ap.Cells[rows,2];
            DataModule2.Arenda.Fields[3].AsString :=  Ap.Cells[rows,3];
            DataModule2.Arenda.Fields[4].AsInteger :=  Ap.Cells[rows,4];
            DataModule2.Arenda.Fields[5].AsInteger :=  Ap.Cells[rows,5];
            DataModule2.Arenda.Fields[6].AsString :=  Ap.Cells[rows,6];
            DataModule2.Arenda.Fields[7].AsString :=  Ap.Cells[rows,7];
            DataModule2.Arenda.Fields[8].AsString :=  Ap.Cells[rows,8];
            DataModule2.Arenda.Fields[9].AsString :=  Ap.Cells[rows,9];
            DataModule2.Arenda.Fields[10].AsInteger :=  Ap.Cells[rows,10];
            DataModule2.Arenda.Fields[11].AsInteger :=  Ap.Cells[rows,11];
            DataModule2.Arenda.Fields[12].AsInteger :=  Ap.Cells[rows,12];
            DataModule2.Arenda.Fields[13].AsInteger :=  Ap.Cells[rows,13];
            DataModule2.Arenda.Fields[14].AsString :=  Ap.Cells[rows,14];
            DataModule2.Arenda.Fields[15].AsString :=  Ap.Cells[rows,15];
            DataModule2.Arenda.Fields[16].AsString :=  Ap.Cells[rows,16];
            DataModule2.Arenda.Fields[17].AsString :=  Ap.Cells[rows,17];
            DataModule2.Arenda.Fields[18].AsString :=  Ap.Cells[rows,18];
            DataModule2.Arenda.Fields[19].AsString :=  Ap.Cells[rows,19];
            DataModule2.Arenda.Fields[20].AsString :=  Ap.Cells[rows,20];
            DataModule2.Arenda.Fields[21].AsString :=  Ap.Cells[rows,21];
            DataModule2.Arenda.Fields[22].AsDateTime :=  Ap.Cells[rows,22];
            datamodule2.Arenda.Post;

            {збільшення індекса рядка екселя}
             rows := rows + 1;
 ProgressBar1.StebBy(n); 
            end;
На счет правильности не уверен, но может быть натолкнет на правильную идею
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 25.04.2010, 23:32   #3
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Цитата:
На счет правильности не уверен, но может быть натолкнет на правильную идею
Натолкнули! Спасибо! Вот так работает:
Код:

  ProgressBar1.Max := k_rows;

  {цикл перебору рядків}
    for j := 1 to k_rows do
    begin
             {додавання форматованих даних в j-поле бд}
            DataModule2.Arenda.Insert;
            DataModule2.Arenda.Fields[1].AsString :=  Ap.Cells[rows,1];
            DataModule2.Arenda.Fields[2].AsInteger :=  Ap.Cells[rows,2];
            DataModule2.Arenda.Fields[3].AsString :=  Ap.Cells[rows,3];
            DataModule2.Arenda.Fields[4].AsInteger :=  Ap.Cells[rows,4];
            DataModule2.Arenda.Fields[5].AsInteger :=  Ap.Cells[rows,5];
            DataModule2.Arenda.Fields[6].AsString :=  Ap.Cells[rows,6];
            DataModule2.Arenda.Fields[7].AsString :=  Ap.Cells[rows,7];
            DataModule2.Arenda.Fields[8].AsString :=  Ap.Cells[rows,8];
            DataModule2.Arenda.Fields[9].AsString :=  Ap.Cells[rows,9];
            DataModule2.Arenda.Fields[10].AsInteger :=  Ap.Cells[rows,10];
            DataModule2.Arenda.Fields[11].AsInteger :=  Ap.Cells[rows,11];
            DataModule2.Arenda.Fields[12].AsInteger :=  Ap.Cells[rows,12];
            DataModule2.Arenda.Fields[13].AsInteger :=  Ap.Cells[rows,13];
            DataModule2.Arenda.Fields[14].AsString :=  Ap.Cells[rows,14];
            DataModule2.Arenda.Fields[15].AsString :=  Ap.Cells[rows,15];
            DataModule2.Arenda.Fields[16].AsString :=  Ap.Cells[rows,16];
            DataModule2.Arenda.Fields[17].AsString :=  Ap.Cells[rows,17];
            DataModule2.Arenda.Fields[18].AsString :=  Ap.Cells[rows,18];
            DataModule2.Arenda.Fields[19].AsString :=  Ap.Cells[rows,19];
            DataModule2.Arenda.Fields[20].AsString :=  Ap.Cells[rows,20];
            DataModule2.Arenda.Fields[21].AsString :=  Ap.Cells[rows,21];
            DataModule2.Arenda.Fields[22].AsDateTime :=  Ap.Cells[rows,22];
            datamodule2.Arenda.Post;

            {збільшення індекса рядка екселя}
             rows := rows + 1;

             ProgressBar1.StepBy(1);

            end;

{для обнуление}     
ProgressBar2.Position := 1;

   {Кінець перевірки таблиці}
  end
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нет компонентов TGauge и TImgBtn Stema Компоненты Delphi 4 07.04.2010 18:58
Обновление списка данных без потери данных в переменных VaBank БД в Delphi 13 03.06.2009 10:47
Обновление данных в БД EdNovice Общие вопросы .NET 2 16.10.2008 12:13
Обновление данных Родион БД в Delphi 3 17.09.2008 20:49
Обновление данных в БД EdNovice БД в Delphi 4 26.06.2007 14:35