Prev Next Up Title Contents Index

SQL-kyselyt


SQL- komponenttiin laitettiin hakuehto

	select * from puh
Tämä tarkoittaa, että valitaan kaikki kentät (*) taulusta puh. Muutetaan ohjelmaa siten, että hakuehto voidaan kirjoittaa itse.

Click here for Picture

Kuva . SQL-hakuehto

1.
Lisää komponentit Edit ja Button paneeliin PanelNimi:
		TEdit:
		  name = EditHakuehto 
		  Text = 'select * from puh'
		TButton:
		  name = ButtonHae
		  Caption = '&Hae'
		  Default = True
2.
Laita Hae- nappulan tapahtumaksi:
		procedure TFormPuh.ButtonHaeClick(Sender: TObject);
		begin
		  QueryPuh.Close;
		  QueryPuh.SQL.Clear;
		  QueryPuh.SQL.Add(EditHakuehto.Text);
		  QueryPuh.Open;
		end;
3.
Kokeile ajaa ohjelmaa esim. SQL- hakuehdoilla:
		1: select nimi from puh
		2: select nimi,postinumero from puh
		3: select * from puh where nimi > "Bond"
		4: select * from puh where nimi like "%p%"
		5: select * from puh where Upper(nimi) like "%P%"
		6: select nimi,osoite from puh order by osoite
		7: select osoite from puh
Huomattakoon ettei järjestetyn haun (order by) tulosta voida muokata! Delphi 1.0:ssa rajoitukset ovat vielä voimakkaammat, esim. like- hakuehdolla haettuakaan taulua ei voi editoida.

Tehtävä 3.23 Haku nimen alkuosan perusteella

Hakuehdolla
select * from puh where upper(substring(nimi from 7 for 2)) ="AK"
löydettäisiin mm. Ankka Aku. Lisää ohjelmaan Edit- ikkuna, johon käyttäjä voi kirjoittaa nimeä alusta päin. Kun käyttäjä on kirjoittanut a, haetaan kaikki a:lla alkavat nimet, kun käyttäjä painaa vielä lisäksi n, haetaan kaikki an - alkavat nimet jne. Haku tapahtuu heti kun kirjainta on painettu. Onko tehtävän alussa annettu vinkki sopiva tähän tarkoitukseen, vai olisiko joku vielä yksinkertaisempi hakuehto käytettävissä. Jos haun tulos halutaan korjailtavaksi, tulee tämä "ilmaiseksi" Delphi2.0:ssa, mutta 1.0:ssa joutuu koko haun tekemään toisella tavalla.
(idean alku Delphi 1.0:aa varten : "A"<=nimi and nimi <"B")


Prev Next Up Title Contents Index