Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 104

Удаление записи из базы и фото из папки

22.01.2024, 08:35. Показов 2876. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста с этим кодом. Удаляется только изображение из папки. А сама запись из базы данных (то есть путь к папке) не удаляется.
Таблица Acsess.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TShowExponatFrm.DeleteCurrentImage;
var
  ImagePath: string;
begin
  if (ImagePaths.Count > 0) and (CurrentImageIndex >= 0) and (CurrentImageIndex < ImagePaths.Count) then
  begin
    ImagePath := ImagePaths[CurrentImageIndex];
 
    if MessageDlg('Суретті өшіруді қалайсыз ба?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
      try
        GlavFrm.ADOCommand1.CommandText := 'DELETE FROM Images WHERE Photo_Path = :Image_Path';
        GlavFrm.ADOCommand1.Parameters.ParamByName('Image_Path').Value := ImagePath;
        GlavFrm.ADOCommand1.Execute;
 
        if FileExists(ImagePath) then
          DeleteFile(ImagePath);
 
        LoadImagesForExponat;
 
        if ImagePaths.Count = 0 then
          Panel6.Caption := 'Сурет табылмады';
 
        // Добавляем сообщение после успешного удаления изображения
        ShowMessage('Сурет өшірілді.');
      except
        on E: Exception do
          ShowMessage('Қате: ' + E.Message);
      end;
    end;
  end;
end;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2024, 08:35
Ответы с готовыми решениями:

Удаление фото из папки и бд
Нужно при нажатии на кнопку удалить изображение из директории и бд. Следующий код выполняется после нажатия. В каждой кнопке заложен id...

Удаление фото из папки
Мне надо удалить фотографии, имя которых прописано в базе данных. Вот как я пытаюсь это сделать $del= mysql_query(&quot;SELECT...

Автоматическое удаление фото из папки
Здрасти. Я написал функцию которая автоматически должна удалять фото а потом и запись в бд по истечению 3 месяцев но она почему то не...

28
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
22.01.2024, 13:00
Студворк — интернет-сервис помощи студентам
так, проект скачивается и компилируется... Теперь бы хорошо понять, где и как увидеть описываемое поведение...
1
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 104
22.01.2024, 13:09  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
так проект скачивается и компилируется... Теперь бы хорошо понять, где и как увидеть описываемое поведение...
Ах да, извините. Щась.
0
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 104
22.01.2024, 13:23  [ТС]
Откройте этот проект, а в предыдущем проекте забыл удалить записи из базы данных. Например в одном экспонате есть 3 фотографий, и когда нажимаю кнопку удалить должен удалиться отображаемое изображение
Миниатюры
Удаление записи из базы и фото из папки   Удаление записи из базы и фото из папки   Удаление записи из базы и фото из папки  

Вложения
Тип файла: rar Музей программа дайын — Дайын — копия.rar (16.16 Мб, 6 просмотров)
0
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 104
22.01.2024, 15:08  [ТС]
Только что заметил, что если в таблице Images есть несколько изображений (в моем примере 3), тогда последние 2 отлично удаляется (из папки и из таблицы). А первая изображение удаляется только из папки, а из таблицы нет. Почему так не понимаю:-(
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
23.01.2024, 03:14
У вас база не содержит почти ничего но весит 62 мега потому что акцес после удаления данных ее автоматом не сжал. Это вам надо делать самостоятельно через команду сжать и восстановить и лишний мусор будет убран из базы.

Добавлено через 35 минут
Оригинально вы реализовали удаление. Так конечно тоже можно удалить, но это несколько дольше получается
Вот весь этот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
GlavFrm.AdoQuery3.Filter := 'ExponatId = ' + IntToStr(ExponatId);
    GlavFrm.AdoQuery3.Filtered := True;
 
    // Удаляем все связанные записи из таблицы Images
    GlavFrm.AdoQuery3.First;
    while not GlavFrm.AdoQuery3.Eof do
    begin
      GlavFrm.AdoQuery3.Delete;
    end;
 
    // Снимаем фильтр и удаляем запись из таблицы Exponat
    GlavFrm.AdoQuery3.Filtered := False;
    GlavFrm.AdoQuery1.Delete;
вполне легко заменяется так:
Delphi
1
2
GlavFrm.AdoQuery3.SQL.Text := 'DELETE * FROM Images WHERE Images.exponatid=' + IntToStr(ExponatId);
GlavFrm.AdoQuery3.ExecSQL;
1
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
23.01.2024, 06:29
Abikon, у меня удалилось все. Другое дело, что после удаления необходимо полностью закрывать программу. Иначе возникает ошибка. А возникает она потому, что индекс картинки Вы не меняете в момент удаления. А где это конкретно сделать - я не подскажу: уж больно много у Вас там лишнего накручено... И интерфейс, сами понимаете, мне недоступен, так что даже интуитивно я не понимаю, что за чем должно происходить...
1
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 104
23.01.2024, 19:18  [ТС]
Спасибо Всем за ответы. Можно еще один вопрос?
Это код кнопки который сохраняет:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TShowExponatFrm.BitBtn1Click(Sender: TObject);
var
  SaveDialog: TSaveDialog;
begin
  SaveDialog := TSaveDialog.Create(Self);
  try
    SaveDialog.Title := 'Сохранить файл как';
    SaveDialog.Filter := 'Файлы Excel (*.xlsx)|*.xlsx|Все файлы (*.*)|*.*';
    SaveDialog.DefaultExt := 'xlsx';
 
    if SaveDialog.Execute then
    begin
      ExportToExcel(CustomColumnHeaders, GlavFrm.ADOQuery1, SaveDialog.FileName);
      ShowMessage('Файл сәтті сақталды.');
    end;
  finally
    SaveDialog.Free;
  end;
end;
А это сама процедура:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
procedure ExportToExcel(const CustomColumnHeaders: array of string; ADOQuery: TADOQuery; const FileName: string);
var
  ExcelApp: TExcelApplication;
  ExcelWorkbook: _Workbook;
  ExcelWorksheet: _Worksheet;
  HeaderRange: OleVariant;
  FieldIndex, RowIndex: Integer;
begin
  ExcelApp := TExcelApplication.Create(nil);
  ExcelApp.Connect;
  ExcelApp.Visible[LOCALE_USER_DEFAULT] := True;
 
  ExcelWorkbook := ExcelApp.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT);
  ExcelWorksheet := ExcelWorkbook.Sheets[1] as _Worksheet;
 
  for FieldIndex := Low(CustomColumnHeaders) to High(CustomColumnHeaders) do
  begin
    ExcelWorksheet.Cells.Item[1, FieldIndex + 1].Value := CustomColumnHeaders[FieldIndex];
    HeaderRange := ExcelWorksheet.Cells.Item[1, FieldIndex + 1];
    HeaderRange.Font.Bold := True;
  end;
 
  RowIndex := 2;
  ADOQuery.First;
  while not ADOQuery.Eof do
  begin
    for FieldIndex := 0 to ADOQuery.FieldCount - 1 do
    begin
      if not VarIsNull(ADOQuery.Fields[FieldIndex].Value) then
        ExcelWorksheet.Cells.Item[RowIndex, FieldIndex + 1].Value :=
          VarToStr(ADOQuery.Fields[FieldIndex].Value)
      else
        ExcelWorksheet.Cells.Item[RowIndex, FieldIndex + 1].Value := OleVariant('');
    end;
    Inc(RowIndex);
    ADOQuery.Next;
  end;
 
  ExcelWorkbook.SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    xlNoChange, EmptyParam, EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);
 
  ExcelApp.Disconnect;
  ExcelApp.Free;
end;
Но при сохранений долго идет процесс пробирая каждую запись. А у меня в базе больше 5 тысяч записи. Как то можно решить эту проблему? Подскажите пожалуйста.
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
23.01.2024, 19:33
В эксель данные можно загонять одним блоком. Вот ознакомьтесь с этой статьей, там на примерах все подробно рассказано.
1
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 104
23.01.2024, 22:24  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
В эксель данные можно загонять одним блоком. Вот ознакомьтесь с этой статьей, там на примерах все подробно рассказано.
Спасибо. Попробую
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.01.2024, 22:24

Удаление записи из базы
проблема с удалением записи из базы данных ! задал интервал одну минуту (ниже код) а он сразу удаляет $text...

Удаление записи из базы MySQL
Всем привет. Не могу понять почему запись выгруженная в тег select не удаляется. &lt;form action=&quot;delete.php&quot; method =...

DBGrid - удаление записи из базы
Здравствуйте! У меня такой вопросик, как можно удалить запись из базы? на форме есть компоненты ADOTable, ADOQuery, DataSource,...

Удаление записи из базы данных
Всем привет. У меня есть такой код main.php &lt;?php require('_include/setup.php'); $smarty = new MySmarty();

Удаление записи из базы данных
Приветствую. Существует таблица в бд id|name|email|message|data|Сcылка на удаление На экране выводится список из базы данных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru