Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SQL daje rezultat manje

[es] :: Pascal / Delphi / Kylix :: SQL daje rezultat manje

[ Pregleda: 2630 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

medixsa

Član broj: 155471
Poruke: 184
77.238.203.*



+2 Profil

icon SQL daje rezultat manje08.04.2008. u 23:31 - pre 195 meseci
Pozdrav svima !!!

Delphi 7

Zaista sam dosadan i ubi SQL pitanjima ,I am sorry !!!

Imam dva pitanja ako je moguce odgovor ?


Pitanje 1

Nerazumijem kako SQL daje netacan rezulat,odnosno ukupni iznos necega i on je umanjen za "1" - "jedan" broj ?



Moj kod:

QUpit.SQL.Clear;
QUpit.SQL.Add('select * from RacunP r join StavkeRacuna s on r.BrojRac = S.ID where (Datum between "'+DateToStr(DatumOd.Date)+'" and "'+DateToStr(DatumDo.Date)+'")');
QUpit.Open;
LBroj.Caption := inttostr(QUpit.RecordCount);


// Drugi upit samo iznos oepratora
QUpit1.SQL.Clear;
QUpit1.SQL.add('select Sum(IznosSUM) as IznosSUM,SUM(SumPDVr) as sumPDVr,SUM(sumbezPDVr) as sumbezPDVr from RacunP.dbf r join StavkeRacuna s on r.BrojRac = S.ID where (Datum between "'+DateToStr(DatumOd.Date)+'" and "'+DateToStr(DatumDo.Date)+'")');
QUpit1.Open;
LBroj.Caption := inttostr(QUpit.RecordCount);

IzvjOperator.Preview;


Pitanje 2

Kada pokrenem program sa bazom a baza koristi SQL upit u direktoriju gdje se nalazi program odnosno baza ,program
mi sam kreira ili izbacuje SQL fajlove neke temp npr:doslovno _QSQL933......_QSQL934...._QSQL955 itd da li su ovo
privremeni fajlovi koji trenutno koristi SQL za lakse manipulisanje podacima ili je to nepravilan kod SQL i nesto trece...

Pitanje br.1 mi je prioritet za odgovor

Hvala svima na odgovorima ?








Prikačeni fajlovi
 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
79.101.144.*

Sajt: www.topcode.rs


+2 Profil

icon Re: SQL daje rezultat manje09.04.2008. u 06:02 - pre 195 meseci
Citat:
medixsa: Pitanje 1
Nerazumijem kako SQL daje netacan rezulat,odnosno ukupni iznos necega i on je umanjen za "1" - "jedan" broj ?

Moj kod:
QUpit.SQL.Clear;
QUpit.SQL.Add('select * from RacunP r join StavkeRacuna s on r.BrojRac = S.ID where (Datum between "'+DateToStr(DatumOd.Date)+'" and "'+DateToStr(DatumDo.Date)+'")');
QUpit.Open;
LBroj.Caption := inttostr(QUpit.RecordCount);


// Drugi upit samo iznos oepratora
QUpit1.SQL.Clear;
QUpit1.SQL.add('select Sum(IznosSUM) as IznosSUM,SUM(SumPDVr) as sumPDVr,SUM(sumbezPDVr) as sumbezPDVr from RacunP.dbf r join StavkeRacuna s on r.BrojRac = S.ID where (Datum between "'+DateToStr(DatumOd.Date)+'" and "'+DateToStr(DatumDo.Date)+'")');
QUpit1.Open;
LBroj.Caption := inttostr(QUpit.RecordCount);

IzvjOperator.Preview;

QUpit.RecordCount ti vraca broj ucitanih slogova u komponentu. Umanjen je za 1 jer je tako napravljen, vecina counter-a u VCL je tako napravljena.
Dakle, ne daje ti SQL ovde odgovor, nego VCL.
Budi pazljiv sa RecordCount, jer neke komponente ne ucitavaju sve slogove odmah, nego deo po deo, i onda ti RecordCount ne vraca ukupni broj slogova, nego samo koliko je ucitano.

U SQLu koristi select count(*) from..., i to ti daje tacan broj (nije umanjen za 1).

Napomena: mislim da je bolje datumske parametre preko parametara a ne direktno sa DateToStr(DatumOd.Date). Razlog - regional settings moze biti podesen tako da ti ovaj program nece raditi, tj. datum nece biti ubacen kako SQL zahteva (moze biti 01/03/07, 01.03.2007, ... i jos niz kombinacija).
Primer:
QUpit.SQL.Clear;
QUpit.SQL.Add('select * from RacunP r join StavkeRacuna s on r.BrojRac = S.ID where (Datum between :datOd and :datDo)');
QUpit.Prepare;
QUpit.parambyname('datOd').asDateTime:=DatumOd.Date;
QUpit.parambyname('datDo').asDateTime:=DatumDo.Date;
QUpit.Open;
 
Odgovor na temu

medixsa

Član broj: 155471
Poruke: 184
77.238.203.*



+2 Profil

icon Re: SQL daje rezultat manje09.04.2008. u 14:51 - pre 195 meseci
Hvala ti na ponudjenom odgovoru.Ne znam da li sam shavtio dovoljno odgovor, govorite o RecordCount koliko prikaze u komponentim, mene interesuje kako dobijem iznos (sumPDV) umanjen za jedan,a SQL prikaze sve slogove iz tabele ,vidim
da SQL ne dobro sabira a daje tacan broj slogova u redovima.Izvini ako dajem pogresan komentar na Vas ogovor..


Hvala puno !!!!
 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
77.46.212.*

Sajt: www.topcode.rs


+2 Profil

icon Re: SQL daje rezultat manje09.04.2008. u 20:15 - pre 195 meseci
Sorry, zbunio si me sa RecordCount-ovima...
Ima li ona tabela na slici neke veze sa pitanjem? Ja sam proverio digitronom i meni izgleda da dobro sabira
Mislis na problem sa zaoukruzivanjem decimalnih mesta mozda?

 
Odgovor na temu

medixsa

Član broj: 155471
Poruke: 184
77.238.204.*



+2 Profil

icon Re: SQL daje rezultat manje09.04.2008. u 22:41 - pre 195 meseci
iznos "sumPDV" nije tacan, iznos je umanjen za (1) jedan.Jedino sto mogu da kazem da Windowsow kalkulator ne valja ,ako ustanovim da windows ne racuna, definitivno prelazim na Linux,jer Linux nema bug-a niti propusta u radu,izuzev sto je ogranicen ...mala sala naravno

Display fromat sa stavio ovako : "0.00" i sad ne znam kako se to desava

Hvala


 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: SQL daje rezultat manje09.04.2008. u 23:28 - pre 195 meseci
> iznos "sumPDV" nije tacan, iznos je umanjen za (1) jedan.Jedino sto mogu da kazem da Windowsow kalkulator ne valja ,ako ustanovim da windows ne racuna,
> definitivno prelazim na Linux,jer Linux nema bug-a niti propusta u radu,izuzev sto je ogranicen ...mala sala naravno
> Display fromat sa stavio ovako : "0.00" i sad ne znam kako se to desava

Tebe je mnogo teško razumeti, hajde počni iz početka. Koristiš SUM agregatnu SQL funkciju i rezultat koji ona daje se razlikuje od ručnog zbira?
Ako je tako pošalji koja je to suma i sabirci (koristi select * from tabela), nemoj koristiti formatiranje tako da se prikažu što tačniji iznosi (na više decimala ako ih ima).
 
Odgovor na temu

medixsa

Član broj: 155471
Poruke: 184
77.238.204.*



+2 Profil

icon Re: SQL daje rezultat manje09.04.2008. u 23:50 - pre 195 meseci
DA, funkcija SUM mi vraca negativan rezultat

Nema mi smisla da ne zaokruzujem iznos onda bi iznos izgledao dosta velik npr. sumPDV = 1,230909 lupam itd..


kao prvo pozdrav za Vas

Imam dvije tabele jedna je master druga details

Na jednoj formi (izvjestaji ) sam postavio Query1( "QUpit") i sa SQl spojio details tabelu u master preko BrojRac = ID

Primjer:
'select * from RacunP r join StavkeRacuna s on r.BrojRac = S.ID'


Polja:
object tblStavkeRacunaIznosSUM: TFloatField
FieldName = 'IznosSUM'
DisplayFormat = '0.00'
FieldKind = fkData
end
object tblStavkeRacunasumPDVr: TFloatField
FieldName = 'sumPDVr'
DisplayFormat = '0.00'
FieldKind = fkData
end
object tblStavkeRacunasumbezPDVr: TFloatField
FieldName = 'sumbezPDVr'
DisplayFormat = '0.00'
FieldKind = fkData
end

Ova polja nisu definisana u dizajnu kao: CalcFields
vec vrijednost dobivao od drugih polja kao sto su: sumPDv , bezPDV, Iznos

sumPDv , bezPDV, Iznos : ova polja su definisana kao: CalcFields i njihova vrijednost se proslijedujuje poljima
IznosSUM
sumPDVr
bezPDVr
vidi u gore kodu !!!

Hvala




Prikačeni fajlovi
 
Odgovor na temu

Nemanja_666
Nemanja Tatic
Gradiska

Član broj: 116292
Poruke: 221
87.250.102.*



+19 Profil

icon Re: SQL daje rezultat manje10.04.2008. u 00:43 - pre 195 meseci
Greska je prilikom zaokruzivanja.
recimo imamo ovako, imas:

1.001
1.002
1.004

ti dobijas u poljima:

1.00
1.00
1.00

jer zaokruzujes na dvije decimali.
ali kad racunas sumu dobijas (1.001 + 1.002 + 1.004 = 1.007) a to je priblizno (zaokruzeno na dvije decimale) 1.01
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: SQL daje rezultat manje

[ Pregleda: 2630 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.