Bazy danych - problem z pętlą

0

Witam koledzy i koleżanki

Mam problem z pętlą. generalnie myślę, że to łatwizna, ale już tyle z nią walczę, że nie umiem już o niej logicznie myśleć.

Więc tak:
mam tabelę, w której są wpisane towary np piwo 10szt, napoj 10szt, chleb 10szt itp

i teraz tak:
chciałbym dodać coś do tabeli i powiedzmy w edit1 wpisuje np paluszki 5szt
pętla przeszukuje mi całą tabelę żeby sprawdzić czy taki towar już jest. jako, że takiego towaru nie ma w tabeli, program musi dopisać nową pozycję do tabeli...
jeśli natomiast pętla znajdzie już taki towar to chciałbym, żeby dodana została tylko nowa ilość (5szt.), bo po co dodawać nową pozycję skoro taka już jest.

ale coś mi nie gra...

robię to mniej więcej tak (piszę z głowy, ogólnikowo):

while not eof do
begin
if nazwa towaru=edit1.text then
begin
table1.(nazwatowaru.ilosc):=table1.nazwatowaru.ilosc+(nowa ilość);
end;
table1.next;

i w tym miejscu bym chcial dopisać warunek, że jeśli nazwa towaru z tabeli jest inna niz edit1.text to program ma dodać nową pozycję do tabeli...

ale za czorta mi nie chce wyjść bo się robi nieskończona pętla :/

Wiem, że w tym kodzie góry są błędy ale chodziło mi o ogólne przedstawienie problemu.

Weźcie pomóżcie bo mi czacha dymi.

A może w ogóle źle robię, że wybrałem taką pętlę? Doradźcie coś!!

0

Jakich ty tabel używasz? Paradox czy jakie? Masakra. :|

Przerzuć się na SQL i komponenty IBX, nie będziesz miał takich problemów.

 begin
     with DBGrid1 do
     if Table1.Locate('TOWAR', Edit1.Text, [loCaseInsensitive, loPartialKey]) then 
     tutaj kod od uaktualnienia ilości znalezionego towaru
    else tutaj kod od dodania nowego towaru do bazy;
end;

TOWAR - nazwa pola w tabeli
Edit1 - wartość z tego komponentu będzie szukana w polu TOWAR

0

Używam paradox i jeśli jest taka możliwość to dalej chcę ich używać...

0

Mozliwość jest, powodzenia z indexami...

0

Dzięki :-P

0

nie ma za co...

0

poczytaj najpierw co to indexy, sql, locate itd. Twoje rozwiązanie, ładnie to ujmując, jest do d**y

0

Spoko. Juz sobie poradzilem. Temat mozna zamknac.

1 użytkowników online, w tym zalogowanych: 0, gości: 1