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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2013, 23:21   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
В этом случае Insert тоже не нужен? Как тогда добавить товар если такого нет на складе?
зависит от логики работы приложения. Я просто к тому, что если пользователь редактирует товар, который есть на складе, то у Вас есть ItemID и вы по нему обновляете данные.
Если товара нет, пользователь его может добавить, в этом случае у Вас НЕТ ItemID и в этом случае Вы должны выполнить Insert (тогда, раз у Вас не автоинкремент {кстати, почему нет?!}) ItemID Вам придётся вычислять/формировать самостоятельно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.11.2013, 23:55   #12
W. Aron
Пользователь
 
Регистрация: 02.11.2011
Сообщений: 25
По умолчанию

Цитата:
(тогда, раз у Вас не автоинкремент {кстати, почему нет?!})
Можно назвать это моей причудой
Хех. Наверно замучил Вас вопросами)
Поля ID и ItemCount(переименовал) имеют тип Short. Вот код добавления к существующему товару.
Код:
 Query4.close;
 if not Query4.prepared then Query4.prepare;
 if (edit3.text <> '') AND (edit5.text <> '') then
 BEGIN
 Query4.ParamByName('ItemID').Value:= Edit3.Text;
 Query4.ParamByName('ItemCount').Value := edit5.text;
 END else
 Begin
 ShowMessage('Введены не все поля');
 Exit;
 end;
 Query4.ExecSQL;
Я точно уверен что неправильно написаны строки с Edit'ами., поскольку перебрал все что думал. А где найти объяснение уже не знаю.
Upd.
Код:
Query4.ParamByName('ItemID').AsFloat:=StrToInt(Edit3.Text);
 Query4.ParamByName('ItemCount').AsFloat :=StrToInt(Edit5.Text);
Теперь проблема в том, что он просто обнуляет ItemCount.

Последний раз редактировалось W. Aron; 05.11.2013 в 00:04. Причина: Нашел частичное решение.
W. Aron вне форума Ответить с цитированием
Старый 05.11.2013, 00:02   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

попробуйте так:
Код:
  Query4.ParamByName('ItemID').Value:= StrToInt(Edit3.Text);
  Query4.ParamByName('ItemCount').Value := StrToInt(edit5.text);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2013, 00:06   #14
W. Aron
Пользователь
 
Регистрация: 02.11.2011
Сообщений: 25
По умолчанию

В Вашем случае вылетает ошибка 'Type mismatch in expression'.
W. Aron вне форума Ответить с цитированием
Старый 05.11.2013, 00:13   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от W. Aron Посмотреть сообщение
В Вашем случае вылетает ошибка 'Type mismatch in expression'.
покажите содержимое запроса в Query4.
кстати, Вы все параметры заполнили?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2013, 00:20   #16
W. Aron
Пользователь
 
Регистрация: 02.11.2011
Сообщений: 25
По умолчанию

Запрос как Вы и написали выше:
Код:
Update storage
   Set ItemCount = ItemCount + :Itemcount
   Where ItemId = :Itemid
Ну так как я проверяю пока только Update, то параметры заполнены только для него. ItemName уже пропишу, когда буду переключаться на запрос добавления.
W. Aron вне форума Ответить с цитированием
Старый 05.11.2013, 00:41   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

увидел ваше "частичное решение"

попробуйте написать так:
Код:
Query4.ParamByName('ItemID').AsInteger:= StrToInt(Edit3.Text);
Query4.ParamByName('ItemCount').AsInteger := StrToInt(edit5.text);

Последний раз редактировалось Serge_Bliznykov; 05.11.2013 в 00:44.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2013, 01:00   #18
W. Aron
Пользователь
 
Регистрация: 02.11.2011
Сообщений: 25
По умолчанию

Таблица storage справа.

Кстати когда Вы написали код с определенными числами (я только поставил в ItemID 10) то он прибавлял нормально.
Замена на AsInteger приводит к ошибке "Type mismatch in expression".
Да, забыл написать... в Edit'ы потом пропишу, чтобы вводились только числа.
W. Aron вне форума Ответить с цитированием
Старый 05.11.2013, 01:04   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

не-не.. меня структура таблицы интересует.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2013, 01:08   #20
W. Aron
Пользователь
 
Регистрация: 02.11.2011
Сообщений: 25
По умолчанию

Блин) Думал ведь о BD Desctop'е)

Upd. Заметил вот еще что: уже писал выше если указать Value и конкретные числа, то прибавляет. НО, после закрытия проекта если его снова открыть возвращается первоначальное значение... по-моему это тоже ненормально.

Последний раз редактировалось W. Aron; 05.11.2013 в 01:16.
W. Aron вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавление товара в корзину через ajax moshkin_ura JavaScript, Ajax 8 14.10.2013 13:25
БД склад ZveR999 Microsoft Office Access 0 30.05.2012 15:40
Postgre: функция добавления товара на склад Blondy SQL, базы данных 2 07.01.2012 14:32
что и где нужно прописать чтобы при добавление одежды через форму на Delphi она отображалась в таблице склад студенточка! Помощь студентам 0 14.12.2011 16:35
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04