Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];

Вниз

Записи в таблице   Найти похожие ветки 

 
Муслик   (2008-06-27 13:48) [0]

Помогите разобратся с проблемой.
Есть три таблицы.

С первой таблицы я по двойному клику добавляю во вторую позиции и количество(позиции все разные) после того как всё сделано мне нужно в третью добавить данные из второй(это без проблем)
Проблема:
после я таблицу очищаю и заполняю новую, как мне добавить кол-во товара к существующему товару если товар из второй таблицы равен третьей, если товара не существует в третьей таблице добавить новый


 
Sergey13 ©   (2008-06-27 13:53) [1]

> [0] Муслик   (27.06.08 13:48)
> Помогите разобратся с проблемой.

Это уголовное дело. 8-)


 
clickmaker ©   (2008-06-27 13:54) [2]

if Table3.Locate("TovarID", TovarID, []) then
 увеличить количество
else
 добавить товар


 
Муслик   (2008-06-27 14:10) [3]

а если товар уже есть там


 
Palladin ©   (2008-06-27 14:50) [4]

тогда увеличить количество

тебе с lewka-serdceed надо скооперироваться, вы с ним вдвоем горы свернете...


 
Муслик   (2008-06-27 15:02) [5]

почесу не срабатывает

if form6.Table1.Locate("Naimen", "Naimen", [loPartialKey]) then
    showmessage("Существует");


 
Поросенок Винни-Пух ©   (2008-06-27 15:06) [6]

срабатывает


 
Поросенок Винни-Пух ©   (2008-06-27 15:08) [7]

шоумессаджа не видишь?

это потому что локейт срабатывает как надо.


 
Муслик   (2008-06-27 15:32) [8]

но если я добавляю другое наименование которое не существует он всё равно не срабатывает


 
Поросенок Винни-Пух ©   (2008-06-27 15:34) [9]

ты хочешь чтобы локейт всегда возвращал true вне зависимости от того, найдена запись или нет?


 
Поросенок Винни-Пух ©   (2008-06-27 15:35) [10]

if True or form6.Table1.Locate("Naimen", "Naimen", [loPartialKey]) then
   showmessage("Существует");


 
Игорь Шевченко ©   (2008-06-27 16:36) [11]

Поросенок Винни-Пух ©   (27.06.08 15:35) [10]

locate можно смело убрать


 
Поросенок Винни-Пух ©   (2008-06-27 16:38) [12]

if form6.Table1.Locate("Naimen", "Naimen", [loPartialKey]) or True then
  showmessage("Существует");

Вдруг по честному найдет
:)


 
Муслик   (2008-06-30 10:34) [13]

в последнем случае теперь прилюбом раскладе возвращает истину, даже если нет там такой позиции:(


 
Поросенок Винни-Пух ©   (2008-06-30 10:37) [14]

А ты не этого хотел?


 
Муслик   (2008-06-30 10:38) [15]

Ye Ну впринципе мне нужно добится того что если товар в списке уже есть то брибавить только количество а если нет прибавить и товар и количество


 
Поросенок Винни-Пух ©   (2008-06-30 10:39) [16]

почесу не срабатывает

if form6.Table1.Locate("Naimen", "Naimen", [loPartialKey]) then
   showmessage("Существует");


Потому что локейт ничего не нашел.


 
Муслик   (2008-06-30 10:43) [17]

Та колучается

if form6.Table1.Locate("Naimen", "Naimen", [loPartialKey]) or True then
 showmessage("Не существует");    end;


Хотя я добавляю товар который там уже есть но всё равно пишет


 
Поросенок Винни-Пух ©   (2008-06-30 10:47) [18]

Если ты силой мысли определяешь, что запись там точно есть, то ты локейт зачем используешь?
Если же те программист, то используй локейт, но только верь тому что он возвращает.
Если же ты маг и волшебник то тебе локейт не нужен.


 
Муслик   (2008-06-30 10:52) [19]

не ну полчается я локейтом проверку то делаю, и почему он мне возвращает что нет записи а она то есть


 
Поросенок Винни-Пух ©   (2008-06-30 10:55) [20]

Ну о чем я и говорю.
Зачем тебе тупой и неправильный локейт, если ты сам наперед знаешь, что запись там точно есть?


 
Муслик   (2008-06-30 10:56) [21]

проблема в том:
к примеру там 3 наименования товара как мне к определённому товару добавить количество а не ко всему вот что яф не могу разобратся вот и использую локейт


 
Поросенок Винни-Пух ©   (2008-06-30 10:57) [22]

В той таблице есть запись, содержащая в поле "Naimen" значение "Naimen"?

Ты вне зависимости от того, что там было добавлено ранее всегда ищешь строку "Naimen" ???

Голова!


 
Муслик   (2008-06-30 11:00) [23]

я предпологаю что так надо?
if form6.Table1.Locate("Naimen", table1.Fields.Fields[1].Value, [loPartialKey]) or True then
 showmessage("Не Существует");    end;


 
Поросенок Винни-Пух ©   (2008-06-30 11:02) [24]

я предпологаю что так надо?

Надо верить локейту, если используешь локейт.
Вот это точно надо.


 
Dennis I. Komarov ©   (2008-06-30 11:11) [25]

Пора орешник возраждать... Соскучился я по падающим шарам :)


 
Поросенок Винни-Пух ©   (2008-06-30 11:11) [26]

