Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Sasha
4919 / 2384 / 529
Регистрация: 05.06.2008
Сообщений: 7,466
Записей в блоге: 3
#1

Не создаётся таблица

04.09.2009, 09:54. Просмотров 1217. Ответов 10
Метки нет (Все метки)

Добрый день!
Ребята, подскажите, по такой проблеме хочу создать таблицу из программы

C++
1
2
3
4
5
6
7
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = "CREATE TABLE Person ( Fam char(15) NOT NULL PRIMARY KEY, Nam char(15) NOT NULL PRIMARY KEY, Par char(15) NOT NULL PRIMARY KEY, Year_b integer)";
ADOQuery1->ExecSQL();
}
Но он мне пишет, что "КЛЮЧ УЖЕ СУЩЕСТВУЕТ"
Что не так в коде? Как можно решить эту проблему?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2009, 09:54
Ответы с готовыми решениями:

Не создаётся исходник
Уважаемые эксперты. Срочно нужна Ваша помощь. Написал простенькую лабу...

При создании x64 dll не создаётся файл lib
Давно уже пользуюсь своей математической библиотекой, собранной в виде dll, так...

Не создаётся таблица в БД
Здравствуйте! Существует база данных: "atm-cms". Есть 2 файла: 1. Файл с...

Не создаётся таблица при условии
С самого начала проверка на наличие данных в таблицы, если false, то создаём...

Не создаётся таблица mysql в php, что может быть не так?
Здравствуйте, что может быть не так, пишет, что мол Ошибка при создании...

10
АНК
124 / 115 / 17
Регистрация: 27.02.2007
Сообщений: 291
04.09.2009, 10:50 #2
Ограничение PRIMARY KEY может использоваться только один раз для каждой отдельно взятой таблицы (Справочное руководство по операторам SQL)
Вероятно запрос д.б. такой:
SQL
1
2
3
4
5
6
7
8
CREATE TABLE Person ( 
ID INTEGER NOT NULL,
Fam CHAR(15) NOT NULL, 
Nam CHAR(15) NOT NULL, 
Par CHAR(15) NOT NULL, 
Year_b INTEGER,
PRIMARY KEY (ID)
)
1
Sasha
4919 / 2384 / 529
Регистрация: 05.06.2008
Сообщений: 7,466
Записей в блоге: 3
04.09.2009, 11:15  [ТС] #3
А у меня так получилось

C++
1
2
3
4
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = "CREATE TABLE Дополнительная (P_Id int  PRIMARY KEY ,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255))";
ADOQuery1->ExecSQL();
Добавлено через 2 минуты
АНК, а ты случаем не знаешь как можно удалить выделенную строку в DBGrid через запрос без условий. Просто выделенную строку, а то везде примеры показаны с условиями.
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
04.09.2009, 11:35 #4
чтобы удалить строку без условий, Вам поможет метод Delete (удаляет текущую строку)
0
АНК
124 / 115 / 17
Регистрация: 27.02.2007
Сообщений: 291
04.09.2009, 11:43 #5
Sasha "удалить выделенную строку в DBGrid через запрос без условий"
Как это без условий? В SQL есть оператор DELETE. И запрос мы составляем так:
T-SQL
1
delete from tbl_name
- удаляя ВСЕ записи в таблице. А если надо удалить не все, то добавляем условие ...

А в чем конкретно проблема? Из DBGrid можно получить все необходимое для формирования условия.
0
Sasha
4919 / 2384 / 529
Регистрация: 05.06.2008
Сообщений: 7,466
Записей в блоге: 3
04.09.2009, 11:50  [ТС] #6
Проблема в том, что я хочу удалить просто выделенную строку через запрос помогите тогда с условием потому что такой пример не работает

C++
1
2
3
4
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = "DELETE * FROM Glavnaya WHERE (Invent_Number =:Invent_Number) AND (Number_in_Lan =:Number_in_Lan) AND (Department=:Department) AND (Processor=:Processor) AND (Memory=:Memory) AND (HDD=:HDD) AND (Room=:Room)";
ADOQuery1->ExecSQL();
Добавлено через 1 минуту
Цитата Сообщение от VoodooMan Посмотреть сообщение
чтобы удалить строку без условий, Вам поможет метод Delete (удаляет текущую строку)
А текущую строку через запрос как можно удалить?
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
04.09.2009, 11:55 #7
никак, запросу все равно, какая там у тебя текущая запись, запрос ты отправляешь в базу данных, ей тоже в принципе все равно... а вот TTable с текущей таблицей знает, какая запись текущая, вот и надо вызывать тот метод на таблице, с которой работаешь
0
АНК
124 / 115 / 17
Регистрация: 27.02.2007
Сообщений: 291
04.09.2009, 11:56 #8
Цитата Сообщение от VoodooMan Посмотреть сообщение
чтобы удалить строку без условий, Вам поможет метод Delete (удаляет текущую строку)
Что-то такого метода в TDBGrid я не помню...

А вот если к TDBGrid привязать TDBNavigator, то у TDBNavigator'а есть возможность сформировать запрос на удаление выбранной строки. Необходимо только обеспечить переход в режим редактирования DataSet'а, что привязан к TDBGrid.
0
Sasha
4919 / 2384 / 529
Регистрация: 05.06.2008
Сообщений: 7,466
Записей в блоге: 3
04.09.2009, 12:04  [ТС] #9
Просто я хотел уровнять по скорости добавление и удаление записей в таблице. Так как добавление происходит через запрос это действительно происходит быстрее стандартного метода Insert();то я хотел и удаление строки сделать через запрос, а то стандартным методом Delete() происходит очень долго, что в последствии влияет на формирование отчёта сновыми данными.


А можно как-нибудь отследить попадание или обновление данных в таблицу Access?
0
Lord_Voodoo
Супер-модератор
8608 / 2230 / 133
Регистрация: 07.03.2007
Сообщений: 10,816
Завершенные тесты: 1
04.09.2009, 12:17 #10
АНК, а кто говорил про грид... грид - только отображает то, что есть в таблице, а вот у таблицы такой метод есть
0
АНК
124 / 115 / 17
Регистрация: 27.02.2007
Сообщений: 291
04.09.2009, 12:42 #11
VoodooMan, вот и я засомневался, все вроде о гриде разговор шел, а потом раз и Delete ...
0
04.09.2009, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2009, 12:42

ПодТаблицы с данными(Таблица-Таблица-Таблица-Таблица) и наследованием
Имеется такая база с таблицами Район-МО-Цель-Зачача. Несколько вариантов связей...

Производный класс Самоорганизующаяся таблица должен наследовать свойства и методы класса Таблица
класс таблица, содержащий целые числа Обьект класса таблица должен...

Не создаётся БД
Перепробовал всё, что знал. Дважды переустанавливал IB и FB, отключал firewall...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru