Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление записи в базу, как сделать в c++Builder 6.0 
:(
    Опции темы
MacTep
  Дата 13.11.2004, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Есть база данных Paradox со следующими полями:
IdStud (тип: autoincremental)
Fio (тип: alpha)
Age (тип: Number).
Доступ к базе - BDE.

Почему, когда я пишу в Builder'е такое:
Код

Fio="Иванов И.И.";
Age=19;
Table1->AppendRecord(ARRAYOFCONST((Null,&Fio,&Age)));
Table1->Post();

у меня вылезает ошибка о том, что неверное значение для поля IdStud? Как от нее избавиться. Только не надо предлагать варианта написания через
Код

Table1->Append();
Table1->FileldByName("Fio")->AsString=Fio;
Table1->FileldByName("Fio")->AsInteger=Age;
Table1->Post();

Это я знаю, мне надо именно первым способом. Заранее спасибо!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Mal Hack
Дата 14.11.2004, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



MacTep я делал так на Delphi, и писал Table1 -> Insert, а дельше редактировать поля этой пустой записи....
Если все-таки надо только через AppendRecord, то NULL auto_increnent'у попробуй поменять на пустое значение '' по крайней мере ы MySQL такая вещь - прокатывала.
PM ICQ   Вверх
MacTep
Дата 14.11.2004, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Mal Hack, на Deplhi я тоже ставил nil в том месте и все прокатывало очень хорошо. А вот с Builder'е не катит вообще. А что значит поменять на пустое значение? Это как? просто написать: "", да? Не катит.


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
RVN
Дата 4.2.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 4.2.2005
Где: Россия

Репутация: нет
Всего: нет



Table1->AppendRecord нельзя применять, если IdStud (тип: autoincremental)
Пробуй Insert
PM MAIL WWW ICQ   Вверх
Hroft
Дата 4.2.2005, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



Это где написано, что нельзя?
А там не может быть какой-нибудь константы, которая играла бы при помещении в поле роль сигнала на автоинкремент?
Триггеров в Paradox, конечно, нет... smile
Добавлено @ 12:16
А не может быть вот с этим проблема:
Цитата

For indexed Paradox and dBASE tables, the record is inserted into the dataset in a position based on its index.
For unindexed Paradox and dBASE tables, the record is added to the end of the dataset.

Может, там со значениями автоинкрементными что-то не так? Типа уже существуют, или еще что?
PM MAIL ICQ   Вверх
RVN
Дата 18.2.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 4.2.2005
Где: Россия

Репутация: нет
Всего: нет



Написано в С++Builder 6 Архангельского smile

По идее нужно создать пустую запись в таблице, чтобы увеличить счетчик. А потом можно издеваться над полями, но не трогать автоинкремент. smile
PM MAIL WWW ICQ   Вверх
MacTep
Дата 18.2.2005, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



RVN, логично! Спасибо!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
RVN
Дата 13.4.2005, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 4.2.2005
Где: Россия

Репутация: нет
Всего: нет



MacTep

Привет!

Для всех, кому интересно! smile

Можно вставить запись в таблицу с помощью SQL.

Поля: ID_NASP(ID населенного пункта, autoincrement)
NASP(название населенного пункта, А, 30)

При создании UpdateSQL заносятся все поля. UpdateSQL создается для удобства.
Убираешь из запроса поле autoincrement. Зачеркнуто.
QueryApply->Close();
QueryApply->SQL->Clear();
QueryApply->SQL->Add("Insert into NASP.db (ID_NASP, NASP)");
QueryApply->SQL->Add("VALUES ( :ID_NASP, :NASP)");
QueryApply->Params->Items[0]->AsString=Edit1->Text;//нас.пункт
QueryApply->ExecSQL(); smile

Еще одно преимущество- один запрос для модификации разных таблиц, и работает быстрее чем Table.
Все значения QueryApply->SQL->Add("Insert и QueryApply->SQL->Add("VALUES должны быть на одной строке

smile
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.