Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите найти ошибку


Дева ©   (2005-11-23 05:20:00) 

Написала код, по логике веще должно все работать правильно, однако запрос ADOQuerySale ничего не пишет в таблицу. Утро уже видать раннее, спать пора топать - вот башка совершенно не соображает. Вот код, может кто сообразит, в чем загвоздка:

//приход
procedure TFormSB.Bring(bBarCode: String);
var
iSale: Integer;
begin
iSale:=0;
//работа с каталогом
ADOQueryPrice.Close;
ADOQueryPrice.Prepared;
ADOQueryPrice.Parameters.ParamByName('pBarCode').Value:=bBarCode;
ADOQueryPrice.Open;
if ADOQueryPrice.IsEmpty = true then
           begin
           ShowMessage('в каталоге не присутсвует!');
           //внести в каталог
           with DlgPriceForm do
             begin
             Caption:='Добавить запись о товаре';
             Edit2.Text:='';
             Edit3.Text:='';
             Edit4.Text:='';
             Edit1.Text:=bBarCode;
             end;
           if DlgPriceForm.ShowModal = mrOk then
               begin
               ADOQueryPrice.Close;
               ADOQueryPrice.SQL.Clear;
               ADOQueryPrice.SQL.Add('SELECT * FROM Price');
               ADOQueryPrice.Open;
               ADOQueryPrice.Insert;
               ADOQueryPrice.Fields.Fields[0].AsString:=DlgPrice.DPEd1;
               ADOQueryPrice.Fields.Fields[1].AsString:=DlgPrice.DPEd2;
               ADOQueryPrice.Fields.Fields[2].AsVariant:=StrToFloat(DlgPrice.DPEd3);
               ADOQueryPrice.Fields.Fields[3].AsString:=DlgPrice.DPEd4;
               try
               ADOQueryPrice.Post;
               except
               ShowMessage('Ошибка! Одинаковые штрих-коды');
               ADOQueryPrice.Delete;
               end;
               ADOQueryPrice.Close;
               ADOQueryPrice.SQL.Add('WHERE BarCode = :pBarCode');
               end;
           end;
//запрос Sale - проверка присутсвия в продаже товара
ADOQuerySale.Open;
ADOQuerySale.Locate('BarCode', bBarCode,[loCaseInsensitive]);
if ADOQuerySale.Fields.Fields[0].AsString <> bBarCode then
   begin
//  внести в Sale
   ADOQuerySale.Last;
   iSale:=ADOQuerySale.Fields.Fields[2].AsInteger+1;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Вот именно тут загвоздка. Информация в таблицу не попадает.
   ADOQuerySale.Insert;
   ADOQuerySale.Fields.Fields[2].AsInteger:=iSale;
   ADOQuerySale.Fields.Fields[1].AsInteger:=0;
       ShowMessage(IntToStr(iSale));//вставила чисто для проверки,
//движется ли здесь процесс, сообщение выдается - значет движется,
//но почему тогда не пишется в таблицу?
   ADOQuerySale.Fields.Fields[0].AsString:=bBarCode;
   ADOQuerySale.Post;
   end;
//пишу в Sale количество - больше на один
ADOQuerySale.Edit;
ADOQuerySale.Fields.Fields[1].AsVariant:=ADOQuerySale.Fields.Fields[1].AsInteger+1;
ADOQuerySale.Post;
ADOQuerySale.Close;
//пишу в таблицу прихода
ADOQueryBring.Open;
ADOQueryBring.Insert;
ADOQueryBring.Fields.Fields[1].AsVariant:=Date;
ADOQueryBring.Fields.Fields[2].AsString:=bBarCode;
ADOQueryBring.Post;
end;

P. S. прошу не судить строго, может я и вправда какую-то мелочь не заметила, но просто уже утро, а я спать не ложилась


clickmaker   (2005-11-23 15:08:00) [1]

http://www.interface.ru/fset.asp?Url=/borland/ado3.htm


Дева   (2005-11-23 15:05:00) [2]

Нашла, почему не работает... В свойствах ADOQuerySale было
LockType = ltBatchOptimistik...
Что это вообще такое?


Separator   (2005-11-23 05:57:00) [3]

>            if DlgPriceForm.ShowModal = mrOk then
>               begin
   ADOQuery1.Close;
   ADOQuery1.SQL.Text:= 'INSERT INTO Price (Field1, Field1, Field1, Field1) VALUES (' + DlgPrice.DPEd1 + ', ' + DlgPrice.DPEd2 + ', ' + StrToFloat(DlgPrice.DPEd3) + ', ' + DlgPrice.DPEd4 ')';
   ADOQuery1.ExecSQL;

Вот Ё, проще и понятней использовать SQL


Наверх

Титульная страница Поиск, карта сайта Написать письмо