if form6.Table1.Locate("Naimen", table1.Fields.Fields[1].Value, [loPartialKey]) then
showmessage("Не Существует");  
else
with form6.Table1 do
 begin
  ShowMessage("Нету там такой записи");
  First;
  while not eof do
   begin
    ShowMessage("Ищу это:" + table1.Fields.Fields[1].Value + #13#10 + "а там это :" + FieldByName("Naimen").AsString)
    Next;
   end;
 end;


 
Dennis I. Komarov ©   (2008-06-30 11:13) [27]

> [26] Поросенок Винни-Пух ©   (30.06.08 11:11)


> showmessage("Не Существует");  

Тут ты погорячился :)


 
Муслик   (2008-06-30 11:17) [28]

Не срабатывает, почему?



 if form6.Table1.Locate("Naimen", table1.Fields.Fields[2].Value, [loPartialKey]) or True then
 begin
   showmessage("Ñóùåñòâóåò");
   form6.Table1.Edit;
   form6.Table1.Append;
   form6.table1.fields.fields[2].value:=table3.fields.fields[2].value;
   form6.Table1.Post;
   end
       else
       form6.Table1.Edit;
   form6.table1.fields.fields[2].value:=table3.fields.fields[2].value;
   form6.table1.fields.fields[3].value:=table3.fields.fields[3].value;

       form6.Table1.post;
   end;


 
Поросенок Винни-Пух ©   (2008-06-30 11:18) [29]

Удалено модератором


 
Муслик   (2008-06-30 11:20) [30]

Удалено модератором


 
Муслик   (2008-06-30 11:21) [31]

Поросенок Винни-Пух ©
Спасибо за пример... вроде бы разобрался


 
Dennis I. Komarov ©   (2008-06-30 11:23) [32]

> [30] Муслик   (30.06.08 11:20)


> в делфи нулёвый не отрицаю

Так за каким тогда тебе таблицы? Ищи букварь...


 
Муслик   (2008-06-30 11:26) [33]

Dennis I. Komarov ©  ну вот потихоньку и учу.

Поросенок Винни-Пух ©
Скажи а почему шаумесадж показывает только слово до пробела полностью строку не показывает тоесть
"кабель силовой" покажет только кабель


 
Муслик   (2008-06-30 11:31) [34]

ой извеняюсь! всё нормально


 
Поросенок Винни-Пух ©   (2008-06-30 11:32) [35]

потому что после пробела в строке ничего нет


 
Dennis I. Komarov ©   (2008-06-30 11:39) [36]

> ну вот потихоньку и учу.

не верю


 
Муслик   (2008-06-30 12:17) [37]

ну почему несрабатывает вотэтот код


  if form6.Table1.Locate("Naimen", table1.Fields.Fields[1].Value, [loPartialKey]) then
  begin
   with form6.Table1 do
     begin
     if form6.Table1.Fields.Fields[3].IsNull then
      exit
      else
      begin
          ShowMessage("Åñòü òàêàÿ çàïèñü");
          edit;
          fields[4].Value:=form1.Table3.Fields.Fields[4].Value;;
          post;
          end;
   end;
   end
   else
         with form6.Table1 do
   begin
          edit;
          append;
          fields[2].Value:=form1.Table3.Fields.Fields[2].Value;
          fields[4].Value:=form1.Table3.Fields.Fields[4].Value;
          post;

    while not eof do
   begin
          ShowMessage("Èùó ýòî:" + form1.table3.Fields.Fields[2].Value + #13#10 + "à òàì ýòî :" + FieldByName("Naimen").AsString);
          Next;
   end;
   end
   end;


 
Dennis I. Komarov ©   (2008-06-30 12:23) [38]

> [37] Муслик   (30.06.08 12:17)

Чем докажешь?


 
Муслик   (2008-06-30 12:24) [39]

впринципе срабатывает но неправильно срабатывает а ошибку найти не могу


 
ЮЮ ©   (2008-06-30 12:25) [40]

поставь брэкпоинт и пройдись по коду с плмощью F8.

И что значит "не спабатывает"? Кот должен работать, а не срабатывать.


 
Dennis I. Komarov ©   (2008-06-30 12:29) [41]

> [39] Муслик   (30.06.08 12:24)

Он "срабатывает" так как ты его написал


 
Муслик   (2008-06-30 12:40) [42]

Dennis I. Komarov ©
ну да а как правильно нужноо?


 
Dennis I. Komarov ©   (2008-06-30 12:51) [43]

> [42] Муслик   (30.06.08 12:40)

Смотря кому нужно.


 
Муслик   (2008-06-30 13:09) [44]

ну мне естествеено


 
Dennis I. Komarov ©   (2008-06-30 13:16) [45]

> [44] Муслик   (30.06.08 13:09)

Ну вот ты и написал. А написал так, потому что в букварь не смотрел


 
Муслик   (2008-06-30 13:32) [46]

спасибо разобрался не в той таблице исккал


 
Муслик   (2008-06-30 13:35) [47]

единственная проблема возникла как мне добавить весь список товара а не по одному


 
Сергей М. ©   (2008-06-30 13:39) [48]


> как мне добавить весь список


СписокТовара.First;
while not СписокТовара.Eof do
begin
 .. добавить куда-то там, куда тебе надо, текущую запись из СписокТовара
 СписокТовара.Next;
end;


 
clickmaker ©   (2008-06-30 13:41) [49]

> добавить весь список товара

если TTable, то можно BatchMove


 
Муслик   (2008-06-30 13:51) [50]

делаю так    with form6.Table1 do
   begin
          edit;
          first;
          while not Eof do
          append;
          fields[2].Value:=form1.Table3.Fields.Fields[2].Value;
          fields[4].Value:=form1.Table3.Fields.Fields[4].Value;
          next;
          post;


добавляется только тот товар на котором стоит курсор, и в добавок начал выскакивать dataset not in edit insert mode


 
clickmaker ©   (2008-06-30 13:54) [51]

> edit;
>          first;
>          while not Eof do
>          append;
>          fields[2].Value:=form1.Table3.Fields.Fields[2].Value;
>
>          fields[4].Value:=form1.Table3.Fields.Fields[4].Value;
>
>          next;
>          post;

прямо как в анекдоте "эрекция, эякуляция..." слова нравятся? смысл вообще всех этих edit, append, post понимаем?


 
Муслик   (2008-06-30 14:25) [52]

ну да , ну без едита он не будит записывать данные в таблицу то


 
Dennis I. Komarov ©   (2008-06-30 14:41) [53]

> [52] Муслик   (30.06.08 14:25)

а POST?


 
clickmaker ©   (2008-06-30 14:48) [54]

> без едита он не будит записывать данные

у тебя там Append
зачем edit-то в начале? Тем более, что first сбросит состояние датасета в dsBrowse


 
Муслик   (2008-06-30 14:50) [55]

почему тогда


  with form6.Table1 do
   begin
          first;
          while not Eof do
          append;
          fields[2].Value:=form1.Table3.Fields.Fields[2].Value;
          fields[4].Value:=form1.Table3.Fields.Fields[4].Value;
          next;
          post;


при водит к  dataset not in edit insert mode и ничего не происходит


 
Dennis I. Komarov ©   (2008-06-30 14:55) [56]

> [55] Муслик   (30.06.08 14:50)

Может все-таки почитаешь, а?

with form6.Table1 do
  begin
         first;
         while not Eof do begin
         Edit;
         fields[2].Value:=form1.Table3.Fields.Fields[2].Value;
         fields[4].Value:=form1.Table3.Fields.Fields[4].Value;
         post;
         next;
end;
end;


Но твой код страшен как ...


 
Игорь Шевченко ©   (2008-06-30 14:55) [57]

Муслик   (30.06.08 14:50) [55]

Книжку уже почитай, не морочь людям голову.


 
Dennis I. Komarov ©   (2008-06-30 14:56) [58]

> при водит к  dataset not in edit insert mode и ничего не
> происходит

А вот это ты нам теперь расскажи


 
clickmaker ©   (2008-06-30 14:56) [59]

справку по Post читал?
Dataset methods that change the dataset state, such as Edit, Insert, or Append, or that move from one record to another, such as First, Last, Next, and Prior automatically call Post.


 
Муслик   (2008-06-30 14:57) [60]

dataset not in edit insert mode всё равно


 
Плохиш ©   (2008-06-30 15:01) [61]

Прикольная ветка, уже 60 постов :-))


 
Поросенок Винни-Пух ©   (2008-06-30 15:02) [62]

