Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизПомогите найти ошибку Найти похожие ветки
← →
Дева © (2005-11-23 05:20) [0]Написала код, по логике веще должно все работать правильно, однако запрос 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. прошу не судить строго, может я и вправда какую-то мелочь не заметила, но просто уже утро, а я спать не ложилась
← →
Separator © (2005-11-23 05:57) [1]> 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
← →
Дева © (2005-11-23 15:05) [2]Нашла, почему не работает... В свойствах ADOQuerySale было
LockType = ltBatchOptimistik...
Что это вообще такое?
← →
clickmaker © (2005-11-23 15:08) [3]http://www.interface.ru/fset.asp?Url=/borland/ado3.htm
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.05 c