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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2012, 11:31   #11
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Наш "спор" топикстартеру до фонаря. Может кончим ерундой заниматься?
У меня свое видение мира, у вас свое.
Прик вне форума Ответить с цитированием
Старый 23.05.2012, 14:05   #12
AladdinZean
 
Регистрация: 23.05.2012
Сообщений: 5
По умолчанию

тот самый абстрактный ключ, действительно часто вводимый разработчиками, является излишним и противоречит нормализации БД, в которой атрибут таблицы функционально полно зависит от ее ключа. Т.е. в данном случае от товара и заказа. А от вашего абстрактного ключа он зависит ТОЛЬКО потому, что Вы его ввели в таблицу принудительно.
Многие-ко-многим: ключ данного отношения - это 2 ID ее составляющих.
никаких абстракций.
AladdinZean вне форума Ответить с цитированием
Старый 23.05.2012, 14:09   #13
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

AladdinZean У Прик свое видение мира, не мешайте ему.
=master= вне форума Ответить с цитированием
Старый 23.05.2012, 20:54   #14
wsv515
 
Регистрация: 22.05.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
А можно поинтересоваться: ЗАЧЕМ?
Не проще ли добавить запись с этим же товаром и нужным новым количеством. Так поступают все нормальные разработчики БД.
Если, конечно, это не учебное задание, в котором безнаказанно можно творить различные безобразия
Да, действительно проще добавить, да и удобнее так.

Сейчас делаю приход товара, ситуация схожа, опять же нужно проверить, если товар уже есть в номенклатуре, то добавить приходное количество, если товара в нмклтре нет, то завести его..

AladdinZean , С SQL нет.

Киньте плиз АДОзапрос конкретным Дельфийским кодом, что то вроде:
в таблице Tovar столбец 'Key' сравнить со столбцом 'Id' в таблице PrihodList если они имеют одинаковые значения то в поле Kolvo таблицы Tovar добавить значение из Edit1.text если нет то (пропишу свой код)
wsv515 вне форума Ответить с цитированием
Старый 23.05.2012, 21:11   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сейчас делаю приход товара, ситуация схожа, опять же нужно проверить, если товар уже есть в номенклатуре, то добавить приходное количество, если товара в нмклтре нет, то завести его..
Не делают так. Даже если есть номенклатура и точно такая цена, то еще остается дата поступления, контрагент и многое другое, которое в одну кучу не свалишь. Каждый документ прихода/расхода заносится в базу вполне самостоятельно, а уже с помощью запросов можно получить и карточку номенклатуры, и движение за период, и остатки на заданную дату и прочее
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.05.2012, 23:15   #16
wsv515
 
Регистрация: 22.05.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не делают так.
Да Бог с ним что не делают, тут такое дело что нужно сделать именно так ,лишь бы сработало.

ДОколупался я в sql'е до чего то близкого
Код:
procedure TFormMain.BitBtn2Click(Sender: TObject);
begin
fdm.ADOQuery1.SQL.Clear;
fdm.ADOQuery1.SQL.Add('select TovarJ.key, PrihodList.id from TovarJ, PrihodList where Tovarj.key=prihodlist.id');
fdm.ADOQuery1.open;
end;
ну выдает он мне в ДБГрид два солбца с совпадениями, а каким образом составить условие чтобы все прописалось\проверилось в таблицы как мне хочется ?
wsv515 вне форума Ответить с цитированием
Старый 24.05.2012, 08:04   #17
wsv515
 
Регистрация: 22.05.2012
Сообщений: 6
По умолчанию

Код:
fDm.ADOQuery1.SQL.Clear;
fDm.ADOQuery1.SQL.Add('update TovarJ set Kolvo='+fDm.TPrihodList.Fields[6].AsString+' where TovarJ.key=PrihodList.id');
fDm.ADOQuery1.open;
Выдает ошибку:
Код:
raised exception class EOleException with message 'Параметр Kolvo не имеет значения по умолчанию'. Process stopped bla bla bla
Он имеет ввиду что столбец Kolvo пустой ?
wsv515 вне форума Ответить с цитированием
Старый 24.05.2012, 08:15   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в глаза бросилась ошибка:
Цитата:
Код:
fDm.ADOQuery1.SQL.Add('update TovarJ set Kolvo='+fDm.TPrihodList.Fields[6].AsString+' where TovarJ.key=PrihodList.id');
fDm.ADOQuery1.open;
это допустимо только для вызова запросов с select

для всех запросов, связанных с изменением данных (и структур): Delete, Update, Insert нужно вызывать метод ExecSQL:
Код:
fDm.ADOQuery1.ExecSQL;

p.s. суть темы/запроса я не смотрел, про остальное ничего сказать не могу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.05.2012, 08:37   #19
wsv515
 
Регистрация: 22.05.2012
Сообщений: 6
По умолчанию

Код:
fDm.ADOQuery1.sql.Clear;
fDm.ADOQuery1.SQL.Add('update TovarJ set Kolvo=(:x) values (:x) where Tovarj.key=PrihodList.id');
fdm.ADOQuery1.Parameters.ParamByName('x').Value := fdm.TPrihodList.Fields[6].Text;
fdm.ADOQuery1.ExecSQL;
'Неправильно определен объект Parametr. Предоставлены несовместимые или не полные сведения'
wsv515 вне форума Ответить с цитированием
Старый 24.05.2012, 17:04   #20
wsv515
 
Регистрация: 22.05.2012
Сообщений: 6
По умолчанию

Сделал, работает, но распространяется на последнюю строку в TPrihodList, то что выше остается без изменений.
Код:
fdm.ADOQuery1.sql.Clear;
fdm.ADOQuery1.SQL.Add('update TovarJ set Kolvo=:p where Tovarj.key=:pp');
fdm.ADOQuery1.Parameters.ParamByName('p').Value := fdm.TPrihodList.Fields[6].Text;
fdm.ADOQuery1.Parameters.ParamByName('pp').Value := fdm.TPrihodList.Fields[1].Text;
ShowMessage(fDm.ADOQuery1.SQL.Text);

fdm.TTovarJ.Post;
fDm.TPrihodList.Post;
fdm.ADOQuery1.ExecSQL;
Что прописать чтобы запрос прогнался по всему столбцу в таблице TPrihodList ?
wsv515 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дублирование полей в нескольких таблицах и их заполнение MIKE11IPME БД в Delphi 7 24.04.2012 20:26
Поиск совпадающих ЦИФР в Memo! (не путать с поиском строк!) NiKiToZZ- Помощь студентам 14 31.01.2011 03:52
Поиск совпадающих или похожих значений jekich Microsoft Office Excel 4 14.08.2010 20:55
Сравнение и замена значений в двух таблицах Excel shalinoleg Microsoft Office Excel 2 10.06.2010 09:53
Поиск и удаление совпадающих строк в разных листах hybrid84 Microsoft Office Excel 11 24.07.2009 05:13