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

Удаление таблицы

08.12.2011, 23:54. Показов 2536. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Переделал управление в приложении, вообщем добавил кнопку "Удалить", но при попытке удаления вылезает ошибка о том что "невозможно изменение структуры таблицы потому что база данных открыта только для чтения".

Код подключения БД:
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
procedure TForm1.ButtonOpenClick(Sender: TObject);
var
  SF:TStringList;
  i:integer;
begin
  if OpenDialog1.Execute then
  begin
      SF:=TStringList.Create;
      try
        ListBox1.Clear;
        ADOConnection1.Connected:=false;
        ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
            +OpenDialog1.FileName
            +';Persist Security Info=False';
        Edit1.Text:=OpenDialog1.FileName;
        ADOConnection1.Mode:=cmShareDenyWrite;
        ADOConnection1.Connected:=true;
       // ADOQuery1.Open;
        ADOConnection1.GetTableNames(SF);
        for i:=0 to SF.Count-1 do
          begin
             ListBox1.Items.Add(SF.Strings[i]);
          end;
      finally
        SF.Free;
      end;
 
  end;
end;
Код кнопки удаления:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.ButtonTableDeleteClick(Sender: TObject);
begin
if (ListBox1.ItemIndex >=0)  then
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('DROP TABLE '+ListBox1.Items[ListBox1.ItemIndex]);
//    ADOQuery1.ExecSQL;
    ADOQuery1.Open;
  end;
end;
Как я понял, что то не так с подключение, но вот что я понять не могу. Пробывал в ADOQuery использовать CanModify но у меня вылетает вообще из за Access violation
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2011, 23:54
Ответы с готовыми решениями:

Удаление записей из таблицы. Удаление из таблицы таблицы
Подскажите, пожалуйста, как сделать следующее: Есть таблица cards_all - в ней все записи о картах. Есть таблица cards_null -...

Удаление записи из таблицы БД
Всем привет ! пишу Бд в делфи .все данные хранятся в CDS.Сделала кнопку добавления данных в таблицы .код ниже. Помогите пожалуйста сделать...

Удаление данных из таблицы
Добрый день! У меня есть база данных (работаю с SQLServer 12), в ней 2 таблицы Группы и Абитуриент. В Delphi мне надо реализовать такую...

4
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.12.2011, 11:39
Уффффф

По-порядку:

1. Вы пишете что-то типа эксплорера баз данных ? Если да, то бросьте,- лучше имеющихся Вы ТОЧНО не напишете.

2.Если у Вас для выбора файла используется OpenDialog, то не лишнее было бы проверять, а не отказался ли юзер от выбора, нажав отмену ? А то ведь некрасивый пук получится

3)
Delphi
1
 ADOConnection1.Mode:=cmShareDenyWrite;
Кто Вас этому надоумил ? Вы отдаете себе отчет что это значит ? Если нет, то выкиньте и никогда более не пишите. А вот почитать про режимы (Mode) коннекшна надо обязательно !

4) Вместо
Delphi
1
2
3
4
5
        ADOConnection1.GetTableNames(SF);
        for i:=0 to SF.Count-1 do
          begin
             ListBox1.Items.Add(SF.Strings[i]);
          end;
просто и сердито (и без использования абсолютно лишнего SF)
Delphi
1
  ADOConnection1.GetTableNames(ListBox1.Items)
5) Вместо
Delphi
1
 ADOQuery1.Open;
надо
Delphi
1
 ADOQuery1.Exec;
Open используется для получения результатов запроса в виде набора данных (запросы типа SELECT), Exec - для выполнения запросов, не возвращающих НД (UPDATE,DELETE,INSERT, DDL-запросы)
Кстати, а Вы в курсе, что так просто удаляь таблицы нельзя ? Ибо существуют например констрэйнты, ссылки на удаляемую таблицу из триггеров, хранимок, вьюх и т.п. Еще раз перечитайте п.1 этого поста и задумайтесь ЧТО Вы пытаетесь соорудить.
0
3 / 3 / 0
Регистрация: 10.05.2010
Сообщений: 39
09.12.2011, 21:33  [ТС]
соседу пишу приложение на диплом, он психолог, ему нужно написать прилодение куда будут скармливаться таблицы из экселя, общитывать всяческие характеристико по имеющимся тестам и т.п.. Вот пречем кол-во тестов может быть разным, по этому я рещил в бд просто из экселя парсить 2 таблицы, одну с фио, другую с тестами. Все это дело считать и выводить ему характеристики в виде отчета.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
10.12.2011, 01:43
Это прекрасно реализуется самим офисом: Access+Excel, включая диалоговую форму и формы просмотра.
Во всяком случае импорт из экселя в аксцес с помощью Дельфи, и никакого парсинга не требуется.
0
3 / 3 / 0
Регистрация: 10.05.2010
Сообщений: 39
10.12.2011, 15:11  [ТС]
Я понимаю что можно, я понимаю что так было бы даже правильнее и практичнее. Но это требование к диплому, не я потребывал с него это приложение к диплому.
Почитал еще немного лит-ры и пришел к выводу что лучше будет использовать всего 3 таблицы.
1) с инфой о талицах импортируемых из экселя
2) фио,пол, д.р.
3) результаты тестов

Это решит проблему и с удалением таблиц и с добавлением данных.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2011, 15:11
Помогаю со студенческими работами здесь

Удаление поля из таблицы
Как удалить поле из таблицы? Добавляю так form1.ADOQuery1.SQL.Add('ALTER TABLE Raspisanie ADD COLUMN'+' '+ edit1.text+' '+...

Удаление данных из таблицы
Доброй ночи! Такая проблема... На главной форме имеется таблица (связанная с запросом из СУБД MSAccess - незнаю как точнее сформулировать...

Удаление записи из таблицы
Здравствуйте. Имею две таблицы: Сотрудники и Должности. CREATE TABLE "EMPLOYEE" ( "NUMBER_EM" INTEGER NOT NULL, ...

Удаление таблицы из БД в Delphi
А как можно удалить таблицу из БД по нажатию кнопки в Delphi(я использую ADOQuery)?

Удаление записи из главной таблицы
есть 4 таблицы: одна из них главная, остальные три - дочерние. при попытке удалить запись из главной таблицы выбивается ошибка...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru