Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.07;
Скачать: CL | DM;

Вниз

Не получается с записью данных   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
15-1145249352
DelphiN!
2006-04-17 08:49
2006.05.07
Помогите получить время в формате UnixTime на C#


1-1143550418
.Кирилл
2006-03-28 16:53
2006.05.07
Здравствуйте! Можно ли TabSheet скрыть?


2-1145339802
Ярослав
2006-04-18 09:56
2006.05.07
Помогите, не знаю в чем дело


15-1144934732
oldman
2006-04-13 17:25
2006.05.07
Забавно устроен интернет...


15-1145029888
ArtemESC
2006-04-14 19:51
2006.05.07
endian - что за слово такое?