[ Sole_boy @ 11.03.2002. 08:48 ] @
Postovanje,

imam jednu bazu podataka koja izgleda ovako npr:

RB | Artikal | S_artikla | Kol | Cena |
========================

e sada dodje mi kupac i npr. kupi mi artikal sa sifrom 342
sa kolicinom od 20 komada, a ja na formi imam jedan edit za sifru i jedan za
kolicinu koju kupac hoce. naravno i dugme na kom treba da uradim sledece:

da kada unesem sifru artikla (ako postoji) da mi stavi pokazivac na njega i kada unesem kolicinu recimo 20 da on automatski oduzme tih dvadeset od kolicine koja je na stanju.

Valjda ste me razumeli.

Hvala!
[ Riste Pejov @ 11.03.2002. 15:39 ] @
Koliko sam razumeo, ovo bi trebalo da bude resenje tvog problema

Prvo: postavi TQuery na formu i povezi je za bazu koja ti treba, postavi dve TEdit kontrole i jedan TButton

Drugo: Na onClick event za Button1 ide ovaj kod
Code:

try
with Query1 do
begin
close;
sql.clear;
sql.add('UPDATE artikl_tabela SET kol=kol-'+Edit2.text+' WHERE sifra='+Edit1.text);
execSQL;
end;
except
MessageDlg('Update nije uspeo, sifra ne postoji ili kolicina nije validna',mterror,[mbok],0);
end;


samo trebas startovati program u Edit1 uneti sifru a u Edit2 kolicinu koju trebas oduzeti iz prave kolicine u tabelu. I naravno samo click button1

Pozdrav
[ Sole_boy @ 11.03.2002. 20:12 ] @
Hvala, javicu ako bude radio i ako ne bude :)
[ Sole_boy @ 11.03.2002. 20:40 ] @
Postovanje,

nece da radi!

ne znam jel tamo kod UPDATE treba da stavim ime baze ili sta?

mozda zato nece.

Hvala
[ Riste Pejov @ 12.03.2002. 00:03 ] @
Citat:
Riste Pejov:
Code:

try
with Query1 do
begin
close;
sql.clear;
sql.add('UPDATE artikl_tabela SET kol=kol-'+Edit2.text+' WHERE sifra='+Edit1.text);
execSQL;
end;
except
MessageDlg('Update nije uspeo, sifra ne postoji ili kolicina nije validna',mterror,[mbok],0);
end;


artikl_tabela = ime tvoje tabele koje hoces da update !!!
kol = polje koje hoces da update-ujes !!!
sifra = primary key u tabeli koji sluzi identifikovati jedan jedinstveni record !

nadam se da sam malo razjasnio
[ Sole_boy @ 12.03.2002. 09:40 ] @
Pazi moja tabela izgleda ovako:

RB || Naziv_a || Kol || Cena || Sifra

e sada meni treba da vrsi pretragu po SIFRI a ne po RB

sada onaj code radi ali kada unesem neki broj koji ne postoji on nista ne prijavi
znaci po sifri mi treba ne po RB

Hvala
[ overflow @ 12.03.2002. 10:03 ] @
Probaj sa ovim kodom :

Code:

With Query1 do
begin
close;
sql.clear;
sql.add('UPDATE artikl_tabela SET kol=kol- :k WHERE sifra= :s');
Params[0].Name := 'k';
Params[0].Value := edit1.text; // u edit1 cuvaj kolicinu
Params[1].Name := 's';
Params[1].Value := edit2.text; // u edit2 cuvaj sifru artikla
ExecSQL; 
End;


Ti sam proveri pre pozivanja ovog koda da li su u ispravnom obliku uneti parametri u edit1 i edit2. Gore je Riste pogresio u koriscenju apostrofa ('). A da se to ne bi dogadjalo koriste se najcesce parametrizovani upiti.
Ne bi bilo lose da se snabdes nekom od knjiga o SQL-u (bilo u elektronskom ili papirnom izdanju). Toliko od mene.
[ Riste Pejov @ 12.03.2002. 13:58 ] @
Citat:
Sole_boy:
Pazi moja tabela izgleda ovako:

RB || Naziv_a || Kol || Cena || Sifra

e sada meni treba da vrsi pretragu po SIFRI a ne po RB

sada onaj code radi ali kada unesem neki broj koji ne postoji on nista ne prijavi
znaci po sifri mi treba ne po RB

Hvala

Jedan savet: koristi sifru kao primary key, a ne redni broj. Ili u najmanju ruku indexiraj sifru

Ukoliko hoces da proveris dali sifra postoji uradi prvo jedan ovakav upit:
Code:

with query1 do
begin
close;
sql.clear;
sql.add('SELECT * FROM artikl_tabela WHERE sifra='+edit1.text);
active:=true;
if not(Query1.recordcount>0) then
 begin
 messageDlg('sifra ne postoji',mterror,[mbok],0);
  exit;
 end;
end;

overflow: moj query nema nikakve greske :)
a kad smo vec kod koriscenje parametrizovanih upita sve je stvar navike,
ja sam naviko da pisem upite u takvom stilu zato sto mi je kod laksi za razumevanje.