Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];
ВнизНе получается с записью данных Найти похожие ветки
← →
Xmen (2006-04-20 11:00) [0]Привет мастерам!
Сразу перехожу к проблеме.
Есть две таблицы. 1 - Данные кассовы символ, расшиф. символа, код филиала, сумма. 2 - временная таблица кассовы символ, расшиф. символа, код филиалов(32 поля). Туда надо писать данные из табл. 1. 2 таб. уже записан данные по полям кассовы символ, расшиф. символа. Вот только по полям код филиалов нужно писать данны из 1 табл. значение поля суммы.
Делаю так, но допустил гдето ощибку и немогу найти ощибку. Помогите сним разобратся.
while not qrSimbol.eof do
begin
kas_sim:= qrSimbol.FieldByName("kas_sim").Value;
ras_sim:= qrSimbol.FieldByName("ras_sim").Value;
qrTemp_sim.open;
qrTemp_sim.Locate("kod_sim;ras_kod", VarArrayOf([kas_sim,ras_sim]), [loPartialKey]);
qrTemp_sim.append;
qrTemp_sim.FieldByName(qrSimbol.FieldByName("kod_filial").Value).Value:=qrSimbol .fieldbyname("SUMMA").Value;
qrTemp_sim.post;
qrSimbol.next;
end;
← →
Sergey13 © (2006-04-20 11:11) [1]Мало понятного.
1. Зачем открывать qrTemp_sim.open в каждой итерации цикла.
2. Зачем искать и тут же, без анализа результата поиска, добавлять запись?
← →
Xmen (2006-04-20 11:34) [2]>>Мало понятного.
>>1. Зачем открывать qrTemp_sim.open в каждой итерации цикла.
>>2. Зачем искать и тут же, без анализа результата поиска, добавлять запись?
1 пункт можно удалит.
2 пункт непонял, что хочеш этим сказать. Чтото опять нето сделал.
← →
Sergey13 © (2006-04-20 11:44) [3]2[2] Xmen (20.04.06 11:34)
>2 пункт непонял, что хочеш этим сказать. Чтото опять нето сделал.
Ты похоже не понимаешь, что делает тот или иной оператор.
Locate - ищет в наборе данных запись по соответствию критерию
append - добавляет новую запись.
Ты искал и нашел (может быть, ты же не анализируешь результат поика). И тут же говоришь "а мне пофиг" и вставляешь новую запись с заполненым одним полем. Вот и вопрос - а нафига? Наверное надо - если нашел, то ИЗМЕНИТЬ (Edit) запись, а если не нашел, то вставить, с заполнением всех необходимых полей.
Да и вообще временная таблица тут (если это таблица в базе) лишняя.
← →
Yrtimd (2006-04-20 11:49) [4]Зачем делать Locate("kod_sim;ras_kod", VarArrayOf([kas_sim,ras_sim]), [loPartialKey]); ???
Если ты _добавляешь_, а не изменяешь запись или никак не обрабатываешь этот Locate ?..
И еще после Locate, если он так нужен, не переоткрывай таблицу, а делай First, если необходимо курсор на первую запись в таблице переместить.
← →
Xmen (2006-04-20 12:43) [5]Да наверно я ощибся при написание кода.
Смысл был такой. Нужно было найти поле с таким значением и в эту запись только в другое поле записать значение суммы. Мне просто нужно было найти запись похожим параметром и в эту запись вводит данные в поле суммы. Наверно я усложнил задачу. А естьли другие выходы от этой проблемы.
← →
Xmen (2006-04-20 12:46) [6]Извеняюсь за append там должен был быть edit.
У меня ощибка выходить сразу после Locate. Ощибка такая
Access violation at address 0048AC6F in module "sim_client.exe". Write of address 000000000
← →
Sergey13 © (2006-04-20 12:48) [7]
while not qrSimbol.eof do
begin
kas_sim:= qrSimbol.FieldByName("kas_sim").Value;
ras_sim:= qrSimbol.FieldByName("ras_sim").Value;
if qrTemp_sim.Locate("kod_sim;ras_kod", VarArrayOf([kas_sim,ras_sim]), [loPartialKey]) then
begin
qrTemp_sim.Edit;
qrTemp_sim.FieldByName(qrSimbol.FieldByName("kod_filial").Value).Value:=qrSimbol .fieldbyname("SUMMA").Value;
qrTemp_sim.post;
end;
qrSimbol.next;
end;
← →
Xmen (2006-04-20 13:06) [8]
> Sergey13 © (20.04.06 12:48) [7]
>
> while not qrSimbol.eof do
> begin
> kas_sim:= qrSimbol.FieldByName("kas_sim").Value;
> ras_sim:= qrSimbol.FieldByName("ras_sim").Value;
> if qrTemp_sim.Locate("kod_sim;ras_kod", VarArrayOf([kas_sim,
> ras_sim]), [loPartialKey]) then
> begin
> qrTemp_sim.Edit;
> qrTemp_sim.FieldByName(qrSimbol.FieldByName("kod_filial").
> Value).Value:=qrSimbol .fieldbyname("SUMMA").Value;
> qrTemp_sim.post;
> end;
> qrSimbol.next;
> end;
Спасибо 5 минут до ответа точно также я изминил код, но как написал выше уменя ощибка выходить после Locate.
← →
Sergey13 © (2006-04-20 13:10) [9]2[8] Xmen (20.04.06 13:06)
Фик ее знает, откуда ошибка. Возможно есть обработчик (на перемещение по датасету) у qrTemp_sim, в котором написано не то что можно.
← →
Xmen (2006-04-20 13:25) [10]У меня перед этим кодом идет вот такой код. Может изза этого это ошибка.
Этот код берет данные с табл справ. и записваеть в временную таблицу.
with qrTemp_sim do
begin
if Active then Close;
Screen.Cursor := crHourGlass;
Close;
SQL.Clear;
SQL.Add("delete from temp_sim");
ExecSQL;
Close;
SQL.Clear;
SQL.Add("insert into temp_sim (kod_sim, ras_kod, naim_kod) select kod_kas_sim, ras_kod_kas_sim, naim_kas_sim from spr");
SQL.SaveToFile("sql.txt");
ExecSQL;
Screen.Cursor := crDefault;
end;
trSimbol.CommitRetaining;
← →
Sergey13 © (2006-04-20 13:29) [11]2 [10] Xmen (20.04.06 13:25)
Т.е. ты ишешь по запросу ""insert into temp_sim ..."?
И чего ты хочешь? 8-)
← →
Xmen (2006-04-20 13:56) [12]Ты был прав. Дабавил вот это и ситуация изминилось. Спасибо за помощ.
with qrTemp_sim do
begin
if Active then Close;
Screen.Cursor := crHourGlass;
SQL.Clear;
SQL.Add("SELECT * FROM temp_sim");
try
Open;
except
ShowMessage("Îøèáêà âûïîëíåíèÿ çàïðîñà");
Screen.Cursor := crDefault;
exit;
end;
EnableControls;
Screen.Cursor := crDefault;
end;
← →
Johnmen © (2006-04-20 14:07) [13]
> Xmen (20.04.06 13:25) [10]
А зачем столько клоузов?
← →
Xmen (2006-04-20 14:45) [14]Потамучто хочу, но еще не сумел стат нормалным программистом. Все еще учусь на своих ошибках. У меня так получается что я затрудняю свое дело, а потом делаю апгрети. Если дадите толковые советы по повуду повышение знание в областе программирование то я буду очен рад. (Не пошлите кудато, и не советуете бросит это дело и с книгами унас проблема.) ;-)
← →
Johnmen © (2006-04-20 14:50) [15]В принципе, на 80-90% достаточно штатного хелпа.
← →
Xmen (2006-04-20 16:26) [16]В некторым роде это мне помагает (с англ. не вери гуд, но понят можно), но основную помощ я беру из форума, а конкретно от вас. И за это вам СПАСИБО.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c