[ popmilan76 @ 29.03.2012. 15:32 ] @
Imam tabelu sa dva polja sifra i ukupno,u koju ubacujem podatke i za sifru i za ukupno,ona recimo izgleda ovako

sifra ukupno
0101 1500
0146 2400
0144 1000

Ono sto meni treba jeste da kada postavim dva richedit u koji ukucam recim0 0101 a u drugi 0146,da mi sabira te redove,u prvom za 0101 je 1500 a u drugi za 0146 je 2400,dakle neki sql koji bi sabrao sve iz prvog richedit i iz drugog,da bih video koja je razlika....Da li je to moguce uraditi na nacin koji sam zamislio...Hvala
[ aca andrijevic @ 29.03.2012. 17:37 ] @
Pretpostavljam da ti je kolona sifra tipa varchar ili sta vec.Ako sam dobro razumeo sta ti treba:

Code (delphi):

SELECT SUM(ukupno) FROM tabela WHERE sifra IN('+QuotedStr(RichEdit1.Text)+','+QuotedStr(RichEdit2.Text)+');
 


[ popmilan76 @ 29.03.2012. 18:59 ] @
Uradio sam ovako ali izlazi samo prvi red,tj suma prvog iznosa,kad vec ukucam sledeci izlazi prazno....

query1.SQL.Clear ;
query1.Close;
query1.SQL.Add ('SELECT SUM(cast(ukupno as float)) FROM statistika');
query1.SQL.Add ('WHERE sifra IN('+QuotedStr(RichEdit1.Text)+','+QuotedStr(RichEdit2.Text)+')') ;
query1.Open;


sto je i logicno jer imam samo prvi iznos(richedit1.text),a meni trebaju posebno svi unosi u prvom richeditu,i posebno u drugom,tj sume svih redova
[ popmilan76 @ 29.03.2012. 19:25 ] @
Mogao big da stavim richedit1.lines[0],prvi red,pa [1] drugi red ili da stavim petlju for i = 0 to 20 pa da sabere sve to.....ali kako i petlju staviti,ili moze nesto lakse
[ popmilan76 @ 30.03.2012. 09:07 ] @
Ima li neko ideju za pomoc....ovde sam stavio richedit polje,ali to moze da bude i memo.....Hitno je....Hvala unapred
[ captPicard @ 30.03.2012. 10:46 ] @
Citat:
popmilan76: Mogao big da stavim richedit1.lines[0],prvi red,pa [1] drugi red ili da stavim petlju for i = 0 to 20 pa da sabere sve to.....ali kako i petlju staviti,ili moze nesto lakse


Nešto tipa (iz glave bacam)
Code:

for i:= 0 to richedit1.lines.count do
  iznos := iznos + richedit1.lines[i];
[ popmilan76 @ 30.03.2012. 11:18 ] @
I to sam uradio,ali mi tada izbacuje xbir toga sto ukucam,a meni treba ne ta kolona koju ukucam ,nego kolona do nje....kao sto sam napisao gore kveri za to,ako ukucam 0101,treba da mi sabira recimo 12000,pa ukucam 0146,treba da mi sabira 10000,tj tada vec 22000 itd
[ savkic @ 30.03.2012. 12:44 ] @
Dodaj GROUP BY.

> query1.SQL.Add ('WHERE sifra IN('+QuotedStr(RichEdit1.Text)+','+QuotedStr(RichEdit2.Text)+')') ;
> query1.SQL.Add ('GROUP BY SIFRA');
> Query1.Open;
[ popmilan76 @ 30.03.2012. 19:37 ] @
Isto se desava kao i bez group by jer sabira samo ono sto se ukuca u prvi red,a vec u drugi nista,prazno polje...Mora da ide neka petlja za to,inace richedit mi je skroz blank,bez linija
[ popmilan76 @ 30.03.2012. 19:48 ] @
Kada bih stavio ovaj kod onda bi sabirao prva dva reda.....

query1.SQL.Clear ;
query1.Close;
query1.SQL.Add ('SELECT SUM(cast(ukupno as float)) FROM statistika');

query1.SQL.Add (' WHERE sifra IN('+QuotedStr(RichEdit1.Lines [0])+','+QuotedStr(RichEdit1.Lines [1])+')');

query1.Open;

ali to nije resenje,imacu vise od dva reda nekada
[ rambo @ 31.03.2012. 01:28 ] @
Isto pišem iz glave, ali trebalo bi da razumeš poentu:

Code (delphi):

var
  sifre: String;
  ...
  sifre := RichEdit1.Lines[0];
  if RichEdit1.Lines.Count > 1 then
    for i := 1 to RichEdit1.Lines.Count - 1 do
      sifre := sifre + ', ' + RichEdit1.Lines[i];
  Query1.Close;
  Query1.SQL := 'SELECT SUM(CAST(ukupno AS FLOAT)) FROM statistika WHERE sifra IN (' + sifre + ')';
  Query1.Open;
 


Možda bi bilo bolje da jednostavno koristiš običnu TEdit komponentu i da u nju upisuješ željene šifre razdvojene zarezom. Zatim to jednostavno dodaš u kveri i rešio si problem. Ne razumem zašto koristiš TRichEdit za ovako nešto ako ti samo treba unos niza numeričkih vrednosti.
[ savkic @ 31.03.2012. 01:59 ] @
> Isto se desava kao i bez group by jer sabira samo ono sto se ukuca u prvi red,a vec u drugi nista,prazno polje...Mora da ide neka petlja za to,inace richedit mi je skroz blank,bez linija

Na osnovu tvog opisa, tebi treba group by kveri, sad možda nisam razumeo šta zapravo ti ne radi. Hajde ti pejstuj ne svoj kod već krajnju vrednost koju dobija kveri (Query1.SQL.SaveToFile).
[ popmilan76 @ 31.03.2012. 15:37 ] @
Evo ovako,imam tabelu sa dva polja sifra i ukupno,recimo da imam upis za sifru 0101 a za ukupno 12000,i za sifru 0123 imam ukupno 15000,i sada ukucam u richedit jedno ispod drugog 0101
0123

zatim imam polje kao rezultat kverija,koje sabira ovo iz richedita,u mom slucaju to je 27000
Savkicu u tvom kodu izadje samo 12000,vec kada ukucam 0123,izlazi mi prazno polje
Nadam se da sam bio jasan
[ savkic @ 31.03.2012. 18:46 ] @
> Evo ovako,imam tabelu sa dva polja sifra i ukupno,recimo da imam upis za sifru 0101 a za ukupno 12000,i za sifru 0123 imam ukupno 15000,i sada ukucam u
> richedit jedno ispod drugog
> 0101
> 0123

> zatim imam polje kao rezultat kverija,koje sabira ovo iz richedita,u mom slucaju to je 27000

To ti je onaj prvi upit koji je neko poslao, dakle:

SELECT SUM(ukupno) FROM tabela WHERE sifra IN(...

E sad šta tu tebi tačno ne radi, pošalji tvoj kod koji generiše sql upit i samu vrednost tog kverija.
[ popmilan76 @ 31.03.2012. 19:02 ] @
query1.SQL.Clear ;
query1.Close;
query1.SQL.Add ('SELECT SUM( ukupno ) FROM statistika');
query1.SQL.Add ('WHERE sifra IN('+QuotedStr(RichEdit1.Text)+','+QuotedStr(RichEdit2.Text)+')') ;
query1.SQL.Add ('GROUP BY Sifra');
Query1.Open;
radi kad ukucam sifru u prvi red,ali kad ukucam vec u drugi red tu ne rado,i pokaazije prazno polje
[ salaczr @ 31.03.2012. 19:18 ] @
Koliko RichEdit-a imas na formi?
Ako imas jedan onda ti je Rambo lepo napisao, samo dodaj f-ju QuotedStr kada god pises u promenljivu sifra.
Code:

  sifre := QuotedStr(RichEdit1.Lines[0]);
  if RichEdit1.Lines.Count > 1 then
    for i := 1 to RichEdit1.Lines.Count - 1 do
      sifre := sifre + ', ' + QuotedStr(RichEdit1.Lines[i]);


poz
[ popmilan76 @ 31.03.2012. 19:26 ] @
Za sada mi je potreban jedan,ali cu imati dva kasnije,ali ako uradim za jedan lako cu i za drugi richedit,u ovom kodu nesto ne stima,a sta ne znam,sifra je string polje a ukupno integer
[ popmilan76 @ 31.03.2012. 19:34 ] @
procedure TfrmKontrola.Button2Click(Sender: TObject);
var
sifre: integer;
i : integer;
begin
sifre := strtoint(RichEdit1.Lines[0]);
if RichEdit1.Lines.Count > 1 then
for i := 1 to RichEdit1.Lines.Count - 1 do
sifre := sifre + strtoint(RichEdit1.Lines);
showmessage(inttostr(sifre));
end;


end.

Ovaj kod mi sabira svaki red ali onaj broj koji ukucam,recimo....
2
2
izadje 4

ali nece kveri da radi
[ captPicard @ 31.03.2012. 20:26 ] @
Citat:
savkicHajde ti pejstuj ne svoj kod već krajnju vrednost koju dobija kveri (Query1.SQL.SaveToFile).
[ popmilan76 @ 31.03.2012. 20:53 ] @
kveri treba da dbija vrednost 12000,27000,itd...dakle sumu iz polja ukupno,za ukucane sifre
[ popmilan76 @ 31.03.2012. 22:13 ] @
Hocu ovo samo sa petljom ,ovde je primer sa dva reda,ali mi treba petlja sa bezbroj redova...ovde sam kucao prvi red lines[0],drugi lines[1],treba mi to samo sa lines

query1.SQL.Clear ;
query1.Close;
query1.SQL.Add ('SELECT SUM( ukupno ) FROM statistika');
query1.SQL.Add (' WHERE sifra IN('+QuotedStr(RichEdit1.Lines [0])+','+QuotedStr(RichEdit1.Lines [1])+')');
Query1.Open;
[ popmilan76 @ 31.03.2012. 22:21 ] @
Sredio sam,hvala svima na pomoci ,posebno tebi Rambo,malo sam modifikovao tvoj kod i promenio polje ukupno u integer,a bio je u stringu

Hvala jos jednom svima