Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.009 c
15-1144305632
McSimm
2006-04-06 10:40
2006.05.07
Цитирование. помогайте, пожалуйста.


15-1144419181
DelphiLexx
2006-04-07 18:13
2006.05.07
Как в Delphi 2005 установить компонент


3-1142270063
Bolek
2006-03-13 20:14
2006.05.07
ползователи и хранимые процедуры


15-1145028356
Kart S.
2006-04-14 19:25
2006.05.07
TEditWindow (Кто помнит Turbo Vision?)


3-1142264205
Ega23
2006-03-13 18:36
2006.05.07
Размер таблицы в памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский