Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2012, 23:37   #1
StudUL
Пользователь
 
Регистрация: 21.12.2008
Сообщений: 40
По умолчанию Найти запись и добавить в таблицу

Добрый вечер! Подскажите как можно сделать запрос. Мне нужно найти запись в таблице Osnastka, если она найдена записать поля KO, OSN, NO, CD, SV в таблицу Plan. Поместила на вкладку Номенкл. план, Edit туда вводим код и кнопку.
Вот моя база.
Таблички сделаны в Access, программирую в C++Builder6.
Вложения
Тип файла: rar Программа_диплом.rar (533.1 Кб, 26 просмотров)
StudUL вне форума Ответить с цитированием
Старый 16.05.2012, 10:42   #2
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию Answer

У вас на форме нет компонента ADOQuery; чтоб делать запросы к базе, добавьте его на форму, подключите к ADOConnection1, переключите DataSource1 - DataSet на ADOQuery1 и для обработчика кнопки напишите так:
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if (ComboBox1->ItemIndex==0)  {
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("SELECT * FROM Osnastka WHERE KO='" +
         Edit1->Text + "'" );
    ADOQuery1->Open();
  }
}
- во всяком случае у меня это работает...
nick42 вне форума Ответить с цитированием
Старый 16.05.2012, 10:45   #3
StudUL
Пользователь
 
Регистрация: 21.12.2008
Сообщений: 40
По умолчанию

Спасибо, попробую. Я просто впервые работаю с такими программами, для меня всё ново.)
StudUL вне форума Ответить с цитированием
Старый 16.05.2012, 10:56   #4
StudUL
Пользователь
 
Регистрация: 21.12.2008
Сообщений: 40
По умолчанию

Получилось, только запись в таблице Plan после закрытия формы нигде не сохраняется. Нужно, чтобы в таблице план найденная запись сохранялась.
StudUL вне форума Ответить с цитированием
Старый 16.05.2012, 11:05   #5
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Тогда лучше по другому: экспериментируйте с ADOTable1 - Filter (без запросов), хэлпы почитайте...
nick42 вне форума Ответить с цитированием
Старый 16.05.2012, 11:30   #6
StudUL
Пользователь
 
Регистрация: 21.12.2008
Сообщений: 40
По умолчанию

Добавила ADOTable3 соединила его с ADOConnection1 и в MasterSource соединила с DataSource1 и TableName выбрала Plan. Как код прописать и где не знаю.
StudUL вне форума Ответить с цитированием
Старый 16.05.2012, 11:55   #7
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Я вряд ли Вам в этом помогу; именно с MSAccess мало опыта. Пытался через запрос добавить запись в Plan, но вылетает сообщение о связанности таблиц Plan и Zak, а как это преодолеть - я не знаю. Советую настойчивее спрашивать на специализированных форумах по базам данных
nick42 вне форума Ответить с цитированием
Старый 16.05.2012, 12:05   #8
StudUL
Пользователь
 
Регистрация: 21.12.2008
Сообщений: 40
По умолчанию

Спасибо:-)
Может всё-таки как впервый раз запрос сделали, и как-нибудь прописать в запросе сохранить найденную запись в Plan.
StudUL вне форума Ответить с цитированием
Старый 16.05.2012, 14:18   #9
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Ну, смотрите, - вот такая запись на дополнительную кнопку добавляет по запросу строчку в таблицу Plan,
Код:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    AnsiString ko1, osn1, no1, cd1;
       ko1 = DBGrid1->Fields[1]->AsString ;
      osn1 = DBGrid1->Fields[2]->AsString ;
       no1 = DBGrid1->Fields[3]->AsString ;
       cd1 = DBGrid1->Fields[4]->AsString ;

    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("INSERT INTO Plan "
      "([CP],[CI],[KZ],[KO]) "                       //  ,[OSN],[NO],[CD]
      "VALUES ('223','143','23551220',:KO)");        //  ,:OSN,:NO,:CD
    ADOQuery1->Parameters->ParamByName("KO") ->Value = ko1;
//    ADOQuery1->Parameters->ParamByName("OSN")->Value = osn1;
//    ADOQuery1->Parameters->ParamByName("NO") ->Value = no1;
//    ADOQuery1->Parameters->ParamByName("CD") ->Value = cd1;
    ADOQuery1->Open();
}
но в этой таблице много связанных полей, и перед добавлением нужно им присвоить правильные значения (я просто переписал из базы). То, что при добавлении выскакивает сообщение "CommandText does not... " - это, говорят, не страшно, строка все равно добавляется. Вам просто нужно продумать форму добавления; возможно придется добавить несколько комбобоксов, связанных с таблицами Potr, Izg, Trud и перед добавлением новой записи вибирать в них соответствующие значения.
nick42 вне форума Ответить с цитированием
Старый 16.05.2012, 14:44   #10
Марат05
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 72
По умолчанию

Я знаю как это делать, но там придется переменные подключать. Через Unit1.h, Private и Public, между ними прописать и добавить, уже код.
Марат05 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить таблицу в делфи xJohnx БД в Delphi 4 14.04.2011 09:23
Добавить запись в таблицу по нажатии кнопки DenProx Microsoft Office Access 6 31.01.2011 10:52
Добавить столбец в таблицу на VBA Serge_Bliznykov Microsoft Office Word 7 27.04.2009 14:04
Добавить таблицу в MS ACCESS Seqular БД в Delphi 5 21.02.2007 02:14