Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Insert Into SQL, Help 
:(
    Опции темы
dix75
Дата 16.3.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет!

Немогу выполнить правильно запрос.
Объясните пожалуйста, в чем дело, почему не идет запрос?

Код

Food->ADOQuery1->Close();
Food->ADOQuery1->SQL->Clear();
Food->ADOQuery1->SQL->Add("INSERT INTO Items (CategoryID, Item)");
Food->ADOQuery1->SQL->Add("SELECT CategoryID, \'" + xItems +"\'");
Food->ADOQuery1->SQL->Add("FROM Categories");
Food->ADOQuery1->SQL->Add("WHERE Category =\'" +xCategory +"\';");
Food->ADOQuery1->SQL->Add("SET @LastId = @@identity");
Food->ADOQuery1->SQL->Add("INSERT INTO Items (ItemID, Product)");
Food->ADOQuery1->SQL->Add("VALUES (@LastId,\'" + xProduct +"\');");
Food->ADOQuery1->ExecSQL();



--------------------
save your mind
PM MAIL   Вверх
Dmi3ev
Дата 16.3.2008, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



запрос, конечно, непонятен. Например:
Цитата

Food->ADOQuery1->SQL->Add("SET @LastId = @@identity");

а где update?

Добавлено через 1 минуту и 59 секунд
попробуйте разбить Ваш запрос на три запроса для того, чтобы разобраться в чем дело.


--------------------

PM MAIL   Вверх
dix75
Дата 17.3.2008, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ситуация в следующем я добавляю запись в одну таблицу 
после добавления я должен получить номер этой записи и на основе неё добавить запись в другую таблицу

Запись я добавляю все просто вот так
Код

Food->ADOQuery1->Close();
Food->ADOQuery1->SQL->Clear();
Food->ADOQuery1->SQL->Add("INSERT INTO Items (CategoryID, Item)");
Food->ADOQuery1->SQL->Add("SELECT CategoryID, \'" + xItems +"\'");
Food->ADOQuery1->SQL->Add("FROM Categories");
Food->ADOQuery1->SQL->Add("WHERE Category =\'" +xCategory +"\';");


Но как узнать номер не знаю. smile 
И тем более на основе него добавить другую запись


--------------------
save your mind
PM MAIL   Вверх
Dmi3ev
Дата 17.3.2008, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



можно добавлять записи с помощью ADOTable, не используя запрос ()
Код

ADOTable1->Active=true;
ADOTable1->Insert();
ADOTable1->FieldByName("Name")->AsString="text";
//остальные поля, которые надо заполнить
ADOTable1->Post();

как вариант, а узнавать номер записи
Код

int n=ADOTable1->RecNo;



Это сообщение отредактировал(а) Dmi3ev - 17.3.2008, 01:18


--------------------

PM MAIL   Вверх
dix75
Дата 17.3.2008, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Dmi3ev, 

Можно конечно и так но мне необходимо много чего добавлять
да SQL мощный язык неужели через него никак нельзя это осуществить?


--------------------
save your mind
PM MAIL   Вверх
Dmi3ev
Дата 17.3.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



dix75, тогда пришли конкретную постановку задачи, потому что здесь, честно говоря, мне полностью неясна суть проблемы! помогу, если задача будет поставлена правильно (неохота разбираться в твоих id не id) smile  объясни получше smile 


--------------------

PM MAIL   Вверх
dix75
Дата 17.3.2008, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Dmi3ev,

Лучше объясню вот так.
есть 3 таблицы Categories и Items и Products
в Categories 2 столбца
первичный ключ CategoryID (счетчик)
и второй столбец Category (тип Строка)

в Items 3 столбца
первичный ключ ItemID (счетчик)
внешний ключ CategoryID 
и 3 столбец Item (тип Строка)

Вот мне необходимо добавить запись в таблицу Items и Products
При этом у меня есть название категории (столбец Category)
На основе которого я хочу получить первичный ключ таблицы Categories и записать его во внешний ключ Items
на основании вновь полученного ключа таблицы Items я долже добавить записи в таблицу Products


--------------------
save your mind
PM MAIL   Вверх
dix75
Дата 17.3.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



решил так

Код

  AnsiString An ="INSERT INTO Items (CategoryID, Item) SELECT CategoryID, \'" + xItems +"\' FROM Categories  WHERE Category =\'" +xCategory +"\'";

  Food->ADOQuery1->Close();
  Food->ADOQuery1->SQL->Text =An;
  Food->ADOQuery1->ExecSQL();

  Food->ADOQuery1->Close();
  AnsiString An2 ="SELECT ItemID FROM Items, Categories WHERE Categories.CategoryID =Items.CategoryID ";
  An2 =An2 +"AND Categories.Category =\'" +xCategory +"\' AND Items.Item =\'" +xItems +"\'";
  
  Food->ADOQuery1->SQL->Text ="INSERT INTO Products(Product, ItemID) SELECT 5, ItemID FROM Items WHERE ItemID =("+An2+")";
  Food->ADOQuery1->ExecSQL();


но можно как нибудь код уменьшить?


--------------------
save your mind
PM MAIL   Вверх
s_a_s_h_a
Дата 18.3.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если в СУБД есть процедуры, функции или пакеты, то можно эти 3 SQL-выражения во что-то из этого и оформить
PM MAIL   Вверх
dix75
Дата 18.3.2008, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



s_a_s_h_a, 

ACCESS поддерживает хранимые процедуры (ХП)  но слабовато

возможно лишь в ХП использовать лишь одну SQL инструкцию


--------------------
save your mind
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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