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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2014, 09:38   #1
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
Сообщение Сохранение файлов из DBGrid

Всем, Доброго времени суток!
Прошу помочь с таким вопросом: "Имеется DBGrid, в нем есть различные поля, среди них , поле "Ссылка", которое содержит ссылку на файл. Так вот как сделать сохранение файлов из DBGrid? Чтобы нажать кнопку сохранить, затем создаем папку и сохраняем туда все файлы, которые в данный момент есть в DBGrid"... Прошу помочь или посоветовать, я делаю вот как:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var   i:integer;
      dir:string;
begin
AdvSelectDirectory('Выберите папку для сохранения', '', dir, False, False, True);
begin
for i:=0 to DBGRid1.Columns.Count-1 do
      if FileExists (PChar(DBGridEh1.Columns[9])) then
      begin
      CopyFile(PChar(DBGrid1.Columns[9]) , true);
      ShellExecute(Handle, 'open', PChar(dir), nil, nil, SW_SHOWNORMAL);
      end;
      end;
end;
Столбец номер 9 - это ссылка на файл.
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Старый 10.01.2014, 09:44   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Этот путь к файлу вообще-то не в гриде, а в поле DataSet-а, на который грид ссылается через DataSource. И остается в цикле пройтись по датасету и проанализировав данные в нужном поле выполнить то, что вы задумали
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.01.2014, 09:52   #3
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию

А как пройтись по DataSet ?
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Старый 10.01.2014, 09:56   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
DataSet.First;
while not DataSet.Eof do begin
  if DataSet.FieldByName('Ссылка').AsString<>'' then begin
// здесь проверяем существование файла и пытаемся скопировать. Если каталог еще не создан - создаем его, хотя это лучше до цикла
  end;
  DataSet.Next;
end;
Как поле называется не знаю, условно предположил что 'Ссылка'
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.01.2014, 10:07   #5
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию

Компилирует, отображаются записи, нажимаю кнопку сохранить, создаю папку, как только жму окей ошибка!
Значит, что то не так я делаю :

Код:
procedure TForm1.Button3Click(Sender: TObject);
var   i:integer;
      dir:string;
      DataSet:TDataSet;
begin
AdvSelectDirectory('Выберите папку для сохранения', '', dir, False, False, True);
begin
DataSet.First;
while not DataSet.Eof do begin
  if DataSet.FieldByName('Ссылка').AsString<>'' then begin
  if FileExists (PChar(DataSet.FieldByName('Ссылка').AsString)) then
      begin
      CopyFile(PChar(DataSet.FieldByName('Ссылка').AsString),PChar(NewFileName(dir + '\'+ExtractFileName(DataSet.FieldByName('Ссылка').AsString))), true);
      ShellExecute(Handle, 'open', PChar(dir), nil, nil, SW_SHOWNORMAL);
  // здесь проверяем существование файла и пытаемся скопировать. Если каталог еще не создан - создаем его, хотя это лучше до цикла
  end;
  DataSet.Next;
end;

      end;
      end;
end;
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Старый 10.01.2014, 10:19   #6
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию

Спасибо, огромное заработало!
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование и сохранение excel из dbgrid Q012 БД в Delphi 5 22.08.2012 21:24
Сохранение записи dbgrid anabenne БД в Delphi 5 24.06.2011 09:44
Сохранение данных из DBGrid _Irina_ БД в Delphi 1 11.05.2011 17:43
Сохранение DBGrid alenov8 БД в Delphi 7 23.02.2011 21:05
DBGrid. ReadOnly. Сохранение изменений cnst_bus БД в Delphi 3 18.01.2010 13:40