dataset not in edit insert mode всё равно

спасибо разобрался не в той таблице исккал

аналагична


 
Dennis I. Komarov ©   (2008-06-30 15:07) [63]

> dataset not in edit insert mode всё равно

И кто в этом виноват?


 
Муслик   (2008-06-30 15:37) [64]

ВСЁ заработало только к отдельно позиции щаз ваще ошабка вышеприведённая


   if form6.Table1.Locate("Naimen", table3.Fields.Fields[2].Value, [loPartialKey]) then
  begin
   with form6.Table1 do
     begin
     if form6.Table1.Fields.Fields[2].IsNull then
      exit
      else
      begin
          ShowMessage("Åñòü òàêàÿ çàïèñü");
          edit;
          fields[4].Value:=IntToStr(StrToInt(form1.Table3.Fields.Fields[4].Value)+StrToInt(fields[4].value));
          post;
          end;
   end;
   end
   else
         with form6.Table1 do
   begin
          first;
          while not Eof do
          edit;
          fields[2].Value:=form1.Table3.Fields.Fields[2].Value;
          fields[4].Value:=form1.Table3.Fields.Fields[4].Value;
          next;
          post;

    while not eof do
   begin
          ShowMessage("Èùó ýòî:" + form1.table3.Fields.Fields[2].Value + #13#10 + "à òàì ýòî :" + FieldByName("Naimen").AsString);
          Next;
   end;
   end
   end;



 
Dennis I. Komarov ©   (2008-06-30 15:43) [65]

Удалено модератором


 
Муслик   (2008-06-30 15:52) [66]

Удалено модератором


 
Игорь Шевченко ©   (2008-06-30 15:55) [67]

http://ln.com.ua/~openxs/articles/smart-questions-ru.html

читать до полного и окончательного просветления.


 
Dennis I. Komarov ©   (2008-06-30 15:58) [68]

Удалено модератором


 
Муслик   (2008-06-30 16:04) [69]

Удалено модератором


 
Anatoly Podgoretsky ©   (2008-06-30 16:08) [70]

Зря ты это спрашиваешь, вдруг кто то ответит.


 
Поросенок Винни-Пух ©   (2008-06-30 16:08) [71]

где у меня ошибка?

Вот здесь, причем много:

ВСЁ заработало только к отдельно позиции щаз ваще ошабка вышеприведённая


 
Муслик   (2008-06-30 16:09) [72]

Удалено модератором


 
Поросенок Винни-Пух ©   (2008-06-30 16:17) [73]

ты спрашиваешь - мы отвечаем.


 
Dennis I. Komarov ©   (2008-06-30 16:23) [74]

Удалено модератором


 
Муслик   (2008-06-30 16:40) [75]

скажите где в коде проблема ошибка


 
Поросенок Винни-Пух ©   (2008-06-30 16:41) [76]

например здесь:

   while not Eof do
         edit;
         fields[2].Value:=form1.Table3.Fields.Fields[2].Value;
         fields[4].Value:=form1.Table3.Fields.Fields[4].Value;
         next;
         post;


 
Муслик   (2008-06-30 16:44) [77]

Удалено модератором


 
Поросенок Винни-Пух ©   (2008-06-30 16:45) [78]

Удалено модератором


 
Муслик   (2008-06-30 16:49) [79]

Удалено модератором


 
Dennis I. Komarov ©   (2008-06-30 16:52) [80]

Удалено модератором


 
Поросенок Винни-Пух ©   (2008-06-30 16:54) [81]

Удалено модератором


 
Игорь Шевченко ©   (2008-06-30 17:02) [82]

Предлагаю автору почитать правила данного сайта и научиться их уважать.



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.64 MB
Время: 0.009 c
2-1212824205
Genty
2008-06-07 11:36
2008.07.27
Как передать текстовые данные с одного компьютера на другой?


2-1214480489
lewka-serdceed
2008-06-26 15:41
2008.07.27
Поиск слова в строке


15-1212823588
lead-in
2008-06-07 11:26
2008.07.27
в Wind`е знаки вопроса


15-1212943505
Alexey
2008-06-08 20:45
2008.07.27
Организация доступа к данным


2-1214292989
NeiL
2008-06-24 11:36
2008.07.27
Декодировать число





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский