[ tamnicar @ 22.06.2005. 11:37 ] @
imam problema sa SQL izrazom!
uvod:
naime, preko ADO konekcije, a iz Excel tabele izvlacim polje sa nazivom [Datum rodjenja]!
ono mi je formatirano (u Excel-u) na Custom iz razloga sto iz prethodno upisanog JMBG-a treba, pomocu formule, da izvucem da mi se ispise datum rodjenja!
primer:
[JMBG]:1212989890020
[Datum rodjenja]:12.12.1989
e sad to radi OK!

razrada:
Moj problem je sledeci: (u Delphi-ju smo :) )
zeleo bih da mi izlista sve datume rodjenja izmedju neka dva!!! recimo izmedju 1970 i 1980!
probao sam sa SQL:
"select * from nazivTabele where [Datum rodjenja] between '%1970' and '%1980' "
ali ne radi !

zakljucak:
pomoc, unapred hvala :)
[ sasas @ 22.06.2005. 12:17 ] @
Umesto džokera probaj sa pravim datumima:

...WHERE [Datum rodjenja] BETWEEN '1.1.1970' AND '31.12.1980'

Samo što kod Delphija i ADO-a ni policija ne zna kako se trebaju datumi konvertovati u string da bi stvar proradila, tako da preporučujem korišćenje parametara.

ss.
[ tamnicar @ 22.06.2005. 13:27 ] @
pazi kako brlja !!!!
kada ubacim brojke umesto dzokera, izbacuje mi sve zapise, ne filtrira ih!!!
izgleda da je do onoga da ni policija ne zna kako radi !!!!
ajd pojasni drugi deo tvog post-a!
ono: koriscenje parametara???
[ dogriz @ 22.06.2005. 16:28 ] @
JMBG se sastoji od sledećih delova:
- prve dve cifre: dan rođenja
- druge dve cifre: mesec rodjenja
- sledeće tri cifre: godina rođenja (978, 953, 002, 005...)
- sledeće dve cifre: oznaka opštine
- sledeće tri cifre: oznaka pola (<500 muški pol, >=500 ženski pol)
- poslednja cifra: kontrolni broj

Ako nekoga interesuje kako se računa kontrolni broj, mogu da pošaljem algoritam (ako ga pronađem )

Edit: Pronašao sam kako se računa kontrolni broj...

recimo da su cifre matičnog broja redom:
n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13

x=n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*2+n5*3+n4*4+n3*5+n2*6+n1*7
y=x/11
z=x-y*11

if z=0 then n13=0
else n13=11-z

n13 je kontrolni broj

[Ovu poruku je menjao dogriz dana 22.06.2005. u 19:43 GMT+1]
[ dogriz @ 22.06.2005. 16:33 ] @
Parametrizovani upit:
Code:

select *
from nazivTabele
where [Datum rodjenja] between (:xOD) and (:xDO)


Pa onda sledi:
Code:

Query1.Params[0].AsDate:=StrToDate(EditOdDatuma.Text);
Query1.Params[1].AsDate:=StrToDate(EditDoDatuma.Text);
Query1.Open;


Ovo meni provereno dobro radi sa Delphi - IBExpress - Interbase kombinacijom, a pretpostavljam da će raditi i u tvom slučaju.

Pozdrav
[ nikola.j @ 22.06.2005. 17:15 ] @
>
>

Pa, s obzirom kako su uhapsili onog jadnicka u Sapcu, policija ocigledno ne ume
da se snadje sa vremenom. Ima sati vise nego prstiju :(
[ sasas @ 22.06.2005. 19:01 ] @
parametri rade kao što je već dogriz objasnio, sa malom ispravkom za ADO:

Query1.Parameters.Params[0].AsDate:=StrToDate(EditOdDatuma.Text);
Query1.Parameters.Params[1].AsDate:=StrToDate(EditDoDatuma.Text);
Query1.Open;

ss.
[ tamnicar @ 22.06.2005. 21:20 ] @
@dogriz
hehehe...
hvala za onaj hint kod JMBG-a!!!
ja se namuci da skontam kako da prebrojim muzjake i zenke :)
nisam znao za te 3 pretposlednje cifre cemu znace!!!!

@svi koji mi pomazete
nazalost nemam opciju params!!
kveri mi je ADO, to stoji.
ali kada upisem kveri1.parameters. - i tu mi se ne izlista params????
[ sasas @ 22.06.2005. 21:29 ] @
I dobitna kombinacija je:

Query1.Parameters[0].Value := StrToDate(EditOdDatuma.Text);
Query1.Parameters[1].Value := StrToDate(EditDoDatuma.Text);

ss.
[ tamnicar @ 22.06.2005. 21:42 ] @
jes' vala ;)
thanks
[ broker @ 23.06.2005. 08:23 ] @
Citat:
dogriz:
- sledeće tri cifre: oznaka pola (<500 muški pol, >=500 ženski pol)


Verovatno nije tako prosto vec ove tri cifre sadrze i neki redni broj rodjenja tog dana, inace bi moglo da se desi da dve osobe dobiju isti JBMG.
[ Nemanja Avramović @ 23.06.2005. 09:20 ] @
a sta ako se tog dana rodi vise od 500 muskaraca menjaju im pol hirurskim putem?
[ dogriz @ 23.06.2005. 10:24 ] @
Citat:
broker: Verovatno nije tako prosto vec ove tri cifre sadrze i neki redni broj rodjenja tog dana, inace bi moglo da se desi da dve osobe dobiju isti JBMG.


Kako se određuju te tri cifre zaista ne znam, sasvim je moguće što si ti rekao da se gleda redni broj rođenja toga dana, ali ovo za < i >= 500 je sasvim sigurno tačno za pol. (pretpostavljam da ide 001, 002... i 501, 502...)
[ tamnicar @ 23.06.2005. 14:31 ] @
pazi glupost!!!!

ono sto sam rekao da mi ne filtrira uopste kada stavim between i dva datuma, ustvari on filtrira!!!! ali je fora sto filtrira po DANIMA, ne uzimajuci u obzir mesec i godinu!!!!

kako je to moguce!?!?