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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2011, 18:46   #11
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

а нужно ли добавлять параметры?

Последний раз редактировалось ара; 11.05.2011 в 18:50.
ара вне форума Ответить с цитированием
Старый 11.05.2011, 18:50   #12
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

См. выше добавки и правки.
OlegVE вне форума Ответить с цитированием
Старый 11.05.2011, 19:05   #13
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

В принципе запрос работает. Но записи сразу не изменяются. Приходится выходить из программы и уже только после следующего запуска данные уже изменены(((
ара вне форума Ответить с цитированием
Старый 11.05.2011, 19:25   #14
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Добавьте после строки вышеприведенного кода
Код:
qry1.Free;
следующие строки
Код:
ВашЗапросИлиТаблицаККоторомуПривязанDBGrid.Close;
ВашЗапросИлиТаблицаККоторомуПривязанDBGrid.Open;
Если у Вас DBGrid, если нет - другие компоненты тоже к чему-то привязаны.

Последний раз редактировалось OlegVE; 11.05.2011 в 19:30.
OlegVE вне форума Ответить с цитированием
Старый 11.05.2011, 19:55   #15
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

У меня DBGrid, он отражает таблицу PrichodTable:TADOTable ее мы закрываем?
Код:
DataModule1.PrichodTable.Close;
  DataModule1.PrichodTable.Open;
Так тоже не работает.

Не ту таблицу закрывал. Все работает, спасибо!

Доброго времени суток! Возвращаюсь опять к теме. Запрос оказывается работает не правильно! Создаю новую накладную, новый приход товара, в результате в поле Ostatok появляются неправильные цифры, если делаю приход одной какой то позиции, остаток увеличивается сразу во всех. Подскажите, пож, что не так в запросе!?????
Код:
procedure TPrichodForm.PrichButtonClick(Sender: TObject);
var
  qry1: TADOQuery;
begin
if MessageBox(0,'Вы действительно хотите приходывать товар?','Внимание!', MB_YESNO or mb_iconquestion)=mrYes then
 begin
  qry1 := TADOQuery.Create(nil);
  qry1.Connection := DataModule1.ADOConnection1;
  qry1.close;
  qry1.SQL.Clear;
  qry1.SQL.Text:='UPDATE Prichod INNER JOIN Tovarn_pozicia ON Prichod.id_tovarn_pozicia=Tovarn_pozicia.id_tovarn_pozicia SET Tovarn_pozicia.Ostatok=Tovarn_pozicia.Ostatok + Prichod.[Kol-vo] ';
  qry1.ExecSQL;
  qry1.Close;
  qry1.Free;
  DataModule1.Tovarn_pozTable.Close;
  DataModule1.Tovarn_pozTable.Open;
 end;

end;
Я так понял, что к Остатку у меня добавляется новый запрос + запрос предыдущий! Что-то в коде неправильно? Или надо добавить WHERE?

Ты запарил уже чат тут разводить! Еще раз и удалю тему!

Последний раз редактировалось artemavd; 13.05.2011 в 18:59.
ара вне форума Ответить с цитированием
Старый 13.05.2011, 14:16   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
если делаю приход одной какой то позиции, остаток увеличивается сразу во всех.
А Вы попробуйте в своём коде найти, где именно Вы задаёте эту самую "одной какой то позиции"! Нет?! Вот именно! Поэтому добавляются ВСЕ строчки, которые есть в таблице Приход.
Вам нужно указать в запросе
Код:
.....where Prichod.id_tovarn_pozicia = ТутВашаIdПозиция


p.s. кстати, у Вас в коде есть несколько безвредных - но абсолютно бесполезных строк:
Цитата:
Код:
  qry1 := TADOQuery.Create(nil);
  qry1.Connection := DataModule1.ADOConnection1;
  qry1.close;
  qry1.SQL.Clear;
  qry1.SQL.Text:='UPDATE Prichod INNER JOIN Tovarn_pozicia ON Prichod.id_tovarn_pozicia=Tovarn_pozicia.id_tovarn_pozicia SET Tovarn_pozicia.Ostatok=Tovarn_pozicia.Ostatok + Prichod.[Kol-vo] ';
  qry1.ExecSQL;
  qry1.Close;
  qry1.Free;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2011, 21:26   #17
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Прошу прощения! Объясните, пожалуйста, что такое
Цитата:
ТутВашаIdПозиция
. Можно пример?
ара вне форума Ответить с цитированием
Старый 13.05.2011, 22:40   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ара Посмотреть сообщение
Прошу прощения! Объясните, пожалуйста, что такое . Можно пример?
нет, нельзя!
как я могу написать пример, если я не знаю, где Вы берёте позицию прихода.
Цитата:
Создаю новую накладную, новый приход товара, в результате в поле Ostatok появляются неправильные цифры, если делаю приход одной какой то позиции, остаток увеличивается сразу во всех.
Выделенный текст Вы писали?! Покажите, как Вы делаете приход одной какой-то позиции... Тогда я Вам покажу, как эту самую позицию вставить в запрос
(хотя, мне кажется, что в моём примере выше достаточно наглядно видно, куда надо вставлять ID позиции...)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2011, 23:46   #19
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Есть таблица Prichod_nakladnaja, создаю в ней новую запись. С ней связана подчиненная таблица Prichod, в этой таблице есть поле id_tovarn_pozicia(его я заменил поисковым полем), вводим товарную позицию, количество товара. Таблица Prichod связана с таблицей Tovarn_pozicia через id_tovarn_pozicia. В таблице Tovarn_pozicia есть поле Ostatok. Плюсую его с Количеством в Приходе. Так и приходую.
Если не очень понятно и правильно описал, гляньте, пожалуйста на 1 стр. схему данных. все таблицы Аксес отображают Гриды...

Последний раз редактировалось ара; 13.05.2011 в 23:49.
ара вне форума Ответить с цитированием
Старый 14.05.2011, 18:09   #20
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Подскажите, что надо писать вместо точек???
Код:
DataModule1.PrichodQuery.SQL.Add('UPDATE Prichod INNER JOIN Tovarn_pozicia ON Prichod.id_tovarn_pozicia=Tovarn_pozicia.id_tovarn_pozicia SET Tovarn_pozicia.Ostatok=Tovarn_pozicia.Ostatok + Prichod.[Kol-vo] ');
  DataModule1.PrichodQuery.SQL.Add('WHERE Prichod.id_tovarn_pozicia=Tovarn_pozicia.id_tovarn_pozicia AND Tovarn_pozicia.Name=:Name');
  DataModule1.PrichodQuery.Parameters.ParamByName('Name').Value:=.......;
ара вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить таблицу в делфи xJohnx БД в Delphi 4 14.04.2011 09:23
Как списать данные в таблицу через кнопку БД cделана с Access MikaS007 БД в Delphi 4 07.06.2010 12:46
Как добавлять данные в таблицу выведенную из ACCESS в DBGrid (Delphi ADO) Ce4kok БД в Delphi 26 26.01.2009 20:35
Как при запросе открыть таблицу Repair и добавить в неё новые данные, согласно этого листинга. TitAn БД в Delphi 2 11.06.2007 10:07
Добавить таблицу в MS ACCESS Seqular БД в Delphi 5 21.02.2007 02:14