1. Wyświetlanie rekordów (SELECT *
FROM...) |
|
2. Dodawanie rekordów (INSERT into...) |
|
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT * FROM
Your_table');
Open;
end;
end; |
|
|
procedure TForm1.Button1Click(Sender:
TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('INSERT
INTO Your_table (Pole1, Pole2, Pole3) VALUES (:P1, :P2, :P3)');
ParamByName('P1').AsInteger:=StrToInt(Edit1.Text);
ParamByName('P2').AsString:=Edit2.Text;
ParamByName('P3').AsString:=Edit3.Text;
ExecSQL;
IBTransaction1.Commit;
end;
end;
|
|
|
|
4. Usuwanie całej
zawartości tabeli (DELETE FROM...) |
|
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('DELETE FROM
Your_table WHERE ID = :id');
ParamByName('id').AsInteger
:=StrToInt(Edit1.text);
ExecSQL;
IBTransaction1.Commit;
end;
end;
|
|
|
procedure TForm1.Button1Click(Sender:
TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('DELETE FROM
Your_table');
ExecSQL;
IBTransaction1.Commit;
end;
end;
|
|
5. Edytowanie
rekordów (Update...) |
|
|
6. Suma wartości w
danym polu (wynik w komponencie Edit) |
|
procedure
TForm1.Button1Click(Sender: TObject);
var
id:integer;
begin
id:=IBQuery1.Fields[0].AsInteger;
with IBQuery1, SQL do
begin
Close;
Clear;
Add('UPDATE
Your_table SET Imie =:imie, Nazwisko =:nazwisko,
Data_Ur=:data_ur, Adres=:adres, Telefon=:telefon WHERE id =
'+IntToStr(id)');
ParamByName('imie').AsString :=
Edit1.Text;
ParamByName('nazwisko').AsString
:= Edit2.Text;
ParamByName('data_ur').AsString
:= Edit3.Text;
ParamByName('adres').AsString
:= Edit14.Text;
ParamByName('telefon').AsString
:= Edit5.Text;
ExecSQL;
IBTransaction1.Commit;
//czyszczenie Editów po dodaniu rekordu do
bazy
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
end;
end;
|
|
|
{
IBQuery1 jest do wyświetlania, usuwania, edytowania bazy. IBQuery2
dodałem, aby był przeznaczony
do zadań specjalnych, jak np. sumowanie danych w dowolnym polu
tabeli.
}
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT SUM (Pole1) FROM Your_table');
Open;
Edit1.Text:=IBQuery1.Fields[0].AsString;
end;
end; |
|
7. Sortowanie rekordów po kliknięciu na tytuł pola |
|
|
8. Filtrowanie rekordów wg.
dowolnej wartości w danym polu |
|
procedure
TForm1.DBGrid1TitleClick(Column: TColumn);
var
atrybut, wartosc: string;
begin
atrybut:=Column.Title.Caption;
if atrybut='ID' then wartosc:='NR_ID';
if atrybut='LP' then wartosc:='LP';
if atrybut='IMI? then wartosc:='IMIE';
if atrybut='NAZWISKO' then
wartosc:='NAZWISKO';
if atrybut='DATA URODZENIA' then
wartosc:='DATA_UR';
if atrybut='ADRES' then wartosc:='ADRES';
if atrybut='TELEFON' then
wartosc:='TELEFON';
with IBQuery1, SQL do begin
Close;
Clear;
Add('SELECT * FROM Your_table
ORDER BY '+wartosc+';');
Open;
end;
end;
|
|
|
procedure TForm1.Button1Click(Sender:
TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT * FROM
Your_table WHERE Nazwisko = :nazw');
ParamByName('nazw').AsString
:='Kowalski';
Open;
end;
|
|
9. Wyświetlanie
rekordów dowolnego zasięgu (BETWEEN...And) |
|
|
10. Tworzenie pola z
autonumeracją (Calculated) - przydatne, gdy chcemy mieć pole z
liczbą porządkową "LP." |
|
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT * FROM
Your_table WHERE Data_ur BETWEEN :Data_Ur and :Data_Ur2');
ParamByName('Data_Ur').AsDate:=StrToDate(Edit1.Text);
ParamByName('Data_Ur2').AsDate:=StrToDate(Edit2.Text);
Open;
end;
end;
|
|
|
Jeśli utworzyłeś pole w Interbase lub Firebird, które potem chcesz
przeznaczyć na to, aby numerowało Twoje rekordy to wystarczy,
że zrobisz poniższe kroki:
a) kliknij prawym przyciskiem myszki (PPM) na komponent IBQuery i
wejdź do Fields Editor,
b) potem PPM i daj Add All Fields, aby pokazać wszystkie pola z
Twojej tabeli,
c) zaznacz pole, które ma podawać numery rekordów,
d) właściwość FieldKind ustaw na fkCalculated,
e) w zdarzeniu OnCalcFields (zakładka Events) komponentu IBQuery
wklep poniższy kod:DataSet.FieldByName('Your_column').AsInteger:= DataSet.RecNo;
A co jeśli nie utworzyłeś wcześniej takiego pola w IB lub FB? Wykonaj następujące kroki:
a) PPM na komponent IBQuery i wejdź do Fields Editor,
b) PPM i daj na New Field,
c) w Name wpisz nazwę nowego pola, Type daj na Integer, a na środku wybierz
Field Type jako Calculated,
d) w zdarzeniu OnCalcFields (zakładka Events) komponentu IBQuery wklep poniższy kod:
DataSet.FieldByName('Your_column').AsInteger:= DataSet.RecNo;
Skompiluj program i spróbuj dodać rekordy i usunąć. Obserwuj nowe pole.
|
|
11. Wpisywanie danych z zaznaczonego rekordu do Editów |
|
|
12. Ilość rekordów w tabeli |
|
procedure
TForm1.DBGrid1CellClick(Column: TColumn);
begin
if IBQuery1.RecordCount>0 then
begin
Edit1.Text:=IBQuery1.Fields[0].AsString;
Edit2.Text:=IBQuery1.FieldValues['Pole2'];
Edit3.Text:=IBQuery1.FieldValues['Pole3'];
Edit4.Text:=IBQuery1.FieldValues['Pole4'];
Edit5.Text:=IBQuery1.FieldValues['Pole5'];
Edit6.Text:=IBQuery1.FieldValues['Pole6'];
end
else
if IBQuery1.RecordCount=0 then
if Application.MessageBox('Musisz
dodać nowy rekord do bazy.','Brak
danych w bazie', MB_IconInformation or
MB_OK)=IDOK then.....
end;
|
|
|
procedure TForm1.Button1Click(Sender:
TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT COUNT (*)
FROM Your_table');
Open;
Edit1.Text:=IBQuery1.Fields[0].AsString;
end;
end;
|
|
13. Ilość rekordów, w których dane pole posiada wartość |
|
|
14. MAX
wartość z danego pola |
|
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT COUNT
(Pole1) FROM Your_table');
Open;
Edit1.Text:=IBQuery1.Fields[0].AsString;
end;
end;
|
|
|
procedure TForm1.Button1Click(Sender:
TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT MAX
(Pole1) FROM Your_table');
Open;
Edit1.Text:=IBQuery1.Fields[0].AsString;
end;
end;
|
|
15. MIN wartość z danego pola |
|
|
16. Średnia wartość z danego
pola |
|
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT MIN
(Pole1) FROM Your_table');
Open;
Edit1.Text:=IBQuery1.Fields[0].AsString;
end;
end;
|
|
|
//Pole Pole_liczbowe jest typu Double Precision
procedure TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT AVG(Pole_liczbowe) FROM
Your_table');
Open;
end;
Edit1.Text:=FloatToStrF(IBQuery1.Fields[0].AsFloat,
fffixed,10,2); //średnia z dwoma miejscami po przecinku
end;
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT * FROM Your_table');
Open;
end;
end;
|
|
17. Sumowanie
dowolnych wartości w danym polu (wynik w komponencie Edit) |
|
|
18.
Wyszukiwanie rekordów wg. dowolnego słowa lub jego części (LIKE) |
|
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT SUM (Pole1)
FROM Your_table WHERE Pole1 in (23, 145)');
Open;
Edit1.Text:=IBQuery1.Fields[0].AsString;//podaje
wynik = 168
end;
end; |
|
|
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('Select * from Nowa
where Kwota like :nazw');
ParamByName('nazw').AsString :=
'%'+Edit1.Text+'%';
Open;
end;
end;
|
|
19.
Autonumeracja (autoincrement) pola "LP" z Primary Key
i NOT NULL |
|
|
|
|
procedure
TForm1.Button1Click(Sender: TObject);
begin
with IBQuery1, SQL do
begin
Close;
Clear;
Add('SELECT
MAX (LP) FROM Your_table');
Open;
Edit1.Text:=IntToStr(IBQuery1.Fields[0].AsInteger
+ 1); //dodaj 1 do maksymalnej
wartości w polu LP i wpisz do Edit
end;
end;
|
|
|
|
|
|
|