1.2 - BAZI
TANIM VE KISALTMALAR
TANIM
|
|
AÇIKLAMA
|
Alias
|
:
|
Takma ad .Database
konfigürasyon bilgisini özel bir veri tabanýna baðlanmak için gerekli bilgiyi
içerir. InterBase, dBase gibi.
|
Alt sorgu
|
:
|
Sorgu içerisinde
baþka bir veri tabanýndan sorgulaya- rak veri alan bölüme denir.
|
Blob
|
:
|
Resim dosyasýnýn
veri tabanýndaki türü.
|
Boolean
|
:
|
Mantýksal deðer.
True veya False deðerlerini alýr.
|
Buffer
|
:
|
Tampon bellektir.
|
Cache
|
:
|
Ön bellektir. Çok
hýzlý olmasý sebebiyle tercih edilir.
|
CaseSensitive
|
:
|
Büyük küçük harf
ayrýmý yapmasý. A<>a
|
Client
|
:
|
Ýstemci veya
terminal olark ifade edilir.
|
Component
|
:
|
Görsel geliþtirme
dillerinde kullanýlan nesnel öðelere denir .
|
Dataset
|
:
|
Tablo , veri tabaný
baðlantýsýný belirtir.Deplhi'de temel veri tabaný sýnýfýdýr.
|
DataSource
|
:
|
Veri tabaný veri
bilinçli bileþeni. TTable, TQuery vb.. nesneler ile veri bilinçli nesnelerde
gösterilecek veri için aracýlýk yapar.
|
Event
|
:
|
Nesnelerle ilgili
herhangi bir durumda meydana gelen olaylar. OnChange, OnExit gibi.
|
Index
|
:
|
Belli bir alan
dizisine göre çeþitli formatlarda sýralama.
|
Join
|
:
|
Farklý tablolardan
farklý alan verilerin alýnýp birleþtirilmesi.
|
Keyfield
|
:
|
Anahtar alan.
|
Master- Detail
|
:
|
Ana veri ve buna
baðlý detay veri iliþkisi
|
Parametre
|
:
|
Yöntemlere
(Procedure, Fonksiyon) deðer göndermek ve almak için kullanýlan deðiþkenler
|
PartialKey
|
:
|
Arama iþleminde
kýsmi deðer bildirimi
|
Primary Key
|
:
|
Birincil anahtar
alaný
|
Remote Server
|
:
|
Uzak sunucu
|
Server
|
:
|
Sunucu
|
Session
|
:
|
Oturum
|
Child Obje
|
:
|
Çocuk nesne
|
Query
|
:
|
Sorgu.Belli
kriterlere uyan veri kümesini elde etme
|
Host
|
:
|
Sunucu
|
Protokol
|
:
|
Yerel ve uzak
uygulamalar arasýnda ver alýþ veriþinde kullanýlan ortak dil
|
DML
|
:
|
Data Manipulation
Language - Veri Ýþleme Dili
|
-R-
|
:
|
Read Only - Salt
Okunur
|
[]
|
:
|
Tercihe baðlý
kullanýlacak parametre, özellik, deðerleri göstermek için kullanýlýyor.
|
BDE
|
:
|
Borland Database
Engine - Borland Veri Tabaný Motoru
|
BÖLÜM 2
2.1- SQL 'in Yapýsý ve Geliþimi
Yapýsal sorgu dili (SQL) sunucusu veri
kümeleri üzerinde matematiksel iliþkiler gerçekleþtiren veri tabaný motorudur.
Burada verinin nasýl bulunduðunu anlatmaya gerek yoktur. Veriyi almak için
sadece SQL e baþvurmak yeter.
SQL, 1974 te icat edilmesine raðmen
1986 yýlýna kadar bir standart haline gelmedi. Bu arada bir çok geliþtirmeci
bunun üzerine iliþkisel veri tabaný sistemleri geliþtirdiler. Bu desteklere
raðmen bunlar yeterince uygun olmadý çünkü: ofissel bir standart ortaya
konmadan geliþtirilmiþlerdi. SQL 'in ilk baþlangýcý iliþkisel veri tabaný
modelinin kuramýný ortaya koyan , E:F. Codd' un 'A relational model for large
shared data banks " adlý makalesine dayandýrmak olasýdýr. Daha sonra IBM
tarafýndan Structured English Query Language (SEQUEL) tanýmlanmýþtýr. Ýlk SQL
standardý ISO tarafýndan 1987'de ISO 9075 kodu ile yayýnlanmýþtýr.Bu dilin
standart bir dil olmasý hýzla yaygýnlaþmasýný saðlamýþtýr. Ayrýca ANSI
versiyonu ise , teknik olarak ISO 9075 ile tamamý ayný nitelikte olup 1986' da
X3.135 kodu ile yayýnlanmýþtýr. ISO ,1989'da 'bütünlük artýrýmý özelliðini'
(integrity enhancement feature) ekleyerek ISO 9076 kodu ile yayýnlamýþtýr.
Ayrýca ANSI , gömülü (embedded) SQL dilleri ile iliþkili standartlarý da içeren
X3.168 standardýný yayýnlamýþtýr.
Standartlar üzerindeki çalýþmalar ve
eklemeler halen sürmektedir.Standart SQL komutlarý ile çalýþmanýn doðal olarak
uygulamalarýn çeþitli heterojen ortamlar arasýnda taþýnabilirliði
(portability), açýk sistem mimarisini destekleme gibi çeþitli açýlardan büyük
yararlarý vardýr.Bütün bunlarla birlikte SQL 'deki eksiklikler geliþtirmecileri
bu konudaki yeni eklemelere ve geliþmelere mecbur kýlmýþtýr.
SQL lokal ve uzak veri tabaný mimarilerini desteklemektedir.
2.2- LOKAL SQL
Local SQL tam yol ve dosya ismi
yazmanýza izin verir. Select from 'Parca.DBF' ifadesi ile Select from "C:\ORNEK\PARCA.DBF" ifadesinin yazýmýnda
ikisi de doðrudur. Bunlar yerine BDE Alias (takma adlar) da kullanýlabilir.
Örneðin Select
from "DDX:Table1"
NOT: Yerel tablo ismini yazmazsanýz BDE Configuration Utility
'deki belirlenen tipi kabul eder. Bu tip tablolar ile Query
nesneleri ile iliþkilendirilen standart takma adlar için olan varsayýlan sürücü
tipindedir.
Sütunlar
Local SQL Paradox' un çoklu kelimeli
sütun isimlerini ve SQL anahtar kelimelerinin uzunluðunun iki katýný
desteklemektedir. Bu SQL anahtar kelimeleri þunlardýr.
• Tek veya çift týrnak içinde yazýlanlar
• SQL tablo ismi ile baþlayan veya
tablo ile iliþkili isimler
Örnek:
Select
M."Mus_no" from Musteri
Tarihler
Local SQL tarihlerin U.S formatýnda da
olduðu gibi MM/DD/YY
(ay/gün/yýl) olarak girilmesini bekler.Uluslar arasý tarih formatýný
desteklemez.
Veri Ýþleme
Bazý sýnýrlamalarla birlikte Local SQL aþaðýdaki ifadeleri desteklemektedir.
Select
: Var olan veriyi açmak için
Insert :
Tabloya yeni bir veri eklemek için
Update
: Var olan veriyi düzeltmek için
Delete
: Tablodan veriyi silmek için
Aþaðýdaki bölümler
Local SQL DML ifadeleri için kullanýlabilen fonksiyonlarý tarif eder.
• DML ifadelerindeki parametre alt
durumlarý
• Toplam fonksiyonlarý
• String fonksiyonlarý
• Tarih (date) fonksiyonlarý
• Operatörler
• Güncellenebilen sorgular
SQL Ýfade ve
Deyimleri
A)
Select
Select ifadesi bir veya daha fazla
tablodan veri getirmek için kullanýlýr. Çoklu tablolardan veri iþini yapan
Select ifadelerine "Join" (birleþtirme) denir. Local SQL Select
Ýfadelerinin aþaðýdaki þekillerini desteklemektedir.
SELECT [DISTINCT] sütun_listesi
FROM tablo_adý
[WHERE arama_durumu]
[ORDER BY sýralama_listesi]
[GROUP BY grup_listesi]
[HAVING sahiplik_durumu]
[UNION secim_açýklamasý]
(heterojen birleþmeler)
Aþaðýda belirtilenler hariç bütün cümlecikler ANSI_standart
SQL' ce kullanýlýr. [ ] içinde olanlar istenirse kullanýlýr.
A.1 Distinct
Cümleciði
Kelime manasý ayrý ,hariç,tek demektir.
Deyim olarak ayný alandaki benzersiz olanlarý bulmayý ifade eder.
Aþaðýdaki örnek þehir alaný ne olursa olsun tüm öðrencileri gösterir
Select ogr_sehir From Ogrenci
Aþaðýdaki örnek ise sehirleri ayný oln öðrencilerin yalnýz ilkini
seçer.
Select DISTINCT ogr_sehir From Ogrenci
A.2 From
Cümleciði
From cümleciði verinin getirileceði
tablo veya tablolarý belirtir . Tablo referansý tek bir tablo ,tablolarýn
virgülle ayrýldýðý bir liste veya iç/dýþ birleþtirme (SQL -92 standartýnda
belirtilen ) olabilir . Örneðin aþaðýdaki ifade tek bir tabloyu çaðýrýr :
Select ogr_ad,ogr_soyad From "Ogrenci.dbf"
Aþaðýdaki ifade bir sol dýþ birleþtirmesini gösteren tablo referansýna bir
örnektir.
Select From Parca left Outer join Ýthalat On
Parca.Parca_no=Ithalat.Parca_no
A.3 Where
Cümleciði
Ýsteðe baðlý olarak kullanýlan Where
cümleciði arama durumunda belirtilen kriterlere uyan kayýtlarýn alýnmasýný
böylece filtreleme yapýlmasýný saðlar.
Örneðin aþaðýdaki ifade sadece Parca_nosu 543' den büyük olan satýrlarý çaðýrýr.
Select From Parca Where Parca_no>543
Where cümleciði IN
yüklemini de içerebilir. IN yüklemi parantez ,içinde deðerler
listesini içerir. Örneðin aþaðýdaki ifade sadece Parca_no 'su IN
yüklem listesindeki öðelere eþit olan satýrlarý çaðýrýr.
Select From Parca Where Parca_no IN (543,544,650,680)
Select from Dersler Where bol_kod='12' and ogr_sinif='4'
Where cümleciðinde karþýlaþtýrma için > ,<,=,
<> gibi operatörler kullanýlabilir. Bunun yaný sýra IN , ANY , ALL
, EXIST yüklemleri de kullanýlabilir
A.4 Order
By
Order By cümleciði çaðrýlan satýrlarýn
sýrasýný belirtir.
Örneðin aþaðýdaki sorgu öðrenci ismine göre alfabetik(artan) sýralý olarak
bütün öðrencilerin listesini verir
Select From Ogrenci Order By ogr_no ASC
aþaðýdaki sorgu öðrenci soyadýna göre alfabetik(azalan) sýralý
olarak bütün öðrencilerin listesini verir.
Select From Ogrenci Order By ogr_soyad DESC
Hesaplanmýþ alanlar korelasyon(
iliþki) ismine veya sýra durumuna göre sýralanabilir. Örneðin aþaðýdaki sorguda
ad ile soyad alaný birleþtirilerek oluþturulan alana göre sýralanarak kayýtlar
ekrana çaðrýlýr.
Select soyad || ',' ad || as tam_ad ,telefon From müsteri Order by
tam_ad
A.5 Group
By
Group By cümleciði toplam
fonksiyonlarý için çaðrýlan satýrlarýn nasýl gruplandýrýlacaðýný belirler.
Örnek:
Select Parca_no, Sum(miktar) as Toplam
From Parca
Group By Parca_no
A.6 Having
Having cümleciði kaydýn sorguca
belirlenen deðerlere sahip olup olmadýðýna bakar. Group By
ile birlikte kullanýlýr. Having cümleciðiyle denkleþmeyen gruplar sonuç
kümesinden çýkarýlýrlar. Alt sorgular Having cümleciðince desteklenirler.
Alt sorgu ,ana sorguca döndürülecek
kayýtlarýn sayýsýný sýnýrlayan arama koþullarýdýr. =,<,>
gibi koþullandýrmalar yanýnda IN ,ANY ,ALL, EXIST
gibi ön yüklemler de kullanýlabilir.
Bölümlere göre öðrenci sayýlarý 500 kiþinin üstünde olan bölüm kodlarýnýn
listesini veren bir örnek aþaðýdadýr.
Select DISTINCT ogr_bol_kod, COUNT() From Ogrenci Group By
ogr_bol_kod Having COUNT ()>500
A.7 Union
Union cümleciði iki veya daha fazla
Select ifadesinin sonucundan tek bir tablo üretmek için kullanýlýr.
Örneðin :
Select From Ogrenci UNION Select From Veli
A.8 Ýntersect
Sorgulardan elde edilen ortak
kayýtlarý verir.
Select From Ogrenci INTERSECT Select From Veli
A.9 Minus
Birinci sorguda bulunup ikinci sorguda
bulunmayan kayýtlarýn bulunmasýnda kullanýlýr.Diðer bir þekilde bir grup öðenin
seçimden çýkarýlmasý amacýyla kullanýlýr.
Select Ogr_num From Ogrenci MINUS (Select ali_ogr_num, From
alýnandersler)
A.10 Heterojen
Birleþmeler
Local SQL farklý veri tabanlarýndaki tablolarýn birleþtirilmesini destekler.
Heterojen birleþtirme yapýlacaðý zaman yerel bir takma ad seçebilirsiniz. Takma
ad seçmek için SQL/SELECT ALIAS 'ý seçin. Eðer Alias
seçmezsen Local SQL tabloyu kullanýlan veri tabanýnýn olduðu aktif dizinde
bulmaya çalýþacaktýr.
Örneðin ISLER Alias 'ý fonksiyonda geçen veri tabaný idaresi olabilir.
Yerel bir Alias seçtikten sonra bir tablo ismi belirtirsek
• Yerel tablolar için hem Alias' ý hem
yolu belirtin
• Tablolarý uzaktan kontrol için sadece Alias'
ý belirtin
Aþaðýdaki ifade Paradox tablosundan ve Dbase tablosundan veri getirir.
Select Distinct M.Müs_no,M.Sehir,S.Siparis_no From
"MUSTERI.DB" M , "SIPARIS.DBF" Select Where M.Müs_no=
S.Müs_no
B) Update
Ansi -Standard Update için belirtilen
bir sýnýrlama yoktur.
Örneðin :
Update ULKETABLOSU Set baskent='Paris' Where ULKE='FRANSA' And baskent='Istanbul'
C) Delete
Ansi -Standard Delete için belirtilen
bir sýnýrlama yoktur
Örneðin :
DELETE FROM TEZ9.DB WHERE SOYAD="ERTEM"
DML Ýfadelerinde Alt Durum Parametreleri
Dml
ifadelerinde deðerler yerine kullanýlabilen deðiþkenler :
den sonra yazýlmalýdýrlar.
Örneðin :
SELECT ad,soyad From "Musteri.db" Where soyad>:var1 and
ad<:var2
Toplam Fonksiyonlarý
Çaðrýlan
datayla birlikte aþaðýdaki Ansi-Standard SQL toplam fonksiyonlarý
kullanýlabilir.
SUM () Bir sütundaki
deðerlerin toplamýný alýr.
AVG () Bir sütundaki
deðerlerin ortalamasýný alýr.
MIN () Bir sütundaki
deðerlerin en küçüðünü bulur.
MAX ()
Bir sütundaki deðerlerin en büyüðünü bulur.
COUNT () Bir sütundaki
deðerlerin sayýsýný bulur
Örnek :
SELECT SUM (BRUT) FROM
PERSONEL
String
Fonksiyonlarý
UPPER() Stringi büyük
harfe çevirir.
LOWER() Stringi küçük
harfe çevirir.
TRIM()
Stringin bazý kýsýmlarýný alýr.
SUBSTRING() Stringten
alt stringler oluþturur.
Örnek :
Select from Tez1.db Where Upper(Soyad)='ARSLAN'
Tarih
Fonksiyonu
Local SQL EXTRACT()
fonksiyonuna tarih/zaman alanlarýndan tek sayýsal alaný almak ve þu þekilde
kullanmak suretiyle çalýþmasýna izin verir.
EXTRACT (extract_alan From alan_adý)
Örneðin aþaðýdaki ifade tarih alanýndan yýl deðerini alýr.
Select Extract( Yýl From Dogum_tar) From Ogrenci
Ayný zamanda MONTH ,DAY,HOUR,MINUTE,SECOND deðerlerini de
bu fonksiyonu kullanarak çýkartabilirsiniz.
NOT : EXTRACT TIMEZONE_HOUR veya TIMEZONE_MINUTE cümleciklerini desteklemez.
Operatörler
Local SQL þu operatörleri destekler.
Aritmetik (
) ,+ , - , , /
Karþýlaþtýrma <,
>,= ,<>, >=,=< ,IS NULL ,IS NOTNULL, : Boþluk
olarakda nitelendirilir. ' ' boþluk
deðildir.
IN
,NOTIN :Bir küme içinde olup olmama durumu
[NOT]
BETWEEN x AND y :Bir deðerin x ile y arasýnda veya dýþýnda
olmasý durumlarýný belirtir
ALL
:Bir kümedeki tüm deðerlendirir ve bir eþitlik veya eþitsizlikle kullanýlýr. Where
Ucret>=ALL(10000,20000)
ANY
: Bir kümeden elde edilen deðerlerin her hangi biriyse seçime dahil olunur.
[NOT]
EXISTS :Alt sorgu kavramýyla kullanýlýr.
[NOT]
LIKE :Benzerlik iþlemcisi Where isim Like 'A%' Ýsmi 'A' ile
baþlayanlar
Mantýksal (
) ,AND ,OR , NOT
String birleþtirme ||
Güncellenebilen
Sorgular
SQL
linkleri hem tekli hem de çoklu tablolarýn güncelleþtirilebilir sorgularý için
geniþletilmiþ destek sunar. Þu kýsýtlamalar güncellemelere etki eder.
• Link yapýlan alanlar güncellenemez
• Index anahtarlamasý hataya yol açar.
Aktif Sorgulardaki Sýnýrlamalar
Tekli tablo sorgularý veya görünümleri (güncellenebilir olanlar) þunlarý
saðlar:
• Join Union,Intersect ,Minus iþlemleri yoktur.
• Distinct anahtar kelimesi Select' te yoktur.
• Select cümleciðindeki her þey basit Sütun referansý veya hesaplanmýþ alandýr
, Toplam fonksiyonlarýna izin verilmez
• From cümleciðinde referans edilen tablo hem güncellenebilir taban tablosu
veya güncellenebilir görünüme sahiptir.
• Group By ve Having cümleciði yoktur.
• Alt sorgular yoktur, alt iliþkili sorgular yoktur.
• Herhangi bir Order By cümleciði Index Ek kýsýtlamalar alanlara veya kursor
metotlarýna uygulanabilir.
Tablo
Birleþtirme (JOIN) iþlemi
Sorgulanan veriler eðer birden fazla tabloda yer alýyorsa Join iþlemi yapýlýr.
Join iþlemi yapýlabilmesi için iki tabloda da ortak alanlar olmalýdýr.
Örneðin
OGRENCI SINAV
NO AD SOYAD NOTLAR VIZE1 VIZE2 FINAL
1 ISMAIL ARSLAN 1 90 100 100
2 ARZU ARSLAN 4 85 90 95
3 ISRAFIL ARSLAN 3 92 80 90
Çizelge 1 Birleþtirilecek iki tablo
Select No,Ad,Soyad,Fýnal
From Ogrenci, Sinav
Where No=Notlar and no<'4'
Aktif Join (Baðlantýlar) Üzerindeki Kýsýtlamalar
Aktif baðlantýlar kursorlere baðlýdýrlar ve þuralarda kullanýlabilirler.
• Bütün baðlantýlar soldan saða dýþ baðlantýlardýr
• Bütün baðlantýlar Indexlerle desteklenirler.(Paradox veDbase için)
• Dýþ ýsmarlama tanýmlanmaz
• Her tablo(Join deki) taban tablodur.
• Sorgu tekli tablo güncelleþtirmesini engelleyecek hiçbir elemente sahip
deðildir.
Sabitler
(Constraints)
Herhangi bir güncellenebilir sorguyu çalýþtýrmadan önce Query durum özelliðinin
StmtConstarined 'ini true ayarlayarak bir tabloyu sabitleyebilirsiniz. Kayýt
ekleme veya düzeltme iþlemi yeni kaydýn kaybolmasýna neden olduðu durumlarda
bir hata oluþacaktýr.
Hesaplanmýþ
Alanlar
Güncellenebilen sorgular için bir ek alan sonuç alaný olarak tanýmlanabilir.
Bunlar hem read-only hem hesaplanýþ alan olurlar. BDE fonksiyonundan DbiPutField çaðrýsý
belirtilen alanýn yeniden hesaplanmasýna neden olur.
Bde
Fonksiyon Çaðrýlarý (Sonuç Sorgularý Üzerinde)
Eðer bir sorgu kursor döndürürse o kursor BDE fonksiyonu olan DbiOpenTable
'dan dönen düþük seviyedeki yetenekleri tam olarak destekler.
Böylece filtreler ve alan haritalarý ileri sonuç kümesi temizlemelerine uygulanmak
için kullanýlabilir. Açýk tablodaki kursörlerin tersine DbiAddindex
ve DbiSwitchtoIndex
isimleri uygulanamamaktadýr.
Veri
Tanýmlama
Local SQL veri Tanýmlama dilini oluþturma,deðiþtirme ,tablolarý silme
indeksleri oluþturmak ve sýralamak hususlarýný destekler. Görünümler
desteklenir.
Local SQL DDL ifadelerindeki deðerler için deðiþkenlerin alt durumlarýna izin
vermez.
Aþaðýdaki DDL durumlarý desteklenmektedir.
• CREATE TABLE
Tablo oluþturma
• ALTER TABLE Tablo
düzeltme
• DROP TABLE Tablo
sime
• CREATE INDEX
Index oluþturma
• DROP INDEX Index
silme
• CREATE VIEW
Görünüm oluþturma
B1. Create
Tables (Tablo Oluþturma)
Create Table aþaðýdaki sýnýrlamalar olmak üzere kullanýlýr:
• Domain 'e dayanan sütun
tanýmlamalarý desteklenmez
• Sabitler Paradox için PRIMARY KEY
ile sýnýrlanmýþtýr.
• Dbase de sabitler desteklenmez
Örneðin aþaðýdaki ifade Paradox ta Primary Key 'in soyad ve ad sütunlarý
üzerinde sabitlenmiþ bir veri tabaný tablosu oluþturur.
Create Table "ISCI.DB"
(
Soyad char (15),
Ad char (15),
Maas numeric(10,2),
Bölüm smallint,
Primary Key (soyad,ad)
)
Aþaðýdaki örnek yukarýdakinin Dbase için yazýlmýþ olup Primary
Key atlanmýþ halidir.
Create Table "ISCI.DBF"
(
Soyad char (15),
Ad char (15),
Maas numeric(10,2),
Bölüm smallint,
)
B2. Paradox ve
Dbase Tablosu Oluþturma
Local SQL 'i kullanarak Paradox veya Dbase tablosu oluþturabilirsiniz. Bunu
ismi verirken uzantýsýný belirterek yapabilirsiniz.
".DB" Paradox için
".DBF" Dbase için
Eðer yerel tablo isminin uzantýsýný yazmazsanýz bu tablonun uzantýsý BDE
Configuration Utility de Sistem sayfasýnda Varsayýlan sürücü ayarýndaki tür
olacaktýr.
B3.
Alter Table (Tablo Düzeltme)
Local SQL aþaðýdaki Ansi-Standard
Alter Table alt kullaným deyimlerini desteklemektedir. Tabloyu deðiþtirirken
yeni sütunlar ekleyebilirsiniz.
Sütun ekleme ALTER
TABLE tablo_ismi ADD sütün_ismi
veri_tipi [,ADD sütun ismi veri tipi ...]
Örneðin aþaðýdaki ifade Dbase tablosuna 1 sütun ekler
ALTER TABLE "Ogrenci.DBF" ADD ortalama smallint
Sütun silme ALTER
TABLE tablo_ismi DROP sütün_ismi [,DROP sütun ismi ...]
Aþaðýdaki ifade tablodan iki sütün siler
ALTER TABLE "Ogrenci.Dbf" DROP soyad, DROP ad
ADD ve DROP iþlemleri tek ifadede birlikte kullanýlabilir. Örneðin aþaðýdaki
ifade iki sütun siler ,bir sütun ekler:
ALTER TABLE "Market.DB" DROP kdv,DROP topkdv,ADD topalýs
integer
NOT : Query1.Open dedikten sonra SQL 'i çalýþtýrýrsak
EnoResultSet hatasý verir .
NOT : Mevcut bir alaný eklersek veya olmayan bir alaný kaldýrmaya çalýþýrsak EDBerror
hatasý alýrýz.
B4.
Drop Table (Tablo Silme)
Bu komut Paradox veya Dbase tablosunu siler .
Örneðin DROP TABLE "ISCI.DB"
Bu iþlem tabloyu tamamen siler.
NOT : Query1.Open dedikten sonra SQL 'i çalýþtýrýrsak EnoResultSet hatasý verir
.
B5.
Create Index (Index Oluþturma )
Create Index kullanýcýlara aþaðýdaki formatý kullanarak tablolara index
oluþturmayý saðlar.
Create
Index index_adý ON tablo_adý (sütun [,sütun...])
Create Index dbase tablolarý için index oluþturmanýn tek
yoludur.
Aþaðýdaki ifade Dbase dosyasý için index oluþturur.
Create Index namex ON "Depo.Dbf" (malz_adi)
Paradox kullanýcýlarý Create Index ile ikincil indexler oluþturur. Ýlk index
olan Primary dosyalarý Primary Key belirterek tablo oluþtururken Create Table
ile birlikte yazýlarak oluþturulur.
B6.
Drop Index (Index Silme)
Local SQL Ansi -Standard Drop Index ifadesi ile oluþturulmuþ indexi silmenize
izin verir. Bu Dbase ve Paradox dosyalarýný destekler.
DROP INDEX tablo ismi.index_ismi |PRIMARY
Primary anahtar kelimesi Paradox primary indexleri silmek için kullanýlýr.
Örneðin aþaðýdaki ifade ISCI.DB deki ana primary index 'i silmek için
kulllanýlýr.
Drop Index "ISCI.DB".Primary
DBase index dosyalarýný veya ikincil Paradox indexlerini silmek için index
ismini yazmanýz gerekiyor.
Drop Index "ISCI.DB".Namex
NOT : Eðer tablonuzun indexi yoksa EdbEngineError index does'nt exist mesajý
verir.
B7.
Create View
Görüntü Select ifadesinden bir görsel ifade oluþturur. Ýhtiyacýnýz olan bu
veriyi bu hareketli ýzgara veya pencereyle tablo üzerinde görebilir. Bunu
yaparken de teknik iþlemler gözükmez. Karýþýk beceri gerektiren Select
cümleciði yazmaktansa kullanýcý bir görünüm seçer.
Create View bir veri görünümü seçer ki bu veri tabanýnda ki bir veya daha fazla
tablodan oluþur. Geri döndürülecek (veya görüntülenecek) satýrlar kaynak
tablodaki sütun listelerinden Select ifadesiyle seçilenlerce belirlenecektir.
Select proje ,birleþtirme iþlemlerini eðer bunlar tabloysa yapýlabilir.
Create View kullanýcýlara aþaðýdaki biçimi kullanarak tablolar üzerinde
görünümler oluþturmalarýna izin verir.
Create View görünüm_adý [sütun_adý [,sütun_adý]...]
Create View ClientDataRepository (CDR) ile birleþiyor.
CDR görünümü tanýmlayan Select cümleciðini içerir. "WITH CHECK
OPTION" sabit görünümler oluþturmak için desteklenir. Görünümlerin
görünümü de desteklenir. Yine de Basamakla/Yerel (cascade/local) görünüm
özelliði desteklenmez. Çünkü tüm güncellenebilen görünümler sabitleri
basamaklar.
DDL Örnekleri
a) Drop Table ( Tablo
Silme)
Eðer tablo ismi , karakter periyodu içeriyorsa, ismi çift týrnak içinde
gösteriniz.
Drop Table "C:\Data\Customer.Db"
Eðer tablo ismi , karakter periyodu içermiyorsa, ismi çift
týrnak içinde göstermeyin. Drop table clients
NOT: Query1.Open yazýlmamýþ olmasý gerekiyor.
b)
CREATE INDEX
Create Index Insoyad On Tez9[Soyad]
Create Index Parca On Parcalar (Part_No)
Create Index Pers_maas On personel(brüt)
Paradox : Paradox birincil indexleri yalnýzca tablo oluþturulurken
oluþturulabilir. Ýkincil indexler büyük harf duyarsýz korunduðunda mümkünse
oluþturulur.
Dbase : Dbase indexleri belirtildiði gibi oluþturulur. Index ismi tag ismidir
c)
DROP INDEX
Index silerken Tablo_ Ismi.Index_ Ismi þeklinde bir yazýlým kullanýrýz.
Drop index.part_no
Drop index.primary
Drop tez9.insoyad
DML ( Data
Manipulation) Örnekleri
Aþaðýdaki cümlecikler
:
Select From, Where ,Order By, Group by ve Having
Aþaðýdaki toplamlar
SUM , AVG , MIN , MAX , COUNT ve
Aþaðýdaki operatörler
, , / , =, <> , is NULL
UPDATE , INSERT , DELETE tarafýndan desteklenen operatör ve cümleciklerdir.
Aþaðýdaki örnekler standart veri tabanlarýyla kullanýlan DML
ifadelerine birer örnektir.
1. Örnek
UPDATE
Update Esya
Set sehir=' Erzurum'
Where esya.sehir='Aydýn'
Sehir adý 'Aydýn' olan kayýtlarýn sehir adý alanlarýný
'Erzurum' ile deðiþtirir.
2. Örnek
INSERT
Insert into Esya(parca_no,sehir)
Values ('aa090','Ankara')
Parca ve Sehir alanlarýna bu deðerleri ekler
3. Örnek
DELETE
Delete From Esya
Where parca_no='aa090'
Parca_nosu 'aa090' olan kayýtlarý siler
4. Örnek
Birleþtirmek için SELECT
Aþaðýdaki örnek SELECT ifadesinin nasýl JOIN olarak kullanýldýðýný gösteriyor
Select Distinct P.parca_no, P.miktar, E.sehir
From Parca P ,Esya E
Where p.parca_no=E.parca_no
And P.miktar>20
Order by P.miktar, E.sehir, P.parca_no
Birleþtirme amacýyla kullanýlan bir SELECT ifadesi WHERE cümleciðini
içermelidir ki en azýndan bir alanýn her iki tabloda da eþit olduðunu kontrol
edebilsin.
5. Örnek Alt Seçimler
Select P.parca_no from Parca P
Where P.miktar In
( Select I.miktar from Ithalat I
Where I.parca_no='aa090')
Parca.Db 'deki miktar alaný ithalattaki parca_nosu aa93 olan kayýtlardaki
miktarlarýn birine eþit olan parca.dbf deki kayýtlarýn parca_no' larýný alýr.
6. Örnek Group By
Select parca_no , Sum (miktar) as PQTY
From Parca
Group by parca_no
NOT : Select cümleciklerindeki Toplam alanlarý eðer hesaplanan alan
kullanýldýysa Group By cümleciði kullanýlmalýdýr.
7. Örnek Order By
Aþaðýdaki örnek azalan tipteki cümlecikte kullanýlan Order By 'a bir örnektir.
Select Distinct musteri_no
From c:\data\musteri
Order by musteri_no Descending
NOT : Ascending= artan Descending = azalan
BÖLÜM 3
3.1
TQUERY NESNESÝ
Tquery Nedir : SQL ifadelerine dayanan dataset 'leri iþleyen
bir Delpi nesnesidir. Veri tabanýna SQL ifadeleriyle ulaþmak için Tquery
kullanýrýz . Query öðeleri Sybase, SQL Server, Oracle, Informix, DB2,
InterBase, Mysql gibi uzaktan kontrollü serverlarda , Paradox, dBASE, Access,
FoxPro gibi Interbaselerde , ve ODBC türü veri tabanlarýyla kullanýlýr.
Avantajlarý :
• Ayný anda birden fazla tabloya eriþme (Join Ýþlemi)
• Tüm satýr ve sütünü çaðýrmaktansa istenen satýr ve sütunlara ulaþma.
NOT: Tquery nesnesinin ölçülebilir veri tabaný uygulamalarýnda özel bir önemi
vardýr. Eðer yerel veri tabanlarýyla yapýlan uygulamalarý daha sonra uzaktan
kontrollü server uygulamalarýna dönüþtürmek gibi bir olasýlýk varsa Tquery
öðesi bu geçiþi kolaylaþtýrýr.
3.2 TQUERY'nin Hiyerarþik Yapýsý
TObject
TPersistent
TComponent
TDataSet
TBDEDataSet
TDBDataSet
TQuery
TQuery' den
ile Gelen özellikler
Constrained
DataSource
Local
ParamCount
Params
Prepared
RequestLive
RowsAffected
SQL
SQLBinary
StmtHandle
Text
UniDirectional
TDBDataSet'
den Kalýtýmsal Gelen Özellikler
Database
DatabaseName
DBHandle
DBLocale
DBSession
Provider
SessionName
UpdateMode
TBDEDataSet'
den Kalýtýmsal Gelen Özellikler
CacheBlobs
CachedUpdates
CanModify
ExpIndex
Filter
Filtered
FilterOptions
Handle
KeySize
Locale
RecNo
RecordCount
RecordSize
UpdateObject
UpdateRecordTypes
UpdatesPending
TDataSet'
den Kalýtýmsal Gelen Özellikler
Active
AutoCalcFields
Bof
Bookmark
Constraints
DefaultFields
Designer
EOF
FieldCount
FieldDefs
Fields
FieldValues
Found
Modified
Name
State
TComponent'
dan Kalýtýmsal Gelen Özellikler
ComObject
ComponentCount
ComponentIndex
Components
ComponentState
ComponentStyle
DesignInfo
Owner
Tag
VCLComObject
3.3- TQUERY
NESNESÝNÝN ÖZELLÝKLERÝ
1) CONSTRAINED
(KISITLAMA)
Select
ifadeleriyle üretilen sonuç kümesine uymayan güncellemelere veya eklemelere
izin verilip verilmeyeceðini ve konulan sýnýrlamalarýn aktif olup olamayacaðýný
belirler.
Property Constrained: Boolean;
Bu özelliði kullanarak SQL de Paradox
veya Dbase tablolarý için yazýlmýþ sonuç kümesine aykýrý bir veri girildiðinde
buradaki sýnýrlamalarýn geçerli olup olmayacaðý belirlenir. False ise
sýnýrlamalar göz ardý edilir. True ise eðer deðiþtirme veya ekleme
iþlemlerindeki veriler sýnýrlara uymuyorsa bu giriþlere izin verilmez.
Select * From Customers Where (Custno > 1400 And Custno <
1500)
TCHECKCONSTRAINT
Bir alan öðesi için yazýlan
sýnýrlamalarýn toplamýný içerir. Alan öðeleri geçerli veri deðerlerini
tanýmlayan kontrol koþullarýný destekler. Bu nesne verilen alana etki eden
kontrol koþullarýnýn toplamýný saklamaktadýr
2) DATASOURCE
Aktif alan deðerlerini veri tabanýndan
alarak SQL ifadesinde kullanmayý saðlayan DataSource öðesini belirler.
Property DataSource: TDataSource;
Datasource baþka bir dataseti iþaret
etmelidir. Bir query öðesini göstermemelidir. Datasource' ta belirtilen dataset
oluþturulmalý,çalýþtýrýlmalý ve parametre baðlanmadan önce açýlmalýdýr.
Parametreler Query' nin Prepare metoduyla çalýþtýrýlýrlar.
Ýpucu
: DataSource' u özellikle linklerde master-detail iliþkisinde kullanýn. Ayný
zamanda Params setinde olmayan parametreleri baðlamayý garantilemek için veya
Parambyname metodunu çaðýrmak için kullanýlýr.
Eðer SQL cümlesi
parametre içermezse veya parametreler Params özelliðini veya ParambyName
olayýný kullanýyorsalar bunu kullanmanýza gerek yok.
3) -R- LOCAL
Bir Querynin uzak eriþimli servarlardakl
SQL tablolarýndan daha çok bir veya daha fazla Paradox veya dBase tablosunu mu
tercih ettiðini belirtir.
Property Local :Boolean;
Bir sorgu uzak serverdaki SQL
tablosuna deðilde bir veya daha fazla Paradox veya Dbase tablosuna eriþiyorsa (
SQL tablosu yerine ) bu özellik true olur. Yoksa Local False 'tur. Local bir
uygulama sorgunun Prepare metodunu sorguyu çalýþtýrmadan önce otomatikman
ayarlar.
Bazý sorgu öðe setleri (constrained
gibi) Paradox veya Dbase tablolarý için çok anlamlýdýr. Diðerleri SQL
serverlarýn uzaktan kontrolünde anlamlýdýr. Local bize ulaþýlan veri tabanýnýn
tipine dayanarak code'da mantýksal ayrýmlar (branþlar) için yararlý bilgiler
verir. Ayný zamanda BDE' nin bir sorguyu kendi Local Query motorunu kullanarak
mý yoksa SQL ifadelerini doðrudan uzaktan kontrollü server 'a geçerek mi bir
sorguyu parsellediði belirlenebilir.
4)
PARAMCHECK
SQL özelliði çalýþma anýnda
deðiþtirildiðinde parametre listesinin (bir sorgu için) tekrar üretilip
üretilmediðini belirler.
property ParamCheck: Boolean;
Varsayýlaný true dur. Ve bu params
özelliðinin çalýþma esnasýnda otomatik olarak yeniden üretileceðini belirler.
Paramcheck true olduðunda aktif SQL ifadesi doðru parametre numarasýnýn
üretileceðini garantilemiþ olur.
Bu özellik parametre kullanan veri
tanýmlama ifadeleri için çok yararlýdýr. Örneðin interbase
store procedure için sorgu öðesi kullanýrken. Parametresiz
sorgu kullanan uygulamalar Paramcheck özelliðini False ayarlayabilir ama diðer
durumlarda bu özellik true olmalýdýr.
5)
-R- PARAMCOUNT
Query için aktif
parametre sayýsýný belirtir
Property Paramcount :Word;
Paramcheck özelliði true ise
Paramcount daima Query için SQL ifadesindeki gerçek parametre sayýsýna uyar.Bir
uygulama Params özeliðine parametre ekleyebilir veya parametre silebilir. Bu
tür deðiþiklikler Paramcount özelliðine otomatik olarak yansýr.
6)
PARAMS
Sorgunun SQL ifadesi için parametre
bilgisini saklar.
Property Params[Index:Word] Tparams
Çalýþma anýnda Params'a parametre
isimlerini deðerlerini ve veri tiplerini dinamik olarak görmek ve ayarlamak
için ulaþýr. Params 0 tabanlý bir parametre kayýt dizisidir. Index ulaþýlacak
dizi elemanýný belirtir.
NOT: Her parametrenin ismi bilindiðinde parametre deðerlerini ayarlamanýn ve
çaðýrmanýn daha kolay bir yolu ParambyName
kullanmaktýr. Fakat Parambyname ile parametrenin ismini ve tipini
deðiþtiremeyiz.
Select ifadelerinde kullanýlan parametre boþ (NULL) olamaz Fakat bunlar Update
ve Insert ifadelerinde Null olabilir.
TQuery
Params girisi
Örnek1:
Query1.Prepare;
Query1.Params[0]:='Argentina';
Query1.ExecSql;
Örnek2:
Query1.Params[0].Asstring:=(sender as Tedit).Text;
Query1.ExecSql;
7) PREPARED
Bir sorgunun çalýþtýrýlmak için
hazýrlanýp hazýrlanmadýðýný belirler.
property
Prepared: Boolean;
Eðer true ise Query hazýrlanmýþtýr.
False ise hazýrlanmamýþtýr. Bir sorgunun çalýþtýrýlmadan önce hazýrlanmasý
gerekiyorsa ve bu daha önce hazýrlanýrsa çalýþtýrma performansý
artar.(özellikle bu ayný parametre deðerlerini alarak birden fazla çalýþtýrýlan
bir parametreli sorgu ise) .
if not Query1.Prepared then
begin
Query1.Close;
Query1.Prepare;
Query1.Open
end;
NOT : Bir uygulama aktif Prepared ayarlarýný sorguyu hazýrlamak veya
hazýrlamamak için deðiþtirebilir. Eðer Prepare true ise bunu False yapmak
Unprepare metodunu sorguyu hazýrlamamasý için çaðýrmak demektir. Prepared false
ise bunu true ayarlamak sorguyu hazýrlamak için Prepare metodunu çaðýrmak
demektir. Prepared False ise bunu true ayarlamak sorguyu hazýrlamak için
Prepare metodunu çaðýrmak demektir. Genelde Prepare ve Unprepare 'ý direkt
olarak çaðýrmak daha iyi bir programlama tekniðidir.
8)
REQUESTLIVE
Sorgu çalýþtýðýnda uygulamanýn BDE'
den canlý sonuç seti bekleyip beklemeyeceðini belirler.
Property Requestlýve :Boolean;
Requestlive 'i BDE nin uygulama için
sonuç seti üretmeyi deneyip denemeyeceðini belirlemek için ayarlayýn.
Varsayýlan deðeri False'dir ve bu Query read-only sonuç seti döndürür.
Requestlive 'ý true olarak ayarlamak
BDE' den canlý sonuç setinin döndürüleceðini garantilemez. Yalnýzca BDE 'nin bu
seti döndürmek için çalýþacaðýný garantiler .BDE yalnýzca Select yazýlýmý canlý
sonuç seti için gerekli ifadelere sahip olduðunda canlý sonuç seti döndürür.
Eðer Requestlive true ise fakat
yazýlým gereklere uygun deðilse BDE read-only sonuç setini Paradox veya Dbase
için döndürür veya uzaktan kontrollü serverlar için hata koduna döndürür.
9)
-R- ROWSAFFECTED
Son query iþlemince kaç satýrýn
güncellendiðini veya silindiðini belirler.
Property Rowsaffected :Integer;
Eðer RowsAffected -1 ise sorgu hiçbir
satýra etki etmemiþtir.
Örneðin Label1.Caption:=Inttostr(Query1.RowsAffected)
10)
SQL
Sorguda çalýþtýrýlacak SQL ifadesini
saklar.
Property SQL:Tstrings
SQL 'i bir sorgu öðesi olan Execsql
veya Open
metotlarý çaðrýldýðýnda çalýþmak üzere SQL ifadesi oluþturmak için kullanýrýz.
Dizayn aþamasýnda Object Inspector' daki string list editöre baþvurarak SQL
özelliði düzenlenebilir.
NOT : Delphi Client/server geliþtiricileri ayný zamanda SQL cümleciði yazmak
için Visual
Query Builder da kullanýrlar. SQL özelliði þunlara ulaþmak için
kullanýlýr.
• Local SQL 'ý kullanarak Paradox
veya Dbase tablolarýna eriþmek .Ýzin verilen yazým þekli Ansi-Standard SQL 'de
olduðu gibidir ve Select Insert,Update,Delete ifadelerini içerir.
• Local interbase serverlarýndaki
veri tabanlarýna , SQL -92 standardýný ve özel interbase uzantýlarýný SQL
yazýlýmý için kullanýr. Bunun yazým kuralý ve sýnýrý için Interbase Language Referenca
bakabilirsiniz.
• SQL link sürücüleri yaklaþýmýný (yöntemini)
kullanarak uzaktan eriþimli veri tabaný serverlardaki veri tabanlarýna SQL
yazýlýmý ve sýnýrlarý için server dökümantasyonuna bakýnýz.
SQL için hazýrlanan SQL ifadeleri
yeniden yerleþtirilebilen parametreleri içerebilir. Parametreler params
özelliðinde oluþturulur ve saklanýr.
Çalýþma esnasýnda SQL ifadesi yazmýþ olmak için ;
1) Query çalýþýyorsa kapatmak için CLOSE
yöntemini çaðýrýn.
2) SQL özelliðini temizlemek için CLEAR
3) Yeni bir sql ifadesi eklemek için ADD
veya SQL
özelliðinde script dosyasýna bir dosya atamak için LOADFROMFILE
yöntemini kullanýn.
4) Eðer kullanýyorsa parametreleri
ayarlamak için ParamByName kullanýn
5) Sorguyu çalýþtýrmaya hazýrlamak
için PREPARE
kullanýn
6) Sorguyu çalýþtýrmak için EXECSQL
veya OPEN
kulanýn.
NOT : SQL ifadesi ayný anda bir SQL ifadesi taþýyabilir. Genelde bir server
destekleyene kadar çoklu (batch) ifadelere izin verilmez.
11) SQL BINARY
SQL sorgu ifadesini veya sonuç setini
temsil eden ikilik veri akýþýný gösterir.
Property
SQLBinary: PChar;
NOT : SQL Binary' yi direk kullanmayýn .Bu BDE ' ye direk iletiþim eriþimi için
dahili olarak kullanýlýr. Bu SQL özelliðinin çalýþtýrdýðý SQL ifadesini görmek
ve ayarlamak için SQL kullanýn.
12)
-R- STMTHANDLE
Sorgu için BDE ifadesini tutar.
Property
StmtHandle: HDBIStmt;
Bunu eðer bir uygulama BDE' yi direk
çaðýrýyorsa kullanýn.(Tquery metotlarýný es geçin). Bazý BDE API uygulamalarý
durum yöneticisine parametre olarak ihtiyaç duyarlar. Bunun dýþýndaki bütün
durumlarda bu özelliðe ihtiyaç yoktur.
13)
-R- TEXT
BDE 'ye geçen gerçek SQL sorgu metnini
gösterir.
Property
Text: PChar;
Read-only bir özelliðe sahiptir ve BDE
'ye geçen gerçek SQL query metnini araþtýrmak için kullanýlýr. Parametreli
sorgular için ,parametrelerle ? sembolü kullanýlan metindir.
Genelde bu özelliði kullanmaya gerek yoktur. Sorgudaki SQL ifadesini
deðiþtirmek veya ulaþmak için SQL özelliðini kullanýn. Parametreler için Params
özelliðini kullanýn.
14)
UNIDIRECTIONAL
BDE iki yönlü kursörlerinin sorgunun
sonuç seti için uygun olup olmadýðýný belirler.
property
UniDirectional: Boolean;
BDE kursörünün sonuç setinde ileri veya geri gidip gitmeyeceðini
ayarlayabilirsiniz. Varsayýlan deðeri False dir.
NOT :Genelde SQL kursörler unidirectional dýr. Sadece veri yapýsýnda ileri
gidebilirler. Yine de BDE buna izin vermektedir.
Eðer bir uygulama sonuç setinde iki yönlü kayýtlara ulaþma gereði duymuyorsa
bunu true olarak ayarlayýn. True olduðunda uygulama daha az hafýzaya ihtiyaç
duyar ve hýz artar. TDBDATASET
'DEN GELEN ÖZELLÝKLER
15)
-R- DATABASE
Bir veya daha fazla tabloyu temsil
eden veri tabaný öðesini tanýmlar.
property Database: TDatabase;
Tablo ile iliþkili veri tabaný
öðesinin özelliklerine ,olaylarýna ve metotlarýna ulaþmak için database' i
kullanýn. Read-only
bir özelliktir ve DatabaseName özelliði ile belirtilen veri
tabaný açýldýðýnda otomatik olarak ayarlanýr.
with Table1.Database do
begin
StartTransAction;
{Bazý kayýtlarý Table1 ile kaydeder}
Commit;
end;
16)
DATABASENAME
Dataset ile iliþkilendirilecek veri
tabanýnýn ismini belirtir.
property DatabaseName: string;
DatabaseName
uygulamada kullanýlan Database (veri tabaný) öðesinin ismiyle ayný olmalýdýr.
NOT : DatabaseName 'i veri tabaný bu öðe ile iliþkili olduðunda (aktif bir
tablo olduðunda, baðlantý kuruluyken) ayarlamaya kalkarsanýz hata oluþur.
ÝPUCU : Dizayn esnasýnda Tdatabase öðesini çift týklayarak Database editörü
çaðýrýn ve DatabaseName özelliðini ayarlayýn.
DatabaseName özelliðini deðiþtirirken tüm baðlantýlý tablolar kapalý olmalýdýr.
Table1.Active
:= False;
try
{ Ilk önce alias kullanmaya
çalýþýyoruz }
Table1.DatabaseName := 'Delphi_Demos';
Table1.Active := True;
except on EDatabaseError do
{ Eðer hata oluþursa sürücü ve dizin
belirtiyoruz }
Table1.DatabaseName :=
'c:\delphi\demos\database';
Table1.Active := True;
end;
17) -R-
DBHANDLE
BDE veri tabaný yönetimini tablo için
belirler
Type
HDBISES:longint;
Property Dbhandle: HDBISES;
Dbhandle sadece database ve dataset
metotlarýný atlayarak direkt BDE API' lerine yazma yapýlan uygulamalarda
yararlýdýr. Birçok BDE fonksiyon çaðrýsý yönetim parametresine ihtiyaç duyar.
Oturum aktif edildiðinde Dbhandle' a bir baþlangýç deðeri atanýr.
NOT: Bu özelliði BDE fonksiyonel olarak standart Delphi öðelerince
kullanýlamayacak duruma gelene kadar kullanmayýn.
18)
-R- DBLOCALE
BDE dil sürücüsünü tablo öðesi için
ayarlar.
Type
Tlocale : Pointer
Property Dblocale : Tlocale
Dblocale' ý tablonun iliþkilendirildiði
veri tabaný öðesince kullanýlan BDE dil sürücüsünü belirlemek için kullanýn.
BDE ye direk çaðrý yapan uygulamalar Dblocale bilgisini API fonksiyonu
parametresi olarak vermek zorunda olabilirler.
NOT: Bunu BDE zorunlu olarak ihtiyaç duymadan kullanmayýn.
19)
-R- DBSESSION
Bu dataset öðesinin iliþki içinde
olduðu database oturum öðesini (nesnesini) gösterir.
Property DBSession: TSession
Veri tabaný oturum nesnesini bununla
iliþkili olan tablo öðesiyle birlikte gösterir Varsayýlan olarak database öðesi
varsayýlan oturum nesnesiyle iliþkilidir. Oturum otomatik olarak bütün veri
tabaný uygulamalarý için oluþturulur.
TSession
Tsession bir uygulamada bir grup
database' in global yönetimini saðlar. Tsession 'ýn üç kullaným þekli vardýr;
standart , çoklu Paradox için að dosyalarý ve çoklu iç içe veri tabaný
uygulamalarýnda. Delphi otomatik olarak global ulaþýlabilir varsayýlan Tsession
nesnesini Oturum olarak bütün veri tabaný uygulamalarý için yapar .Varsayýlan
oturum nesnesi standard veri tabaný baðlantýlarýný tutar. Bir uygulama oturumu
onun özelliklerine (properties), olaylarýna (event) veya metotlarýna girerek
kontrol edilebilir.Farklý network yerleþim birimlerindeki çoklu oturumlara eþ
zamanlý olarak eriþmesi gereken veri tabaný uygulamalarýnda kullanýlýr.
20)
-R- PROVIDER
Bu dataset için provider arayüzünü
belirler.
Property Provider: IProvider;
Bu tablo için koruyucu ara biriminý
tarif eder. Bu nesne için Provider arabirimini belirlemek amacýyla kontrol
edin. Iprovider arabirimi geliþtirmecilerin çoklu uygulamalar üzerindeki meraklarýdýr. ( Iprovider
arabirimi aracýlýðýyla server uygulamalarýnda kullanýcý tablolarýn bu tablo
nesnesiyle direk olarak iliþki kurmasýný isteyen geliþtirmeciler)
21)
SESSIONNAME
Bu tablonun ilþkili olduðu oturumun
ismini belirler.
Property SessionName: string;
SessionName otomatik olarak tablo 'nun
baðlantýlý olduðu database öðesinin SessionName özelliðinin ismine ayarlanýr.
Eðer sessionName boþ ise tablo öðesi otomatikman varsayýlan oturumla iliþkilendirilir.
Bir tablo öðesini farklý grupla
iliþkilendirmek isterseniz SessionName var olan session öðesinin sessionName
özelliðiyle ayný olmalýdýr. Ayný zamanda bu session bu tablonun baðlý olduðu
database öðesince kullanýlan bir session olmalýdýr.
22)
UPDATEMODE
BDE' nin SQL database'de
güncellenmekte olan kayýtlarý nasýl bulacaðýný belirler.
type
TUpdateMode = (upWhereAll, upWhereChanged, upWhereKeyOnly);
property UpdateMode: TUpdateMode;
UpdateMode'u datasetteki bir kayda
konumlanýlacaðýnda kriteri belirtmek için kullanýrýz. UpdateMode aþaðýdaki
deðerleri alabilir:
upWhereAll :Tüm sütunlar kayda konumlanmak için
kullanýlýr
upWhereChanged : Sadece anahtar alanlar ve deðiþen alanlar
kayýt bulmak için kullanýlýr
upWhereOnly adece anahtar alanlar kayýt bulmak için
kullanýlýr
TBDEDATASET
'DEN GELEN ÖZELLÝKLER
23)
CACHEBLOBS
Blob'larýn hafýzada saklanýp
saklanmayacaðýný (cache edilmesi) belirler.
property CacheBlobs:Boolean;
Cacheblobs 'u blob resimler gösteren
kayýtlar arasýnda ilerlerken performansý artýrmak için Blob resimlerin hafýzada
saklanýp saklanmayacaðýný belirtmek için kullanýn. Eðer bir uygulama kayýtlarla
iliþkili Blob'larý göstermeye ihtiyaç duymuyorsa Cacheblobs' u False yapýn ki
sistem kaynaklarýný daha optimum kullanmýþ olsun.
24)
CACHEDUPDATES
Cached güncellemelerin (bir tablo )
için kullanýma hazýr olup olmadýðýný belirler.
property CachedUpdates:Boolean;
Eðer CachedUpdates true ise Cached
deðiþikliði yapýlabilir yoksa yapýlamaz. CachedUpdates enable olduðunda (bir
tablonun güncellenmesi ; tablonun kaydedilmesi yeni kayýt
ekleme,silme,düzeltme) direkt olarak veri tabanýndaki tablolara yazýlmak yerine
ana bellekte tutulur. Deðiþiklikler tamamlandýðýnda bir uygulama Cached olan
deðiþiklikleri veri tabanýna kaydeder.
Cached güncellemesi kullanýcý
uygulamalý bir server veri tabanýyla çalýþýrken çok yararlý olur.
Bu özelliði aktif etmenin yararlarý þunlardýr.
• Daha az iþ ve daha
kýsa iþ zamaný
• Network trafiðini minimize etmek
Potansiyel olabilecek
zararlarý þunlardýr.
• Kullanýcýlar verinin
yerel kopyasýný düzeltirken ,baþka uygulamalar server üzerindeki gerçek veriye
eriþebilir ve bunu deðiþtirebilir.
• Baþka uygulamalar uygulamaca yapýlan deðiþikliklere cache'teki bilgi-ler veri
tabanýna uygulanana kadar veri deðiþikliklerine ulaþamazlar.
25) -R-
CANMODIFY
Bir tablo' nun temelinde yatan veri
tabanýnýn veriye yazma eriþimine izin verip vermediðini belirtir.
property CanModify:Boolean;
Veri tabaný baðlantýsý yapýldýðýnda
bir tablo genelde yazma eriþimi ister. Canmodify yazma veya
korumanýn garantilenmesidir. Eðer true ise veri deðiþtirilebilir ve ana server
kütüðüne yazýlabilir. Fakat false ise veri görülebilir ama düzeltilemez
NOT: Eðer canmodify true ise verilen kullanýcý için yazýlan kýsýtlamalar SQL
veri tabaný server' ýna yazmayý engeller.
26)
-R- EXPINDEX
Tablo 'in Dbase açýklama indexi
kullanýp kullanmadýðýný belirler.
Property Expýndex:Boolean;
Eðer true ise bir açýklama indexi aktif olur.
27)
FILTER
Tablo için aktif filtre ifadesini
belirtir.
Property Filtertrýng;
Tablo için aktif filtreyi belirtir.
Filtreleme çalýþtýrýldýðýnda uygulamada filtre ko-þullarýna uyan kayýtlar
gösterilir. Örneðin aþaðýdaki filtreleme koþulu Sehir alaný "ERZURUM"
VE "ANKARA" olanlarý gösterir.
filter = 'SEHIR="ERZURUM" OR SEHIR="ANKARA"'
Karakter tabanlý kýsmi aramalar için joker karakterini kullanabilirsiniz
Örneðin sehir='a'
NOT : Uygulamalar çalýþma esnasýnda filtreleme durumunu deðiþtirmek için (
kullanýcý giriþine cevap verilirken ) kullanýlýr.
28)
FILTERED
Filtrelemenin aktif olup olmayacaðýný
belirler.
Property Filtered :Boolean;
Filter özelliðini veya OnFilterRecord
olay yöneticisini aktif etmek için bu özelliði true ayarlayýn.Filtreleme true
iken kullanýcýnýn bir kaydý düzeltmesi demek kaydýn filtrenin test koþuluna
uygulanmamasý demektir.Filtre aktif iken bir sonraki kayýt getirildiðinde kayýt
gözükmeyecek .Böyle olursa filtre koþuluna göre eriþilen bir sonraki kayýt
aktif kayýt olur.
29)
FILTEROPTIONS
Filtrelemenin büyük küçük harf duyarlý
olup olmadýðý ile kýsmi karþýlaþtýrmala-ra izin verilip verilmeyeceðini
belirler
TFilterOption = (foCaseInsensitive, foNoPartialCompare);
TFilterOptions = set of TFilterOption;
Property FilterOptions: TFilterOptions
FilterOptions' ý foCaseInsensitive
yaparsanýz tüm olasýlýklarý denetlemiþ olursunuz. FilterOptions' ý
foNoPartialCompare 'a ayarlarsanýz çoklu durumlar ve alanlar için yazýlan
filtre koþullandýrmalarýndan tam bir sonuç elde edersiniz.
Stringlerde kýsmi karþýlaþtýrmayý engellemek için FilterOptions özelliðini
foNoPartialCompare 'a ayarlayýn
30)
-R- Handle
Tablo için BDE kursör yönetimini
belirtir.
type
HDBICur: Longint;
Property Handle: HDBICur;
Tdataset metotlarýný atlamak ve BDE ye
direkt çaðrý yapmak amacýyla kullanýn. Bir çok BDE fonksiyon çaðrýsý kursör
kullaným parametresine ihtiyaç duyar. Tablo açýldýðýnda buna bir baþlangýç
deðeri atanýr. Aktif kaydýn pozisyonunu deðiþtiren bir BDE çaðrýsýyla
kullanýldýðýnda Resync yi BDE çaðrýsýndan hemen sonra kullanýn.
NOT: Bu fonksiyonu BDE fonksiyonel olarak standart Delphi öðeleri üzerinde
etkili olamayana kadar kullanmayýn.
31)
-R- DBLOCALE
BDE Dil sürücüsünü tablo öðesi için
ayarlar.
type
TLocale: Pointer;
Property DBLocale: TLocale;
BDE ye direk baðlantý yapan
uygulamalar API fonksiyon parametresi olarak Dblocale bilgisini göndermek
zorunda olabilirler.
NOT: Bu fonksiyonu BDE fonksiyonel olarak standart Delphi öðeleri üzerinde
etkili olamayana kadar kullanmayýn.
32)
FILTEROPTIONS
Filtrelemenin string veya karakter
alanlar üzerinde büyük küçük harf duyarlý olup olmayacaðýný ve kýsmi
kýyaslamalarýn kayýtlarý filtrelerken kullanýlmasýna izin verilip
verilmeyeceðini belirtir.
type
TFilterOption = (foCaseInsensitive, foNoPartialCompare);
TFilterOptions = set of TFilterOption;
Property FilterOptions: TfilterOptions
Varsayýlan deðeri boþtur. Karakter
alanlardaki filtrelemelerde büyük harf duyarlýlýðý seçerseniz bütün
karakterleri elde etme imkanýna kavuþursunuz. Eðer filtrelemeyi birden fazla
alan üzerinde yapýyorsanýz veya çoklu durum filtrelemesi kullanýyorsanýz
foNoPartialCompare seçeneðini true iþaretleyin
NOT :Kýsmi karþýlaþtýrmaya dayanan filtrelemelerde FoNoPartialCompare ý true
yapmaya gerek yoktur.Bunun yerine joker karakterleri kullanýn.
Örneðin
Sehir='A*'
Sehir adý a ile baþlayan kayýtlar.
33)
-R- HANDLE
Tablo için BDE kursör yönetimini
kullanmayý belirtir.
type
HDBICur: Longint;
Property Handle: HDBICur;
Tdataset metotlarýný atlamak ve BDE ye
direkt çaðrý yapmak amacýyla kullanýn.Bir çok BDE fonksiyon çaðrýsý kursör
kullaným parametresine ihtiyaç duyar. Tablo açýldýðýnda buna bir baþlangýç
deðeri atanýr. Aktif kaydýn pozisyonunu deðiþtiren bir BDE çaðrýsýyla
kullanýldýðýnda Resync yi BDE çaðrýsýndan hemen sonra kullanýn.
Not :Bu fonksiyonu BDE fonksiyonel olarak standart Delphi öðeleri üzerin-de
etkili olamayana kadar kullanmayýn.
34)
-R- KEYSIZE
Tablonun aktif indexi için anahtar boyutunu belirler
Property KeySize: Word;
Keysize indexi oluþturan alanlarýn sayýsýna ve tipine göre
deðiþir. Byte cinsinden belirtilir.
35)
-R- LOCALE
BDE Dil sürücüsünü tablo öðesi için
ayarlar.
type
TLocale: Pointer;
Property DBLocale: TLocale;
BDE ye direk baðlantý yapan
uygulamalar API fonksiyon parametresi olarak Locale bilgisini göndermek zorunda
olabilirler.
Dil sürücüsü bilgisi tabloya sahip olan database öðesinin Params özelliðinde-ki
bir deðeri de olabilir.
NOT: Bu fonksiyonu BDE fonksiyonel olarak standart Delphi öðeleri üzerinde
etkili olamayana kadar kullanmayýn.
36)
RECNO
Tablodaki aktif kaydý belirtir.
Property RecNo: Longint;
RecNo 'yu aktif kaydýn tablodaki
numarasýný bulmak için kullanýn. Uygulama-lar bu özelliði bütün kayýtlar
arasýnda dolaþmak için kullanýrlar. Böylece tipik kayýtlar arasý dolaþým First
,Last ,Moveby, Next, ve Prior ile yapýlýr.
NOT: Eðer eriþim Paradox tablolarýyla yapýlýyorsa Recno kursörü belirtilen özel
bir kayýt numarasýna ayarlanarak o kayýt üzerine konumlanabilir.
37) -R-
RECORDCOUNT
Tabloyla iliþkilendirilmiþ toplam
kayýt sayýsýný verir.
Property RecordCount: Longint;
Uygulamalar bunu kayýtlar arasýnda
dolaþmak için kullanabilirler. Böylece tipik kayýtlar arasý dolaþým First ,Last
,Moveby, Next, ve Prior ile yapýlýr.
NOT : Bunu dikkatli kullanýn çünkü kayýt saymak pahalý bir iþlem olabilir
.(Özeklikle geniþ sonuç kümeleri döndüren SQL sorgularý için ) Genelde bir
uygulama bunu yalnýz Dbase ve Paradox ile kullanmalýdýr.
Kayýtlar arasýnda dolaþmayý ve dolaþtýkça progressbar'ý deðiþtirme iþlemini
gerçekleþtiren bir örnek aþaðýda verilmiþtir.
procedure
TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
with ProgressBar1 do
begin
Min := 0;
Max := Table1.RecordCount;
Table1.First;
for i := Min to Max do
begin
Position := i;
Table1.Next;
end;
end;
end;
38) RECORDSIZE
Tablo' daki bir kaydýn boyutunu
belirtir.
Property RecordSize: Word;
Recordsize 'ý Delphi bufferýnýn
tablodaki bir kaydý tutmak için byte olarak iþgal ettiði yeri bulmak amacýyla
kullanýlýr. Tablo açýldýðýnda Open prosedürü DBE' den kayýt tampon bellek
bilgisi ister ve gelen bilgiyi RecordSize da saklar. Delphi bu bilgiyi dahili
olarak kullanýr. Uygulamalar nadir de olsa bu bilgiye ihtiyaç duyarlarsa
kullanýrlar.
Aktif Query ve tablodaki kayýtsayýsýný,
kayýt boyutunu ,anahtar alan boyutunu,aktif kayýt numarasýný gösteren bir kod
örneði
procedure
TForm1.FormCreate(Sender: TObject);
begin
Query1.open;
Label2.caption:=inttostr(query1.recordcount);
Label4.caption:=inttostr(query1.recno);
Label6.caption:=ittostr(query1.recordsize);
Label8.caption:=inttostr(query1.keysize);
end;
39)
UPDATEOBJECT
Cached güncellemeler yapýlabilir
olduðunda yalnýzca okunabilen sonuç kümesini güncellemek için kullanýlan
güncelleme nesne öðesini belirtir.
type
TDataSetUpdateObject = class(TComponent)
Property UpdateObject: TdataSetUpdateObject
BDE ,uygulama özellikle read-only bir
veri görünümü istemedikçe ,güncellenebilir veya canlý sorgu sonucu ,saðlamaya
çalýþýr.
Bazý durumlarda mesela çoklu tablolar
için bir sorgu hazýrlandýðýnda canlý sonuç seti döndürülemez. Bu durumlarda
UpdateObject' i güncellemeleri uygulama için transparant olan
ayrý transaction
olarak güncelleme yapan TUpdateSQL öðesini belirtmek için
kullanýrýz.
40)
UPDATERECORDTYPES
Cached güncellemeler aktif olduðunda
tablodaki görünen kayýtlarýn tiplerini belirtir.
TUpdateRecordTypes=set of (rtModified, rtInserted, rtDeleted,
rtUnmodified);
Property UpdateRecordTypes: TUpdateRecordTypes;
TupdateRecordTypes aþaðýdaki deðerleri
Alabilen bir tiptir.
Deðer Anlamý
rtModified deðiþtirilen kayýtlar görünür
rtInserted eklenen kayýtlar görünür
rtDeleted silinen kayýtlar görünür
RtUnmodified deðiþtirilmemiþ kayýtlar görünür
Varsayýlan deðer olarak bütün bu küme içindeki kayýtlar
görünür haldedir .Kayýtlar üzerinde iþlem yapan bir uygulamada silinen
kayýtlarýn uzun bir süre sonra bile kurtarýlabilmesi Updaterecordtypes'
ýn undelete
metodu sayesinde olmaktadýr.
Bir uygulama ayný zamanda
Updaterecordtypes ý kullanarak açýk olan oturumdaki kayýtlar için bir
filtreleme görevi yapar (eklenen,silinen,deðiþtirilen,deðiþtirilmeyenleri
gösterme þeklinde)
41)
-R- UPDATESPENDING
Cache bellekte uygulanmaya hazýr kayýt
olup olmadýðýný belirtir.
Property UpdatesPending: Boolean;
Bu özelliði, cached updates buffer 'ýn
durumunu kontrol etmek için kullanýn. Eðer true ise bu düzeltilen
,eklenen,silinen kayýtlarýn olduðunu ve bunlarýn güncellenecek olduðunu
gösterir. Eðer False ise Cache' te hiçbir kayýt yok demektir
TDATASET 'DEN GELEN ÖZELLÝKLER
42)
ACTIVE
Tablonun açýk olup olmayacaðýný belirler.
Property Active: Boolean;
Tablonun database ile olan
baðlantýsýný ayarlamak için kullanýlýr. Active özelliði False ise tablo kapalý
yani veri tabanýndan okuma ve buraya yazma yapýlamaz. Eðer true ise veri
tabanýna yazama ve buradan okuma yapýlabilir.
Active' i true yapmak :
• BeforeOpen olay çaðrýsýný yapar.
• Dataset State özelliðini dsBrowse 'a ayarlar.
• Tablo içinde bir kursör ayarlar.
• Eðer tanýmlandýysa AfterOpen olayýný çalýþtýrýr.
Eðer tablo açýkken
bir hata oluþursa dataset State dsInactive durumuna
ayarlanýr ve kursör kapanýr.
NOT: Bir uygulama veri tabanýnýn özelliklerini deðiþtirmeden önce Active' i
False olarak ayarlamalýdýr. Yoksa bu deðiþiklikleri yapamaz. Open metodunu
çaðýrmak Active özelliðini true yapar. Close metodunu çaðýrmak Active
özelliðini False yapar.
43)
AUTOCALCFIELDS
OnCalcFields olayýnýn nezaman
tetikleneceðini belirler.
Property AutoCalcFields: Boolean;
Tablo iþlemi boyunca hesaplanmýþ
alanlarýn güncellenmesi için OnCalcFields olayýnýn çalýþtýrýlýp
çalýþtýrýlmayacaðýný belirlemek amacýyla kullanýn. Hesaplanmýþ alan deðeri
tablodaki bir veya birden fazla alandan etkilenerek bazen de bazý ek iþlemlere
tabi kalarak oluþur. OnCalcFields true olduðunda ki varsayýlan
budur, þu durumlarda çalýþtýrýlýr
• Tablo açýk olduðunda
• Tablo dsEdit durumunda olduðunda
• Veriden -etkilenen ýzgara (grid) kontrollerinde ki ( Aktiflik bir görsel
kontrolden diðerine veya bir sütundan diðerine hareket eder) ve deðiþikliklerin
kayda yapýldýðý durumlarda
• Veri tabanýndan bir kayýt çaðrýldýðýnda
OnCalcFields özelliðininin çaðrýlma sýklýðýný düþürmek için
AutoCalcFields özelliðini False yapýn . AutoCalcFields özelliði False olduðu
zaman kayýtlarda bir deðiþiklik olduðunda OnCalcFields olayý çaðrýlmayacaktýr.
Eðer bir uygulama verinin deðiþtirilmesine izin veriyorsa bu olay sýkça
çaðrýlacaktýr. Bu sýklýðý azaltmak için Bu özellik False yapýlýr.
44)
-R- BOF
Kursörün tablo içinde , ilk kaydýn
baþýnda olup olmadýðýný belirtir.
Property BOF: Boolean;
Bof true ise kursör kesinlikle
tablonun ilk satýrýndadýr. BOF aþaðýdaki durumlarda true olur :
• Tablo açýlýr,
• Tablo için First
metodu çaðrýlýrsa ,
• Tablo için Prior
(önceki) metodu çaðrýlýr ve bu iþlem baþarýsýz olursa (çünkü kursör zaten ilk
kayýttadýr)
• Boþ bir kayýtta veya dizide SetRange metodu
çaðrýlýrsa.
Diðer tüm durumlarda BOF False 'tur. Bir uygulama yukarýdaki
durumlar ve uygulamanýn özelliði direkt test etmesi hariç BOF 'u False kabul
etmelidirler.
45)
BOOKMARK
Tablodaki aktif yer imini belirler.
type
TBookmarkStr: string;
Property Bookmark: TBookmarkStr;
Tablodaki aktif yer imini ayarlamak
veya çaðýrmak amacýyla kullanýlýr. Ýþaretleme sayesinde tablodaki bir yer iþaretlenir
ve daha sonra buraya kolayca ulaþýlabilir.
Bir uygulama aktif kayýtla alakalý
iþareti çaðýrmak için Ýþareti okuyabilir ve bu özelliðe sakanmýþ iþaret
deðerini atayarak tablodaki istenen pozisyona konumlanýlabilir.
46)
CONSTRAINTS
Dataset 'e yüklenen veriyi düzenlerken
kullanýlmasý gereken kayýt düzeyindeki sýnýrlamalarý belirler.
Property Constraints: TCheckConstraints;
Constraint' i kayýt
seviyesindeki sýnýrlamalarý okumak veya eklemek için kullanýn. Constraints
özelliði TCheckConstraint nesnesinin indeksli toplamýndan oluþur. Bu
kýsýtlamalar tek bir kayýttaki alanlar arasýndaki iliþki üzerine dayandýrýlarak
yapýlýr.
NOT : Bu özellik çift týklatýldýðýnda Editing Query1.Constraints penceresi
ekrana gelir. ADD ile ekleme yapabiliriz. Properties' indeki Custom Constraint'
e koþullarý yazýn. Error Message ise hata mesajýný belirlemek için kullanýlýr.
47)
-R- DEFAULTFIELDS
Tablonun temel alan öðelerinin tablo
açýldýðýnda dinamik olarak üretilip üretilmediðini belirler.
Property DefaultFields Boolean;
Veri tabanýnýn dinamik alanlar mý
yoksa kalýcý alanlar mý kullandýðýný belirler. Eðer DefaultFields True ise
tablo dinamik olarak ayrýlan alan öðelerini kullanýr. Eðer False ise tablo
kalýcý alan öðelerini kullanýr. Tablo daima dizayn sýrasýnda Fields Editör
kullanýlarak kalýcý alan öðeleri bir tabloya atanmadýkça, dinamik alan öðeleri
tablo bunu kullanan veri tabaný tablo veya tablolarýnýn yapýsýna dayanarak
oluþturur.
48)
-R- DESIGNER
Tablo için table designer' a dizi sonu
iþareti koyar.
Property Designer: TDataSetDesigner;
Fields Editör gibi Tablo Dizaynýrlar
da dizayn sýrasýnda programcýya tabloya baðlý alanlarý belirlemesine izin
verirler. Tablo nesnelerinin torunlarý tablo dizaynýr' a Designer özelliðini
ayarlama ve getirmek için kullanýlan metotlarý tekrar tanýmlamak için
kullanýlýrlar. dataset designer düzenlenmek için açýldýðýnda Designer özelliði
boþ (nil) ayarlanýr. Dataset designer geliþtirmecilere dizayn aþamasýnda
datasete ait olan alanlarý belirleme olanaðý saðlar.
49)
-R- EOF
Kursörün tablonun sonuna konumlanýp
konumlanamadýðýný belirtir.
Property EOF: Boolean;
Eof ( end of file) true ise kursör
kesinlikle tablonun sonundadýr. Eof aþaðýdaki durumlarda true olur:
• Boþ bir tablo
açýldýðýnda,
• Tablonun Last metodu çaðrýldýðýnda,
• Tablonun Next metodu çaðrýldýðýnda ve bu iþlem baþarýsýz olduðunda
• Boþ bir dizi veya tablo üzerinde SetRange çaðrýldýðýnda ,
EOF diðer durumlarda False 'tur. Bir uygulama yukarýdaki
durumlar ve uygulamanýn özelliði direkt test etmesi hariç EOF 'u False kabul
etmeliler. Eðer EOF ve BOF ayný anda true ise tablo veya dizi boþtur.
50)
FIELDCOUNT
Tabloyla iliþkili alan öðelerinin
sayýsýný belirtir.
Property FieldCount: Integer;
Dinamik olarak oluþturulan alanlara
sahip tablolar her açýldýðýnda FieldCount sayýsý deðiþebilir. Kalýcý alanlara
sahip tablolar için FieldCount tablo her açýldýðýnda ayný deðere sahip
olmalýdýr.
51)
FIELDDEFS
Tablo için alan tanýmlama listesini
iþaret eder.
property FieldDefs: TFieldDefs;
Bir uygulama FieldDefs' i tablo için
alan tanýmlamalarýný araþtýrmak amacýyla incelerken CreateTable ile yeni bir
tablo oluþturmadýkça bu tanýmlamalarý deðiþtirmemelidir. FieldDefs öncelikli
olarak Tdataset ve torunlarýnýn diðer özellikleri, metotlarý ve olaylarýnda
dahili olarak kullanmak için üretilmiþtir.
Tablodaki alanlara ve bunlarýn deðerlerine eriþmek için Field
ve FieldValues
özelliklerini ve FieldsByName metodunu kullanýn.
Aþaðýdaki örnek yeni
bir tablonun nasýl oluþturulduðunu gösterir
with Table1 do
begin
Active := False; { Table öðesi aktif
olmalýdýr }
{ Ýlk önce table tipini belirle ve
buna bir isim ver}
DatabaseName := 'DBDEMOS';
TableType := ttParadox;
TableName := 'CustInfo';
{ Tablodaki alanlarý tarif et}
with FieldDefs do
begin
Clear;
Add('Field1', ftInteger, 0, True);
Add('Field2', ftString, 30, False);
end;
{ Indexleri tanýmla }
with IndexDefs do
begin
Clear; { Ýlk indexin ismi yok çünkü
bu Paradox primary key dir }
Add('', 'Field1', [ixPrimary,
ixUnique]);
Add('Fld2Indx', 'Field2',
[ixCaseInsensitive]);
end; { Özellklerini belirlediðimiz
tabloyu oluþturalým }
CreateTable;
end;
52) FIELDS
Tablodaki tüm alan öðeleri için
indeksli bir dizi saðlar.
Property Fields[Index: Integer]: TField ;
Alan öðelerine index numarasýyla
eriþmek için bunu kullanýn. Fields 0 tabanlý bir dizidir. Eðer bu tablodaki
alanlar dinamik olarak oluþturuluyorsa alan öðelerinin sýrasý tablodaki
sütunlarýn sýrasýna göre deðiþir. Eðer tablo sabit alanlar kullanýyorsa alan
öðelerinin sýrasý dizayn zamanýnda Fields Editörce belirlenen sýradadýr.
Alanlara Fields
özelliði ile ulaþmak aþaðýdaki uygulamalar için kullanýþlýdýr:
• Tablodaki bazý veya tüm alanlarda
dolaþmak için
• Çalýþma anýnda yapýlarý bilinmeyen
altý çizili tablolar için
Eðer bir uygulama her alanýn veri tipini biliyorsa bu
alanlar Fields özelliðini kullanarak okuma-yazma yapabilir. Örneðin aþaðýdaki
satýrlar Bir alanýn deðerini editbox 'ýn Text özelliðine atýyor.
Edit1.Text := CustTable[6].AsString;
Aþaðýdaki ifade ise editbox' tan alana deðer aktarýr.
CustTable.Edit;
CustTable.Fields[6].AsString := Edit1.Text;
CustTable.Post;
NOT : Alan çaðýrma veya alanlara deðer aktarma için tercih edilen metot
FieldsByName metodudur veya bunlarýn kalýcý alanlar için yapýlmasýdýr.
53)
FIELDVALUES
Tablodaki aktif kayýttaki tüm
alanlardaki deðerlerine eriþmeyi saðlar.
Property FieldValues[const FieldName: string]: Variant;
Bu özellik tablodaki alanlara deðer
yazmak ve buralardan deðer okumak için kullanýlýr. Fieldname yazýlacak veya
okunacak alandýr ve tek týrnak içinde yazýlmalýdýr.
FieldValues deðiþken alýr ve gönderir
bu yüzden her türden veri taþýyabilir ve çevirebilir. FieldValues TdataSet için
varsayýlan özellik olduðundan bu özelliði referans ederken özellik adýný
atlayabilirsiniz.
Örneðin aþaðýdaki iki ifade ayný iþi yapar: editbox ' taki deðeri integer alana
aktarýr.
Customers.FieldValues['CustNo'] := Edit1.Text;
Customers['CustNo'] := Edit1.Text;
Aþaðýdaki ifade alandan bir string ifade okur ve editbox 'a atar
Customers.Edit;
Edit1.Text := Customers['Company'];
Customers.Post;
NOT : FieldValues her zaman deðiþkenleri kullandýðý için ,özellikle büyük
miktarda veri iþleyen uygulamalarda ,veriye ulaþmak için alanýn doðal formatýný
( AsXXX özelliði) kullanmaktan daha yavaþ bir yol olabilir.
54)
-R- FOUND
Baþka bir kayda dallanma iþleminin
baþarýlý olup olmadýðýný belirtir.
Property Found: Boolean;
Bu özelliði FindFirst, FindLast,
FindNext veya, FindPrior metotlarýnýn baþarýlý olup olmadýðýný anlamak için
kullanabilirsiniz. Eðer Found true ise iþlem gerçekleþtirildi . False ise baþka
bir kayda geçme iþlemi gerçekleþemedi anlamý taþýr.
55)
-R- MODIFIED
Aktif kaydýn deðiþtirilip
deðiþtirilmediðini belirtir.
Property Modified: Boolean;
Eðer true ise aktif kayýt deðiþtirilmiþtir.
NOT: Genelde Modified özelliðini
kontrol etmek gereksizdir. Tdataset' in ve bunun torunlarýnýn özellikleri,
olaylarý ve metotlarý bunu otomatik olarak kont-rol ederler ve bunun deðerine
göre uygun davranýþlarý gösterirler.
56)
NAME
Diðer öðelerce referans edilen dataset' in ismini verir.
type
TComponentName: string;
Property Name: TComponentName;
Name özelliðini dataset'in adýný aktif
uygulamadaki amacýný yansýtmak için deðiþtirmede kullanýn. Varsayýlan olarak
Delphi, öðenin tipine baðlý olarak öðelere sýrasal numaralar verir
table1,table2...) de olduðu gibi. Dataset ismi dizayn sýrasýnda deðiþirse bu
ismi ,alan isminin ön eki olarak kullanan alan öðeleri varsa bunlarda yapýlan deðiþiklikten
etkilenirler.
57) -R- STATE
Dataset 'in aktif iþletim modunu
belirtir.
type
TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey,
dsCalcFields,dsFilter, dsNewValue, dsOldValue, dsCurValue);
Property State: TdataSetState;
State tablodaki verinin bulunduðu durumu bildirir. Gösterme, düzenleme,
ekleme,filitreleme gibi. Tablonun State özelliði ,uygulama veriyi iþledikçe
sürekli deðiþir. Aþaðýdaki liste State in alabileceði tüm deðerleri ve bunlarýn
anlamýný belirtir.
Deðer Anlamý
dsInactive Tablo kapalý,yani
kullanýlamaz
dsBrowse Data görülebilir ama
deðiþtirilemez. Bu açýk tablonun varsayýlan durumudur
dsEdit Aktif kayýt
deðiþtirilebilir.
dsInsert Yeni bir kayýt eklenebilir.
dsCalcFields OnCalcFields olayý
iþlemektedir .Hesaplanmamýþ alanlar düzeltilemez ve yeni kayýtlar eklenemez.
dsFilter OnfilterRecord
olayý aktifse Hesaplanmamýþ a lanlar düzeltilemez ve yeni kayýtlar eklenemez.
dsNewValue Tfield.NewValue
özelliðine eriþildiðini belirtmek için geçici durum dahili olarak kullanýlýr.
dsOldValue Tfield.Old.Value
özelliðine eriþildiðini belirtmek için Geçici durum dahili olarak kullanýlýr.
dsCurValue Tfield.Cur.Value özelliðine
eriþildiðini belirtmek için geçici durum dahili olarak kullanýlýr.
dsSetkey Yalnýzca Ttable
.Kayýt aramak mümkün veya SetRange iþlemi yapýlabilir. Sýnýrlý veri kümesi
görülebilir ama kayýt eklenemez veya düzeltilemez.
Tablo açýlýnca State dsInactive 'den dsBrowse' a geçer. Bir
uygulama Edit' i tabloyu edit moduna, Insert' ü dsInsert durumuna geçirmek için
çaðýrabilir. Eðer tablo Ttable öðesi ise uygulama tabloyu dsSetKey durumuna
getirmek için Setkey veya Setrange metotlarýný çaðýrýr.
Düzenlemeleri kaydetmek veya iptal
etmek,eklemeler veya silmeler yapmak State' i aktif durumundan dsBrows' e
durmuna geçirir. Tabloyu kapatýrsanýz State dsinactive olur. Bazý durumlar
ki(dsCalcFields, dsFilter, dsNewValue, dsOldValue, ve dsCurValue) bir
uygulamaca direkt olarak deðiþtirilemeyen durumlardýr. Bu durumlar OnCalcFields
ve OnFilterRecord olaylarý oluþtuðunda veya uygulama Tfield.XXXValue özelliðine
eriþtiðinde ortaya çýkar
TCOMPONENT' DEN KALITIMSAL GELEN ÖZELLÝKLER
58)
-R- COMOBJECT
ComObject COM 'u destekleyen öðelerce
uygulanan arabirim referansýný döndürür.
property ComObject: IUnknown;
Bu özellik COM arabirimini destekleyen
VCL öðelerince kullanýlýr. Eðer öðe COM öðesini desteklemiyorsa ComObject EcomponentError
hatasýný üretir.
59)
-R- COMPONENTCOUNT
Öðe özellik listesinde listelendiði
gibi bir öðenin sahip olduðu öðe sayýsýný belirtir.
property ComponentCount: Integer;
Bu özellik Delphi'de bileþenler
arasýnda ilerleme iþlemleri için dahili olarak kullanýlýr. Bu sayý Component
indeks sayýsýndan bir fazladýr .Çünkü indeks 0 dan baþlar.
60)
COMPONENTINDEX
ComponentIndex öðenin ,atasýnýn öðe
dizi özellik listesindeki yerini belirtir.
property ComponentIndex: Integer;
ComponentIndex bileþen listesi içinde
sahip olunan nesneler üzerinde bazý iþlemler yapmak için ilerlemeniz
gerektiðinde kullanýrýz. Bu özellik dahili olarak kullanýlýr. Listedeki ilk
öðenin indeks nosu 0 dýr. Ýkincisi 1 ve ...
Bu yüzden ComponentCount daima Componentindexin olabileceði maksimum rakamdan 1
fazladýr
61)
-R- COMPONENTSTATE
ComponentState bazý belli iþlemlerden
sakýnmak için öðenin o anki aktif konumunu belirtir.
type
TComponentState = set of (csLoading, csReading, csWriting, csDestroying,
csDesigning, csAncestor, csUpdating, csFixups);
property ComponentState: TComponentState;
Component 'ler bu özelliði belli
iþlemlerin yapýlmasýna izin verip vermemek için belirleyici olarak kullanýrlar.
Örneðin eðer bir öðe çalýþma esnasýnda iþlenecek ama dizayn esnasýnda bazý
iþlemlerin gerçekleþmemesini istiyorsa csDesigning bayraðýný
kontrol edebilir. Bu özellik deðiþtirilemez ve her bir bayraðý çeþitli
metotlarca otomatik olarak ayarlanýr. TcomponentState tipi ComponentState
özelliði için var olan durumlarý belirtir.
BAYRAK Nesne durumu
csAncestor csDesigning aktifse ve
nesne bir ata formunda tanýtýldýysa kullanýn
csDesigning Nesnenin Form Designerca
iþlenmekte olduðu durumdur CsDestroying nesnenin deðiþtirilmekte olduðu
csLoading Filer nesnesinden yükleniyor.
csReading Özelliklerini akýþýndan
okuyorsa
csUpdating Deðiþiklikleri ata forma
yansýtmak için nesne güncelleniyorsa. Bu csAncestor aktif edildiyse aktif
edilir.
csWriting Özellik deðerlerini akýþa
yazýyorsa
csFixups Daha yüklenmemiþ baþka bir
formdaki nesneye baðlantý yapýldýysa .Bu özellik bütün kararlaþtýrýlmýþ
fixuplar yeniden çözüldüðünde sýfýrlanýr.
62)
-R-
COMPONENTSTYLE
Öðenin hareketlerini yöneten stil için
bir bayrak aktif eder.
type TComponentStyle = set of (csInheritable, csCheckPropAvail);
property ComponentStyle: TComponentStyle;
Bu tip ComponentStyle için bir dizi deðer tanýmlar.
63)
DESIGNINFO
Form Dizaynýr'ca kullanýlan bilgiyi
taþýr
property DesignInfo: Longint;
Delphi çevre birimlerince dahili olarak
kullanýlýr. Bu özelliði uygulamalarda kullanmayýnýz.
64)
-R- OWNER
Bu nesnenin sahibinin hangi nesne
olduðunu belirtir.
property Owner: TComponent;
Bir nesne diðerince sahiplendiði zaman
sahiplenen nesne için ayrýlan hafýza serbest býrakýldýðýnda , bu nesne için
ayrýlan hafýza da serbest býrakýlýr. Bu bir form düzenleneceði zaman bütün
nesnelerin düzenlenme moduna geçtiði anlamýna gelir.
Örneðin Delphi de tüm nesnelerin sahibi
global application nesnesidir. Form üzerine yerleþtirilen ve bir owner isteyen
tüm nesneler içinde sahip form'dur.
Öðenin sahibi öðe yapýlandýrýldýðý zaman
Create metoduyla verilen parametrece belirlenir. Delphi Form Designerca
oluþturulan öðelerin sahibi otomatik olarak yapýya geçirilir.
LABEL1.Caption:=QUERY1.Owner.ClassName;
LABEL2.Caption:=QUERY1.Owner.Name
65)
TAG
Tag öðenin bir parçasý olarak bir
sayýsal (integer) deðer saklar.
property Tag: Longint;
Tag'ýn önceden tanýmlanan bir anlamý
yoktur. Uygulamalarda özel olarak bir sayýsal deðer saklamak amacýyla
kullanýlýr. Programlamada kullanýcýya kolaylýk saðlar. Mesela case durumlarýnda
bunu kullanabilirsiniz.
66)
VCLCOMOBJECT
COM destekleyen öðelerce dahili olarak
kullanýlýr.
property VCLComObject: Pointer
VCLCOM öðelerince iþlenen arabirimlere eriþmek için kullanýn.
63)
3.4- TQUERY METOTLARI
TQUERY METOTLARI
Create
Destroy
ExecSQL
ParamByName
Prepare
UnPrepare
TDBTABLE
'dan devralýnan
CheckOpen
CloseDatabase
OpenDatabase
TBDETABLE 'dan devralýnan
ApplyUpdates
BookmarkValid
Cancel
CancelUpdates
CommitUpdates
CompareBookmarks
ConstraintCallBack
DisableConstraints
EnableConstraints
FetchAll
GetCurrentRecord
GetIndexInfo
Locate
Lookup
RevertRecord
UpdateStatus
TDataset' den Gelen
ActiveBuffer
Append
AppendRecord
CheckBrowseMode
ClearFields
Close
ControlsDisabled
CursorPosChanged
Delete
DisableControls
Edit
EnableControls
FieldByName
FindField
FindFirst
FindLast
FindNext
FindPrior
First
FreeBookmark
GetBookmark
GetFieldList
GetFieldNames
GotoBookmark
Insert
InsertRecord
IsEmpty
IsLinkedTo
Last
MoveBy
Next
Open
Post
Prior
Refresh
Resync
SetFields
Translate
UpdateCursorPos
UpdateRecord
TComponent'dan
devralýnan
DestroyComponents
Destroying
FindComponent
FreeNotification
FreeOnRelease
GetParentComponent
HasParent
InsertComponent
RemoveComponent
SafeCallException
TPersistent'
dan devralýnan
Assign
GetNamePath
ClassInfo' dan Gelen
ClassName
ClassNameIs
ClassParent
ClassType
CleanupInstance
DefaultHandler
Dispatch
FieldAddress
Free
FreeInstance
GetInterface
GetInterfaceEntry
GetInterfaceTable
InheritsFrom
InitInstance
InstanceSize
MethodAddress
MethodName
NewInstance
TQuery
Metotlarý
1)
CREATE
Örnek bir query nesnesi oluþturur.
constructor Create(AOwner: TComponent);
Bu çaðrý boþ bir SQL ifade listesi
oluþturur. SQL durum listesi için Onchange olay durumunu ayarlar. Data link
(veri baðlantýsýný ) kurar. Requestlive özelliðini False yapar, ParamCheck
özelliðini true yapar ve RowsAffected 'ý -1 yapar.
2)
DESTROY
Query nesnesini yokeder.
destructor Destroy;
Destroy çaðrýsýný direk olarak
çaðýrýr. Bunu çaðýrmak yerine Free methodunu çaðýrýn ve query'nin daha önceden
serbest býrakýlmadýðýndan emin olun .Destroy serverdan baðlantýyý keser, SQL
ifadesini, parametre listesini,veri baðlantýsýný, SQL ikili saklama bölgesini
temizler ve kendisinin kalýtsal Destroy iþlemini baþlatýr.
3)
EXECSQL
Query için SQL ifadesini çalýþtýrtýr.
procedure ExecSQL;
Execsql' i INSERT,DELETE,UPDATE
çaðrýlarýný yapmak için kullanýn. Ayný zamanda veri tanýmlama durumlarýný
çalýþtýrmak için de kullanýlýr
NOT: Select ifadelerinde Execsql yerine Open 'ý kullanýn.
Execsql eðer SQL hazýrlanmadýysa SQL'
in çalýþtýrýlmasý için SQL ifadesi oluþturur. Hýz artýrmak için ExecSQL ilk
defa çaðrýldýðýnda , bundan önce Prepare çaðrýsý kullanýlmalýdýr.
Örnek:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Delete from Country where Name = ''Argentina''');
Query1.ExecSQL;
4)
PARAMBYNAME
Özel parametre ismine dayanan
parametre bilgisine ulaþýr.
function ParamByName(const Value: string): TParam;
Value getirilecek bilginin parametre
ismidir. ParamByName parametrenin deðerini çalýþma anýnda deðiþtirmek için
kullanýlýr.
Örneðin aþaðýdaki ifade Soyad adý verilen parametredeki aktif deðeri bir edit
kutusuna alýr.
Edit1.Text := Query1.ParamByName(' Soyad ').AsString;
Select ifadelerinde parametreler boþ olamaz fakat Update ve Insert ifadelerinde
boþ olabilir.
Örnek2
var Buffer: Pointer;
{ Custno alanýnýn hafýzada tutabilmek için gerekli yer ayýr}
GetMem(Buffer, Query1.ParamByName('CustNo').GetDataSize);
{ Datayý al }
Query1.ParamByName('CustNo').GetData(Buffer);
5)
PREPARE
BDE' ye ve sunucuya yürütme öncesi
optimizasyon için bir sorgu gönderir.
procedure Prepare;
Prepare' ý BDE' ye sahip olmak için ve
uzak veri tabaný sunucusunu sorgu için kaynaklarýný yerleþtirmesi ve ek
optimizasyonlar gerçekleþtirmesini saðlamak için kullanýn. Prepare' ý
uygulamadan önce çalýþtýrmak performansý artýrýr. Sorgu iþi bitince Unprepare
yapmak performans yönünden iyi olur.
NOT: Bir sorgunun yazýsýný çalýþma anýnda deðiþtirirseniz sorgu otomatikman
kapanýr ve UnPrepare yapýlýr.
Örnek:
if not Query1.Prepared then
begin
Query1.Close;
Query1.Prepare;
Query1.Open
end;
6)
UNPREPARE
Daha önceden hazýrlanan sorgu için
ayrýlan kaynaklarý boþaltýr.
procedure UnPrepare;
UnPrepare metodunu ,server ve client
lardaki daha önceden hazýrlanan sor-gular için ayrýlan kaynaklarý serbest
býrakmak amacýyla çaðýrýn. Query met-nini çalýþma anýnda deðiþtirirseniz query
otomatik olarak kapanýr ve Unprepare metodu çaðrýlýr.
TDBDataSet'
den Gelen Metotlar
7)
CHECKOPEN
Borland Database Engine (BDE)
çaðrýsýnýn sonucunu kontrol eder.
function CheckOpen(Status: DBIResult): Boolean;
CheckOpen' ý bir BDE çaðrýsýnýn
tabloya eriþmek isterken hata döndürüp döndürmediðini belirlemekte kullanýn.
Durum bir önceki çaðrýnýn dönüþ sonucudur. Eðer eriþim baþarýlýysa true döner.
Eðer durum Paradox tablosuna eriþmek için yeterli haklara sahip olunmadýðýný
belirtiyorsa CheckOpen veri tabaný oturumunun GetPassword moduyla kullanýcýya
þifreyi girmesini ister. Eðer doðru þifre girilirse sonuç true olur. Diðer
durumlarda tablo eriþim iþleminin baþarýlamadýðýný belirten False görünür
8)
CLOSEDATABASE
Veri tabaný oturumu ile
iliþkilendirilen veri tabaný baðlantýsýný keser.
procedure CloseDatabase(Database: TDatabase);
Bu metodu kalýcý veya geçici veri
tabaný baðlantýsýný kesmede kullanýlýr. Bu çaðrý veri tabaný öðe referans
sayýsýný azaltýr ve bu sayý 0 olursa ve veri tabaný öðesinin KeepConnection
özelliði False ise bu çaðrý hem geçici hem de kalýcý veri tabaný öðelerin
iliþkisini keser.
NOT: Kalýcý veri tabaný için bu metot çaðrýldýðýnda baðlantý kesilmez bunun
için veri tabaný öðesinin Close metodunu direk olarak çalýþtýrmak gerekir.
Geçici veri tabaný öðeleri veri tabanýyla iliþkilendirilen son tablo
kapandýðýnda otomatik olarak kapanýr. Fakat bir uygulama bu iþi daha erken
yapmak isteyebilir. Eðer oturumun KeepConnections özelliði true ise (Varsayýlan
budur) geçici veri tabaný öðesiyle kurulan baðlantý bu çaðrýyla kapanmaz. Veri
tabaný nesnesini serbest býrakmak için baðlantýlarýný kapattýktan sonra
oturumun DropConnections
metodunu çaðýrýn.
9)
OPENDATABASE
Tablo içeren veri tabanýný açar.
function OpenDatabase: TDatabase;
OpenDatabase' i tablo içeren veri
tabanýna baðlanmak veya geçici veri tabaný öðesi oluþturup veri tabanýna baðlamak
için kullanýnýz. DatabaseName özelliði açýlacak veri tabanýný belirtir.
OpenDatabase þu anki oturumu aktif yapar. DatabaseName özelliðinin var olan
veri tabaný nesnesinin özelliklerine uyup uymadýðýna bakar. Uymuyorsa
OpenDatabase geçici veri tabaný nesnesi oluþturur. Bunu da DatabaseName
parametresini DatabaseName özelliðine atayarak yapar. Sonunda OpenDatabase veri
tabanýnýn Open metodunu veri tabaný sunucusuna baðlanmak için çaðýrýr. Daha
sonra oturumun veri tabaný referans sayýsýný bir artýrýr.
TBDEDATASET'
DEN GELEN METOTLAR
10)
APPLYUPDATES
Cache bellekteki tablo bilgilerini
veri tabanýna yazar.
procedure ApplyUpdates;
Bu metotla cache bellekteki bilgiler
saklanmak amacýyla veri tabanýna alýnýr ama deðiþiklikler veri tabanýna iþlenmez
. Uygulama açýk bir þekilde veri tabaný öðelerinin Commit
metodunu ,eðer yazma baþarýlýysa onaylamak için çaðýrmalýdýr. Veya veri
tabanýnýn Rollback
metodunu eðer hata varsa, geri almak amacýyla kullanýnýz.
Veri tabanýna baþarýlý bir yazma
iþleminden ve veri tabanýnýn Commit metoduna yapýlan baþarýlý bir çaðrýdan
sonra uygulama CommitUpdates metodunu ön belleklenmiþ
(cache) tampon belleðini temizlemek amacýyla çaðýrmalýdýr.
NOT: Her bir tablonun ApplyUpdates metodunu çaðýrmaktansa veri tabaný öðesinin ApplyUpdates
metodunu çalýþtýrmak daha doðru bir iþ olacaktýr.
Veri tabanýnýn ApplyUpdates metodu deðiþiklikleri onaylama veya transferleri
geri alma iþlemlerini otomatik yaptýðý gibi iþlem tamamlanýnca cache belleði
deðiþken temizler.
StartTransaction,
ApplyUpdates, Commit, Rollback Örneði
Aþaðýdaki prosedür bir tuþ ile nasýl tablonun deðiþikliklerinin kaydedileceðini
gösterir.
procedure ApplyButtonClick(Sender: TObject);
begin
with CustomerQuery do
begin
Database1.StartTransaction;
try
ApplyUpdates; {database'e
deðiþiklikleri yaz};
Database1.Commit; {hata yoksa
onayla };
except
Database1.Rollback; {hata varsa
deðiþiklikleri geri al};
raise; {hata durumu oluþtur}
end;
CommitUpdates; {Baþarý durumunda
cache'i temizle}
end;
end;
11)
BOOKMARKVALID
Belirtilmiþ yer iminin geçerliliðini
test eder.
type TBookmark = Pointer;
function BookmarkValid(Bookmark: TBookmark): Boolean; override;
Belirtilen yer iminin doðru bir deðere atanýp atanmadýðýný kontrol etmek için
kullanýlýr. Bookmark
test edilecek yer iminin ismidir.
BookmarkValid yerimi doðruysa true , aksi halde False döndürür.
12)
CANCEL
Eðer aktif kayýt kaydedilmediyse
yapýlan düzenlemeleri iptal eder.
procedure Cancel;
Cancel kaydý önceki konumuna döndürür
ve tablo durumunu dsBrowse' a getirir. Bu metot o alana illegal veri
girildiðinde veya kullanýcý istediði zaman çaðrýlýr. Örneðin TDBNavigator
bileþeni bir Cancel
düðmesi içerir.
Aþaðýdaki örnek kullanýcýya deðiþiklikleri onaylamasýný isteyen bir diyalog
görüntüler .Kullanýcý Yes' e basarsa deðiþiklikler kaydedilecek yoksa iptal
edilecek.
if MessageDlg('Update Record?', mtConfirmation, [mbYes,
mbNo], 0) = mrYes then
Table1.Post
else
Table1.Cancel;
13)
CANCELUPDATES
Cache' teki tablonun güncellenmiþ
haline ait verileri siler ve tabloyu eski konumuna döndürür.
procedure CancelUpdates;
Tablo kapandýysa veya CachedUpdates özelliði False ayarlandýysa CancelUpdates
otomatik olarak çaðrýlýr.
NOT: Tek bir kaydý geri almak için RevertRecord 'u
kullanýn.
14)
COMMITUPDATES
Cache'teki güncellenmiþ tampon belleði
temizler
procedure CommitUpdates;
CommitUpdates 'i ApplyUpdates' i
baþarýyla uyguladýktan sonra ve veri tabaný öðelerinin Commit metodundan sonra
tampon belleði temizlemek için kullanýn. Güncellemeleri yaptýktan sonra cache
belleði temizlemek demek cache'in boþalacaðýný þu durumlar hariç garanti eder:
iþlenemeyecek kayýtlar ve OnUpdate Record ve OnUpdateErrror durum olay
kontrollerince atlanan kayýtlar .
Bir uygulama kayýtlarý cache' teyken
bile deðiþtirmeye çalýþabilir .
CommitUpdates' ten sonra yapýlan kayýt düzenlemeleri cached update bufferýný
tekrar kullanýlabilir hale getirir ve yapýlan deðiþikliklerin veri tabanýna
kaydedilmesi için bir alt çaðrýya ihtiyaç duyar.
15)
COMPAREBOOKMARKS
Ýki bookmark arasýndaki iliþkiyi
belirler.
Type TBookmark = Pointer;
function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer;
Ýki bookmark'ýn ayný olup olmadýðýný belirlemek için kullanýn. Eðer bookmarklar
farklý ise 1 döndürür, aynýysa veya ikisi de boþ ise 0 döndürür.
16)
CONSTRAINTCALLBACK
ConstraintCallBack tablonun BDE sabit
katmanýyla iliþki kurmasýna izin veren bir geri çaðrým fonksiyonudur.
function ConstraintCallBack(Req: DsInfoReq; var ADataSources:
DataSources): DBIResult; stdcall;
Bazý BDE fonksiyonlarý tabloda veya
kendi alanýndaki sabitler hakkýnda bilgi saðlanmasý için bir ger çaðrýma
ihtiyaç duyarlar. ConstraintCallBack' in adresini bu fonksiyonlara direk API
çaðrýsý yaparken parametre olarak kullanýn.
17)
DISABLECONSTRAINTS
Tablodaki sunucu sabitlerinin uygulamalarýný pasif yapar.
procedure DisableConstraints;
Sunucu sabit uygulamalarýnýn geçici kaynakta yer iþgal etmesini engellemek için
kullanýrýz. Uygulama tablo içinde ilerlerken sabitleri geçici olarak pasif
yaparak performansý artýrýr.
NOT: DisableConstraints' i çaðýrmak referans sayýsýný artýrýr. Referans sa-yýsý
0 dan fazla olduðu sürece tablo için sabitler pasif yapýlýr. Sabitleri
yanlýþlýkla pasif yapmamak için çaðrýlarýnýzý gruplandýrýn.
18)
ENABLECONSTRAINTS
Tablo giriþleri için sunucu sabit
uygulamalarýný aktif eder.
procedure EnableConstraints;
Bu çaðrýyý daha önceden DisableConstraints ile pasif edilen uygulama sunucu
sabitlerini aktif etmek için kullanýn.
NOT: Bu çaðrýyý kullanmak referans sayýsýný azaltýr. Bu referans sayýsý 0 ise
tablo için sabitler aktif olur. Sabitleri yanlýþlýkla pasifleþtirmemek için
bunu kullanýn.
19) FETCHALL
Aktif kursörün olduðu pozisyondan
itibaren dosyanýn sonuna kadar olan tüm kayýtlarý getirir ve onlarý yerel
olarak saklar.
procedure FetchAll;
Cachelenmiþ güncellemeleri kullanýrken
network trafiðini düþürmek için kullanýn. FetchAll ChecekBrowseMod' u yapýlan
deðiþiklikleri kaydetmek için kullanýr. Sonra kursörün bulunduðu yerden
itibaren tüm kayýtlarý çaðýrýr ve saklar.
Genellikle cache güncellenmeler aktif
edildiklerinde görüntülenecek bilgi kadar veri çaðrýlýr. her yeni getirme olayý
yalnýzca okunabilir bir transaction baþlatýr. Transferleri saðlamlaþtýrmak ve
network trafiðini azaltmak için uygulama fetchall çaðrýsýný kullanýr.
NOT: Bu çaðrýyý yapmak network ortamýnda ayný anda birden fazla kullanýcýnýn
ayný kayda ulaþmaya çalýþmasý ve deðiþiklik yapmak istemesi yüzünden
güvenilirlik ve kullanýþlýlýk açýsýndan sakýncalýdýr.
20)
GETCURRENTRECORD
Aktif kaydý tampon belleðe çaðýrýr.
function GetCurrentRecord(Buffer: PChar): Boolean;
Çoðu uygulamalar .GetCurrentRecord a ihtiyaç duymazlar. Ttable otomatik olarak
aktif kaydý belleðe yerleþtirir. Buffer en az RecordSize ile belirtilen boyut
kadar olmalýdýr.
21)
GETINDEXINFO
Tablonun indeks veri alanlarýna aktif
indeks hakkýndaki bilgileri çaðýrýr .
procedure GetIndexInfo;
GetIndexInfo 'yu aktif indeks
hakkýndaki bilgiyi güncelleþtirmek için çaðýr. Genellikle bir uygulama bu
çaðrýya ihtiyaç duymaz. Bazý uygulamalar yinede kullanmalarý gerekir.
GetIndexInfo BDE 'yi þu bilgileri de içererek sorgular.
Aktif indeks bir Dbase indeksimi? indeks büyük-küçük harf duyarlý mý ? ,
Ýndeksi oluþturan alan sayýsý , Ýndeks için alan haritasý , Ýndeks anahtarýnýn
boyutu. Ýndeks eðer Dbase indeksi ise alan sayýsý ve alan haritasý çaðrýlmaz.
22)
LOCATE
Tablo içinde özel bir kaydý arar ve
onu aktif kaydý arar.
type
TLocateOption = (loCaseInsensitive, loPartialKey);
TLocateOptions = set of TLocateOption;
function Locate(const KeyFields: string; const KeyValues: Variant; Options:
TLocateOptions): Boolean;
Anahtar alan bir string olup virgülle
ayrýlmýþ aranacak isimlerin bulunduðu bir alaný içerir. Anahtar deðer anahtar
alandaki deðerlerle eþleþen farklý bir dizidir. Çoklu arama deðeri
belirtebilmek için anahtar deðeri deðiþken dizisi olarak giriniz. Vararrayof
komutuyla dizi yapýsý oluþturulur.
with CustTable do
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P']), [loPartialKey]);
Options ek arama seçenekleri sunan bir
dizidir. Eðer Options IoCaseInsentive ayarlar içeriyorsa Locate
büyük harf ayarýna uymayanlarý atlar. Eðer Options IoPartialKey
ayarlarýný içeriyorsa Locate verilen anahtarýn belli bir kýsmýna uyan ilk kayda
konumlanýr. Eðer Options boþ bir set ise veya anahtar alan string alan deðilse
Options atlanýr.
Locate aranýlan kaydý bulursa true
döndürür ve onu aktif kayýt yapar. Diðer hallerde Locate False döndürür.Locate
eþlenen kayda ulaþmak için en hýzlý metodu kullanýr. Eðer indeks varsa ve
aranýlan deðer de bu indeks alanýyla aynýysa Locate indeksi kullanýr. Yoksa
Locate arama için filtre üretir.
23)
LOOKUP
Arama deðerlerine eþit olan
kayýtlardaki deðerleri getirir.
function Lookup(const KeyFields: string; const KeyValues: Variant;
const ResultFields: string): Variant;
Lookup 'ý belirlenmiþ alanlara arama
kriterine eþit olan kayýtlardan deðerler getirmek için kullanýn. Anahtar alan
virgülle ayrýlmýþ aranacak olan alan isimlerinin listesidir. Çoklu arama
deðerleri belirtebilmek için KeyValues' ü deðiþken dizisi olarak , argüman
olarak girin.
24)
REVERTRECORD
Cached güncellemeler aktif olduðunda
aktif kaydý unmodified durumuna yeniden yükler.
Procedure RevertRecord;
Bunu yapýlan deðiþiklikleri geri almak için kullanýn. Yalnýz cached
güncellemeler aktif olduðu zaman yapýn.
NOT: Cache teki bütün deðiþiklikleri iptal etmek için CancelUpdates' i çaðýrýn.
Örnek : Cachelenmiþ
güncellemeler enable olduðunda silinen kayýtlarý kurtarmayý gösteren bir örnek
program.
procedure UndeleteAll(DataSet: TDataSet);
begin
with DataSet do
begin
UpdateRecordTypes := [rtDeleted];
{sadece silinen kayýtlar görünür olacak }
try
First;
while not EOF do
begin
RevertRecord; {aktif kaydý
kurtar}
Next;
end;
finally
UpdateRecordTypes := [rtModified,
rtInserted, rtUnmodified];
end;
end;
end;
25)
UPDATESTATUS
Tablonun aktif güncelleme durumunu
rapor eder.
type UpdateStatus = (usUnmodified, usModified, usInserted,
usDeleted);
function UpdateStatus: TUpdateStatus;
Update durumu kayýtlar düzeltildikçe, eklendikçe, silindikçe sýk sýk deðiþir.
UpdateStatus metodunun geri dönüþ deðerlerinden bazýlarý þunlardýr.
UsUnmodified Kayýt deðiþtirilmemiþ
UsModified Kayýt deðiþtirilmiþ
UsInserted Kayýt eklenmiþ
UsDeleted Kayýt silinmiþ.
TDATASET'
den devralýnan Metotlar
26)
ACTIVEBUFFER
Aktif kayýt için tampona pointer
döndür .
function ActiveBuffer: PChar;
ActiveBuffer ýn , aktif kaydýn
bufferýna iþaret ettiðinden emin olmak için tablo yöntemleri tarafýndan dahili
olarak kullanýlýr . Eðer uygulama , varolan tablo yöntemlerini kullanýrsa ,
aktif tampon her zaman, true olarak ayarlanýlýr . Bundan dolayý ActiveBuffer' ý
doðrudan çaðýrmaya genellikle gerek yoktur . Ayný zamanda ActiveBuffer yer imi
metotlarýnca yerimi bilgisini getirmek için kullanýlýr.
Özel tablo yöntemleri gerektiren
uygulamalar tampon veriye eriþmek için ActiveBuffer' ý çaðýrýrlar. Özellikle
veri tabanýndaki kayýtlar arasýnda ilerlerken bu daha çok lazýmdýr. Bu
durumlarda bile eðer özel yöntemler Next , Prior gibi metotlarý çaðýrýrsalar
aktif tampon otomatik olarak ayarlanýr.
27) APPEND
Tablonun sonuna yeni , boþ kayýt ekler
.
Procedure Append;
Append' i þunlar için kullanýn.
1) Tablonun sonunda yeni , boþ kayýt açmak ,
2) Yeni kaydý aktif kayýt olarak ayarlamak,
Append çaðrýsý yapýldýktan sonra uygulama kayda veri girebilir ve bunlarý post
çaðrýsýyla kaydedebilir. Yenice eklenen kayýt , aþaðýdaki üç yolun biriyle veri
tabanýna kaydedilir .
a) Ýndekslenmiþ
paradox ve dbase tablolarý için kayýt , dizinine dayanýlan
konumda tablo içine eklenir .
b) Indekslenmemiþ paradoxu ve dbase tablolarý Ýçin , kayýt , tablonun sonu-na
eklenilir .
c) Sql veri tabanlarý için , eklemenin fiziksel yerleþimi özel yapýlýr.
d) Ýndekslenmiþ tablolar için , dizin , yeni kayýt bilgisi ile güncelleþtirilir
.
Örnek : Bu örnek
butona týklandýðýnda yeni bir kayýt ekler. Alfanumeric ve integer adlýiki alan
iki edit kutusundaki deðerce doldurulur.
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Append;
Table1.FieldValues['ALPHANUMERIC'] :=
Edit1.text;
Table1.FieldValues['INTEGER'] :=
StrToInt(Edit2.text);
Table1.Post;
end;
28)
APPENDRECORD
Veri tabanýnýn sonuna yeni bir kayýt
ekler.
procedure
AppendRecord(const Values: array of const);
Tablonun sonunda yeni , boþ kayýt
oluþturmak için AppendRecord' u çaðýrýr ve veri tabanýna deðerleri kaydeder .
Yeni eklenilen kayýt , aþaðýdaki üç yo-lun biriyle veri tabanýna kaydedilir .
Ýndekslenmiþ Paradox ve Dbase
tablolarý için , kayýt , onun dizinine dayanan konumda tablo içinde araya
eklenilir . Ýndekslenmemiþ Paradox ve Dbase tablolarý Ýçin , kayýt , tablonun
sonuna eklenilir . Sql veri tabanlarý için , eklemenin fiziksel yerleþimi özel
yapýlýr. . Ýndekslenmiþ tablolar için , dizin , yeni kayýt bilgisi ile
güncelleþtirilir . Yeni eklenilen kayýt , aktif kayýttýr .
Örnek:
Customer.AppendRecord([CustNoEdit.Text,CoNameEdit.Text,
AddrEdit.Text, Null, Null, Null, Null, Null, Null, DiscountEdit.Text]);
NOT : Eðer dizinin sonunda belli bir deðer yoksa Null yazmanýza gerek
yoktur. Burada en son eleman DiscountEdit.Text olduðu için aradakileri Null ile
belirtmemiz gerekir.
29)
CHECKBROWSEMODE
Uygulama aktif kaydý deðiþtiren bir
metodu çaðýrdýðýnda otomatik olarak deðiþiklikleri kaydeder veya iptal eder.
Procedure CheckBrowseMode;
Tablonun durumu , dsEdit , dsInsert
veya dsSetkey durumu olduðunda ve baþka bir kayda baðlanan bir metot
çaðrýldýðýnda CheckBrowseMode , aktif kayýtta yapýlan deðiþikliklerin veri
tabanýna kaydedildiðinden emin olmak için bir çok tablo yöntemi tarafýndan
dahili olarak kullanýlýr . Eðer durum , dsEdit veya dsInsert olsa ,
CheckBrowseMode , UpdateRecord 'u çaðýrýr ve sonra , eðer tablo için
deðiþtirilmiþ özellik , true olursa , CheckBrowseMode, Post' u çaðýrýr .
Modified False ise CheckBrowseMode Cancel' ý çaðýrýr. Eðer durum , dsSetkey
olsa , CheckBrowseMode, Post' u çaðýrýr .
Eðer durum , dsInactive olursa ,
CheckBrowseMode, kural dýþý durumu or-taya çýkarýr. Eðer uygulama var olan
tablo yöntemlerinden birini kullanýyorsa CheckBrowseMode yalnýzca ihtiyaç
duyulduðunda çaðrýlýr. Bu yüzden genel-likle bunu direk olarak çaðýrmak
gerekmez. Özel tablo yöntemlerini gerekti-ren uygulamalar CheckBrowseMode' u
baþka bir kayda geçildiðinde deði-þikliklerin kaydedilip kaydedilmediðinden
emin olmak için kullanýrlar.
30)
CLEARFIELDS
Aktif kayýt için bütün alanlarýn
içindekileri temizler .
procedure ClearFields;
Aktif kayýt için bütün alanlarýn aktif
içeriklerini silmek amacýyla ClearFieldsi çaðýr . Eðer tablo ne dsInsert ne de
dsEdit durumunda ise ClearFields bir istisna durumu çýkarýr. Diðer hallerde
DataEvent olay durum ayarlayýcýsýný CheckBrowseMode' u çaðýrmak için kullanýr.
Sonra kayýttaki tüm alanlarý temizleyerek iþe baþlar. Eðer Setkey iþlemi
yapýlmamýþsa ClearFields tüm hesaplanmýþ alanlarý tekrar hesaplamak zorunda
kalacaktýr. Ayný zamanda DataEvent denetimciyi kaydýn deðiþtiðini bildiren bir
parametre ile çaðýrýr. . Dönüþte , Data Event denetimcisi , tablo ile ilgili
veri kaynaðý bileþeni için ondatachange olay denetimcisini çaðýrýr .
31)
CLOSE
Tabloyu kapatýr .
Procedure Close ;
Tablonun Active özelliðini false
ayarlamak için Close' u çaðýrýn . Active , False olduðunda tablo, kapatýlýr.
Tablo , veriyi okuyamaz veya veri tabanýna veriyi yazamaz . Uygulamada veriyi
gösteren veri tabaný veya dene-timlerin durumunu etkileyen diðer özellikler
deðiþmeden önce uygulama , Active' i false ayarlamalý . Örneðin , DataSource'
un tablo özelliðini deðiþtirmeden önce Active false ayarlanmalý ki bu iþlem
yapýlabilsin. Active' i false ayarlamak tabloyu dsinactive durumuna koyar ve
BDE imlecini kapatýr.
32)
CONTROLSDISABLED
Veri bilinçli (Data-aware) denetimlerinde gösterilen güncellenen verinin tablo
için pasifleþtirilip pasifleþtirilmediðini belirler.
Function controlsdisabled: boolean;
Eðer ControlsDisabled , true ise ,
denetimler , o anda pasifleþtirilirler.Controlsdisabled referans sayýsý ki bu
tablonun pasifleþme izlerini tutar, 0 dan büyük olduðu sürece true 'dur. Bu
sayý DisableControls çaðrýldýkça artar. Uygulamalar DisableControls 'u
performansý artýrmak ve çok sayýda kayýt içeren tablolar arasýnda dolaþýrken
sabit görüntü güncellemesini engellemek için çaðýrmalýdýrlar. Kompleks
uygulamalarda kontroller zaman zaman pasifleþebilir bu durumu kontrol edip
etkinleþtirmek için ControlsDisabled kullanýlýr
Örnek:
procedure ReEnableControls (TABLE: TDATASET);
begin
while TABLE.ControlsDisabled do
TABLE.EnableControls;
end;
33)
CURSORPOSCHANGED
Tabloda imleç konumunu -1 e ayarlar
procedure CursorPosChanged;
Curposchanged , mantýksal imleç konumu
ile ilgili fiziksel imleç konumu tarayan deðiþkeni geçersiz kýlan iç yöntemdir
. Curposchanged istenilen kayýt için Locate ve Lookup metotlarýndan önce çaðrýlýr.
Bu metotlar eðer baþarýlý olursa imleci aranana uyan ilk kayda konumlandýrýr.
34)
DELETE
Aktif kaydý siler ve , sonraki kayýta imleci konumlar .
Procedure Delete ;
Delete' i aktif kaydý veri tabanýndan
silmek için kullanýn. Tablo pasifse Delete bir istisna ortaya çýkarýr. Diðer
hallerde tablonun boþ olmadýðýný onaylar CheckbrowseMode çaðýrarak yapýlan
deðiþiklikleri kaydeder. BeforeDelete olay denetimcisini tetikler
kaydý siler. Kayýt için ayrýlan hafýzayý serbest býrakýr. Tabloyu dsBrowse moduna
sokar Kursörü bir sonraki kayda konumlar . AfterDelete
denetimcisini tetikler.
35)
DISABLECONTROLS
Veri kaynaðý bileþeni içinden tablo
ile ilgili veri bilinçli (data-aware) denetiminde gösterilen veriyi
geçersizleþtirir .
Procedure Disablecontrols ;
Tabloda çok miktardaki kayýtlarýn içinden önce data-aware denetiminde veri
gösterilmesini önlemek için disablecontrols' u çaðýrýn . Kayýtlar arsýnda hýzla
ilerlerken bunlarý ekranda göstermeye gerek yoktur. Bunu da bu methodla
yaparýz.
Eðer kontroller pasifleþtirilmemiþse
disablecontrols tablonun durumunu kaydeder. Pasif deðiþken sayýsýný bir
artýrýr. Aktif denetimcisi ve pasif deðiþken sayýsý diðer metotlarca dahili
olarak veriyi objelere yansýtýp yansýtýlmayacaðýný belirlemek için kullanýrlar.
Pasif deðiþken sayýsý 0 dan büyükse veri gösterilmez. Denetimler , zaten
geçersizleþtirildiðinde disablecontrols , emniyetle çaðýrýlabilir . Kompleks
uygulamalarda farklý iþlemler olabilir.
Örnek:
with CustTable do
begin
DisableControls;
try
First;
while not EOF do
begin
{ Her kaydý burada iþle }
.
.
.
Next;
end;
finally
EnableControls;
end;
36)
EDIT
Tabloda verinin biçimlemesini mümkün
kýlar .
Procedure Edit ;
Edit' i aktif kaydý düzenlemeye olanak
vermek için çaðýrýn. Edit tablonun aktif durumunu belirler. Tablo boþ ise Edit
Insert 'i çaðýrýr. Yoksa Edit;
CheckBrowseMode' u herhangi bir deðiþiklik olduðunda kaydetmek için çaðýrýrlar.
BeforeEdit denetimcisini tetikler . Kaydý getirir. Tabloyu dsEdit durumuna
getirir. Uygulamaya veya kullanýcýya kayýttaki alanlarý düzenleme imkaný verir.
Kayýt deðiþtirme denetimcisini tetikler. AfterEdit olay denetimcisini tetikler.
Örnek:
Procedure TForm1.Button1Click(Sender: TObject);
var
Stream1, Stream2 : TBlobStream;
begin
Stream1 :=
TBlobStream.Create(Table1Notes, bmRead);
try
Table2.Edit;
{ Aþaðýda bloab akýþý oluþturmanýn
diðer bir yolu }
Stream2 :=
Table2.CreateBlobStream(Table2.FieldByName('Remarks'),
bmReadWrite);
try
Stream2.CopyFrom(Stream1, Stream1.Size);
Table2.Post;
finally
Stream2.Free;
end;
finally
Stream1.Free;
end;
end;
37)
ENABLECONTROLS
Veri kaynaðý bileþeni içinden tablo
ile ilgili data-aware denetiminde veri gös-terilmesini aktif kýlar .
procedure EnableControls;
Eðer pasif deðiþken sayýsý 0 ise
EnableControls tablodaki aktif durumu günceller. Eðer gerekirse olay
denetimcisini veri gösterimini yeniden aktif kýlabilmek için çaðýr.
38)
FIELDBYNAME
Belirlenmiþ alan ismine dayanýlan
alaný bulur .
function FieldByName(const FieldName: string): TField;
Sadece alanýn ismi , bilinildiðinde
alan için alan bilgisine eriþmek için FieldbyName' i çaðýrýn. Fieldname ,
varolan alanýn isimidir . Fieldbyname , belirlenmiþ alan için Tfield bileþeni
döndürür . Uygulama , özel özelliklere ve alanýn yöntemlerine doðrudan
eriþebilir . Örneðin , aþaðýdaki deyim , belirlenmiþ alanýn hesaplanmýþ alan
olup olmadýðýný belirler.
if Customers.FieldByName('FullName').Calculated then
MessageDlg(Format('%s is a calculated field. ', ['FullName']), mtInformation,
[mbOK], 0);
FieldbyName , veri tabaný uygulamalarýný ama temelde olan tabloya eriþmeyeni
yaratan geliþtiriciler için özellikle tasarým zamanýnda yararlýdýr ve
bu yüzden , kalýcý alan bileþenlerini kullanamaz .
NOT: Özel alan için deðere eriþmek veya ayarlamakta , FieldByName yerine
varsayýlan tablo yöntemiyle FieldValues' ü çaðýrýn.
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
try
{edit alanýnýn integera
çevrilebildiðinden emin olun }
StrToInt(Edit1.Text);
except
Edit1.Text := '0';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Insert;
Table1.FieldByName('QUANTITY').AsInteger := StrToInt(Edit1.Text);
Table1.Post;
end;
39) FINDFIELD
Tabloda belirlenmiþ alan nesnesini
arar .
Function FindField(const fieldname: string): TField;
Belirlenmiþ alan bileþeninin , tabloda
olup olmadýðýný belirlemek için Findfield' ý çaðýrýn . Fieldname , aranacak
alanýn isimidir. Eðer Findfield , eþlenen isimle ayný alaný bulursa ,
belirlenmiþ alan için TField tipinde bileþeni döndürür . Aksi halde boþ deðer
(Nil) döndürür . Findfield , parametre olarak geçerli alan isimi gerektiren
FieldByName gibi , diðer tablo yöntemlerini çaðýrmadan önce kullanma amacýna
yönelik yararlý bir iþlevdir .
Örnek
with Table1 do
begin
{ Bu 'CustNo' alanýný deðiþtirmenin
güvenli bir yoludur }
FindField('CustNo').AsString :=
'1234';
{ Bu 'CustNo' alanýný deðiþtirmenin
güvenli olmayan bir yoludur }
Fields[0].AsString := '1234';
end;
40)
FINDFIRST
Süzgeçlenmiþ tabloda imleci ilk kayda
konumlamak için görsel bir iþlem yerine getirir.
function FindFirst: Boolean;
Bu iþlev , imleç baþarýlý biçimde
yeniden yerleþemediðinde False döndürür . Genellikle uygulama , tablo düzeyinde
FindFirst' ü çaðýrmamalý ama yerine , redeclared' ý ve TTable gibi torun
nesnede FindFirst' ü çaðýrmalýdýr . Findfirst , Findfirst'ü yapmayan türemiþ
tablo nesneleri için Fallback yöntemi saðlar .
41)
FINDLAST
Süzgeçleniþ tablodaimleci son kayda
konumlamak için görsel bir iþlem yeri-ne getirir.
function FindLast: Boolean;
Bu iþlev , imleç baþarýlý biçimde
yeniden yerleþemediðinde False döndürür . Genellikle uygulama , tablo düzeyinde
FindLast'ý çaðýrmamalý ama yerine , redeclared' ý ve TTable gibi torun nesnede
FindLast 'ý çaðýrmalýdýr. FindLast, FindLast 'ý yapmayan türemiþ tablo
nesneleri için fallback yöntemi saðlar .
42)
FINDNEXT
Süzgeçlenmiþ tabloda imleci bir
sonraki kayda konumlamak için görsel bir iþlem yerine getirir.
function FindNext: Boolean;
Bu iþlev , imleç baþarýlý biçimde
yeniden yerleþemediðinde False döndürür . Genellikle uygulama , tablo düzeyinde
findlast' ý çaðýrmamalý ama yerine , redeclared' i ve TTable gibi torun nesnede
Findfirst' ü çaðýrmalýdýr. Findfirst , Findfirst' ü yapmayan türemiþ tablo
nesneleri için fallback yöntemi saðlar .
43)
FINDPRIOR
Süzgeçlenmiþ tabloda imleci bir önceki
kayda konumlamak için görsel bir iþlem yerine getirir.
function
findprior: boolean;
FindPrior , FindPrior' u yapmayan
türemiþ tablo nesneleri için Fallback yöntemi saðlar .
44)
FIRST
Tabloda ilk kayda imleci konumlamak
için genel yöntemi uygular .
procedure first ;
First' ü TDataset düzeyinde çaðýrma. TDataset torunlarýnda , onu aktif kayýt
yapmak için ve tabloda ilk kayda imleci konumlamak için first' ü çaðýr . First
, yapýlan deðiþiklikleri aktif kayda kaydeder ve :
Kayýt tamponlarýný temizler . Tablo dosyasýnýn baþlangýcýna imleci ayarlar .
Sanalý çaðýrýr , ilk kayda gidip almak için , kursörü onun üstüne
konumlandýrýr, ve onu aktif kayýt yapar . TDataset için bu yöntem , sadece
tanýmlanýr uygulanmaz .
• Gösterilecek ek kayýtlarý getirir .Buda baþka bir etkili metodu çaðýrýr ki bu
sadece tanýmlanýr ,yürütülmez.
• Bof özelliðini true ayarlar.
• Tablo deðiþim olaylarý için olay denetimcisini tetikler
45)
FREEBOOKMARK
Belirtilmiþ yerimi için ayrýlan
kaynaklarý boþaltýr.
type TBookmark = Pointer;
procedure FreeBookmark(Bookmark: TBookmark); virtual;
Tabloda iþaretlenen yer imlerini serbest býrakmak için Freebookmark'ý çaðýrýn .
Yeniden atamadan önce varolan yer imini serbest býrakýr . Yer imi , artýk
ihtiyaç duyulmadýðýnda belirlenmiþ yer imi için ayrýlan belleði serbest býrakýr
.Aþaðýdaki örnek bir önceki kayýttaki alanýn deðerini aktif kayýttaki ayný
alana kopyalar.
procedure TForm1.CopyDataClick(Sender: TObject);
var
SavePlace: TBookmark;
PrevValue: Variant;
begin
with Table1 do
begin
{ Yerimi al böylece ayný kayda
dönebiliriz }
SavePlace := GetBookmark;
{ Önceki Kayda konumlan }
FindPrior;
{ Deðeri al }
PrevValue := Fields[0].Value;
{Yerimine geri git }
GotoBookmark(SavePlace);
{ Deðeri Set et }
Fields[0].Value := PrevValue;
{ Yerimini temizle }
FreeBookmark(SavePlace);
end;
end;
Tablonun baþýna gelindiðinde önceki tuþunun pasif olmasý için BOF fonksiyonuyla
bir kontrol yapýlýr.
procedure TForm1.Table1DataChange(Sender: TObject;
Field: TField);
begin
if Table1.BOF then
CopyData.Enabled := False
else
CopyData.Enabled := True;
end;
46)
GETBOOKMARK
Tabloda aktif imlecin konumuna yer
imini yerleþtir.
type TBookmark = Pointer;
function GetBookmark: TBookmark; virtual;
Tabloda aktif kayýt için yer imini
kurmak amacýyla GetBookmark ý çaðýrýn . yer imi , varken kayýt için yer imi
kurarak her istendiðinde tabloda o kayda
dönmeyi mümkün kýlar . GetBookMark , TBbookMark tipinde uygulamada zaten
tanýmlanmýþ deðiþkeni gerektirir .Getbookmark' ý GotoBookMark ve FreeBookMark
'a yapýlacak sonraki çaðrýlarda referans edecek bir deðer aktarmak için
kullanýn.
NOT :GetBookmark artýk bu yer imlerine ihtiyaç olmadýðýnda FreeBookMark'
ý kullanarak bunun için ayrýlan hafýzayý serbest býrakmalýdýr.
47)
GETFIELDLIST
Liste içine belirlenmiþ alan
nesnelerinin setini getirir.
procedure GetFieldList(List: TList; const FieldNames: string);
Uygulama tarafýndan yaratýlan ve
uygulamaca sürdürülen liste nesnesi içine belirlenmiþ alan nesne setlerini
kopyalamak için GetFieldList' i çaðýrýn. Liste , alan nesnelerini kopyalanmasý
gereken TList nesnesidir . FieldNames , kopyalanacak alanlarýn ismini içeren
dizidir . Dizide her bir alan isimi , noktalý virgül ile diðer alan
isimlerinden ayrýlmalýdýr . GetFieldList , tablonun alan nesnelerinin
isimlerinden oluþan bir liste yapar.
NOT: Normal olarak uygulamalar , alan nesnelerini kopyalamak için GetFieldList'
i çaðýrmamalýlar . alan nesneleri , tablonun içinden doðrudan eriþilmelidirler
. Bazý durumlarda , ancak , o tabloda güncel nesnede çalýþmak yerine alan
nesnesi veya verisinin kopyasý ile çalýþmak yararlý olabilir . Bu durumlarda ,
GetFieldList, yararlýdýr .
48)
GETFIELDNAMES
Tabloda bütün alanlar için isimlerin
listesini getirir .
procedure GetFieldNames(list: tstrings);
Tablodaki bütün alanlar için isim
listesini almak amacýyla GetFieldNames ' i çaðýrýn . Liste , uygulama
tarafýndan yaratýlan ve korunan TStrings nesnesidir . Nesneleri runtimede
dinamik olarak yaratýlan alan nesnelerine sahip olan uygulamalar için alan
isimlerinin listesini almak oldukça yararlýdýr . Alan isimlerinin listesine
eriþerek , uygulama , runtime da sadece var olan alanlar ile çalýþmaða
zorlanabilir.
49)
GOTOBOOKMARK
Belirlenmiþ yer imi tarafýndan iþaret
edilen kayda imleci konumlamak için sanal yöntem uygular .
type TBookmark = Pointer;
procedure GotoBookmark(Bookmark: TBookmark);
TDataset düzeyinde GotoBookMarký
çaðýrma . GotoBookMark , sanalý çaðýrýr TDataset tarafýndan uygulanýlmayan iç
yöntemi ayýrýr. Bunun yerine TDataset' in torunlarý GotoBookmark metodunu
yeniden tanýmlar ve yürütür. Uygulamalarda torunlarýn metodunu kullanmalarý
tavsiye olunur.
50)
INSERT
Tabloya yeni , boþ kayýt ekler.
Procedure Insert ;
Insert' ü þu durumlarda çaðýrýn.
1) Tabloda yeni , boþ kaydý açmak için ,
2) Yeni kaydý aktif kayda ayarlamak için .
Insert metodu kullanýldýktan sonra uygulama kullanýcýlarýn kaydýn alanlarýna
veri girilmesine izin verir. Daha sonra bu deðiþiklikleri Post ile veya eðer
Cached Updating aktifse applyupdates ile kaydetmenize izin verir.
Yenice eklenen kayýt , aþaðýdaki üç yolun biriyle veri tabanýna kaydedilir.
1) Ýndekslenmiþ paradox ve dbase tablolarý için , kayýt , indeks pozisyonuna
göre tablo içine araya eklenilir .
2) Unindexed Paradox ve dbase tablolarý için , kayýt , aktif imleç konumunda tablo
içine araya eklenilir
3) Sql veri tabanlarý için ekleme iþlemi özel olarak yapýlýr.
indekslenmiþ tablolar için , dizin , yeni kayýt bilgisi ile güncelleþtirilir .
51)
INSERTRECORD
Tabloya yeni bir kayýt ekler ve bunu
veri tabanýna kaydeder.
procedure InsertRecord(const Values: array of const);
Tabloda yeni , boþ kayýt yaratmak için InsertRecordu çaðýr ve veri tabanýna
deðerleri kaydet. araya yeni kayýt ekleme , üç yolun biriyle veri tabanýya
kaydedilir.
1) Ýndekslenmiþ paradox ve dbase tablolarý için , kayýt , dizini dayanýlan
ko-numda tablo içine araya eklenilir
2) Unýndexed Paradoxu ve Dbase tablolarý için , kayýt , aktif imleç konumunda
tablo içine araya eklenilir
3) Sql veri tabanlarý için ekleme iþlemi özel olarak yapýlýr. indekslenmiþ
tab-lolar için , dizin , yeni kayýt bilgisi ile güncelleþtirilir .
Yeni araya eklenen kayýt , aktif kayýtdýr .
Aþaðýdaki ifade Customer tablosuna kayýt ekler. Bazý deðerlere boþluk
atanmýþtýr fakat dizinin sonundaki elemanlar için boþluk atamaya gerek yoktur.
Bu elemanlar belirtilmediðinde boþ sayýlýrlar.
Customer.InsertRecord([CustNoEdit.Text,
CoNameEdit.Text, AddrEdit.Text, Null, Null, Null, Null, Null, Null,
DiscountEdit.Text]);
52)
ISEMPTY
Tablonun kayýt içerip içermediðine ,
karar verir
function IsEmpty: Boolean;
Eðer tablo , herhangibir kayýt içermezse IsEmpty , true döndürür , aksi halde
false döndürür .
53)
ISLINKEDTO
Tablonun belirlenmiþ veri kaynaðýna
baðlanýp baðlanmadýðýný denetler .
function IsLinkedTo(DataSource: TDataSource): Boolean;
NOT .IsLinkedTo geliþtiriciler için üretilmiþtir. Genel veri eriþimi için buna
ihtiyaç duyulmaz Eðer tablo , belirlenmiþ veri kaynaðýný zaten kullanýyorsa ,
IsLinkedTo , true döndürür Eðer tablo , belirlenmiþ veri kaynaðýný kullanmazsa
ve veri kaynaðý , kendi tablosuna sahip deðilse, IsLinkedTo , false döndürür.
54) LAST
Tabloda son kayda imleci konumlamak
için genel yöntemi uygular .
Procedure Last ;
TDataset düzeyinde Last' ý çaðýrma. TDataset torunlarý , onu aktif kayýt yapmak
ve imleci son kayda konumlamak için Last' ý çaðýrýr .Last aktif kayda yapýlan
her deðiþimi kaydeder.Ayrýca :
• Kayýt tamponlarýný temizler,
• Tablo dosyasýnýn sonuna imleci ayarlar ,
• Sanalý çaðýr , son kayda eriþmek için bu metodu çýkarýr kursörün üzerine
konumlandýrýr ve onu aktif kayýt yapar TDataset için bu tanýmlanmýþ fakat
çalýþtýrýlmamýþtýr.
• Gösterilecek ek kayýtlarý da getirir. Grid kontrolü dolduracak olan kayýtlarý
getirir,
• Eof özelliðini true yapar,
• Tablo deðiþim olaylarý için olay denetimcisi tetikler .
52)
55)
MOVEBY
Tabloda aktif kaydý ile iliþkili kayda imleci konumlandýr.
function MoveBy(Distance: Integer): Integer;
Uzaklýk , gidilecek kayýt sayýsýný
gösterir. Negatif deðer , geriye gitmeyi gösterir iken pozitif deðer , tablo
içinde ileriye doðru hareket etmeyi gösterir.
Örneðin , 10 kayýt kadar tablo içinden geriye gitme iþlemini Moveby ( -10 )
ile gerçekleþtiririz. Moveby , aktif kaydý veya herhangi bir deðiþimi kaydeder.
Eof' 'a ve Bof' a false özelliðini ayarlar . Eðer dosyanýn sonuna gelindiyse
Moveby , eof 'u true ayarlar. Eðer dosyanýn baþýna gelindiyse Moveby , bof 'u
true ayarlar. Tablo kaydýrma olaylarý için olay denetimcisini tetikler. Hareket
ettirilen kayýtlarýn gerçek sayýsýný döndürür . Çoðu durumda , sonuç ,
uzaklýðýn mutlak deðeridir ama eðer Moveby , kütük baþý veya kütük sonu ile
karþýlaþýrsa, sonuç , uzaklýðýn mutlak deðerinden daha az olacaktýr.
56)
NEXT
Tabloda sonraki kayda imleci
konumlamak için genel yöntem uygulanýr.
procedure Next;
TDataset düzeyinde next' i çaðýrmayýn
.TDataset torunlarýnda,onu aktif kayýt yapmak ve Dataset de imleci sonraki
kayýtta konumlamak için next' i çaðýrýn . Aktif kayýttaki herhangi bir deðiþimi
next kaydeder . Eof' a ve Bof' a false özelliðini ayarla . Eðer son kayda
gelindiyse eof 'u true ayarlar. Tablo kaydýrma olaylarý için olay denetimcisini
tetikler.
57)
OPEN
Tabloyu açar.
Procedure open;
Tablonun active özelliðini true
ayarlamak için open' ý çaðýr .Active true iken veri tabanýna yazýlabilir ve
buradan okunabilir. Active' i true ayarlayarak tablo tanýmlandý ise BeforeOpen
olay denetimcisini tetikler .Tablo durumunu dsBrowse' a ayarlar. Tablo içine
BDE' yi açar(sadece TQuery ,TStoredProc, TTable için geçerli) Eðer
tanýmlandýysa AfterOpen olay denetimcisini tetikler. Eðer tablo açma sýrasýnda
hata çýkarsa tablo durumu , dsInactive' e ayarlanýr ve imleç kapatýlýr .
58)
POST
Veri tabanýna deðiþtirilmiþ kaydý
yazmak için genel yöntemi uygular .
Procedure Post; virtual;
TDataset , veri tabanýna deðiþtirilmiþ kaydý yazmak için gerçek yöntemi uygular.
Tablo durumunu deðiþtiren tablo metotlarý (Edit, Insert,Append veya
First,Last,Next ve Prior) otomatik olarak Post metodunu çaðýrýrlar. TDataset in
tüm torunlarý veri tabanýna yazmak için post metodunu yeniden tanýmlar ve
iþler.
Aþaðýdaki örnek kullanýcý butona týkladýðýnda tabloya yeni bir kayýt ekler.
Alphanumeric ve ýnteger adlý iki alan edit kontrollerince doldurulur.
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Append;
Table1.FieldValues['ALPHANUMERIC'] :=
Edit1.text;
Table1.FieldValues['INTEGER'] := StrToInt(Edit2.text);
Table1.Post;
end;
59)
PRIOR
Tabloda önceki kayda imleci konumlamak
için genel yöntemi uygular.
procedure Prior;
TDataset düzeyinde Prior 'u çaðýrma.
TDataset torunlarýnda , tabloda önceki kayýtda imleci konumlamadan önce çaðýr
ve o aktif kaydý aktif kayýt yapar ve her deðiþimi kaydeder. Eof'a ve bof'a
false özelliðini ayarla . Eðer ilk kayda gelindiyse gelindiyse eof 'u true
ayarlar. Tablo kaydýrma olaylarý için olay denetimcisini tetikler.
60)
REFRESH
Tablonu veri görüþünü yenilemek için
veri tabanýdan verinin yeniden genel yöntemlerce getirilmesini saðlar.
procedure Refresh;
TDataset nesnesi için tazelemeyi
çaðýrmayýn. Yerine , redeclared' ý çaðýrýn ve TDataset in torunlarý için refresh'
i yeniden yürüt refresh ile uygulama ,veri tabanýndaki en son veriye sahip
olunduðundan emin olur . Örneðin :bir uygulama bir tablonun filtrelemesini
sonlandýrýnca ,o hemen tablodaki tüm kayýtlarý listelemek için Refresh' i
çaðýrmalýdýr.
53)
61)
RESYNC
Aktif kaydý ve onun önündeki ve
sonundaki kayýtlarý yeniden getirir.
type TResyncMode = set of (rmExact, rmCenter);
procedure Resync(Mode: TResyncMode); virtual;
Resync diðer tablo metotlarýnca Delphi
tablolarýyla fiziksel verileri - bunlar çaðrý yapýldýðýnda kursör pozisyonunu
deðiþtirebilirler - yeniden uyumlu hale getirmek için kullanýlýr. Uygulamalar
Resync yerine Refresh metodunu kullanmalýlar. Mode Resync 'nin alabileceði
mümkün iþlemleri belirtir.
Eðer mod , rmexasct'ý içerir , resync eðer imleç ,geçerli kayýtta
yerleþtirilmediðinde , resync çaðrýlýrsa resync istisna çýkarýr. Eðer mod
rmCenter içerirse, Resync aktif kaydý tüm buffýrlanmýþ kayýtlarýn merkezine
koyar.
Mode ne olursa olsun resync ayný zamanda aktif kayýt için buffer' ý aktif eder.
Önceki ve sonraki kayýtlarý ekrana getirmek için çaðýrýr ve tablonun change
olayýný tetikler.
62)
SETFIELDS
Kayýttaki bütün alanlarýn deðerlerini
ayarlar .
procedure SetFields(const Values: array of const);
Ayný anda bazý alanlar için deðerleri veya bütün alanlarý ayarlamak için
SetFields' ý çaðýrýn. Values , her bir alan içine eklenecek deðerleri içerir .
Deðerler sutunlarýn sýrasýna göre
atanýr. Bu deðerler literal,deðiþken veya boþ olabilir. Eðer sütun sayýsýndan
az deðer girilirse bunlar boþ sayýlýr. Böyle alanlarda herhangi bir varolan
deðerin üstüne yazar. SetFields çaðýrmadan önce , DataSeti dsedýt durumu içine
koymak üzere editi çaðýr. Setfýeld çaðýrdýktan sonra , veri tabanýna
deðiþiklikleri yazmak Ýçin post'u çaðýr .
NOT: Bazý alanlarýn deðerlerini var olanlarýn deðerlerini diðerleri için
saklamak ve deðiþmeyeceklere boþluk atamak suretiyle ayarlamaktýr.
63)
TRANSLATE
Kaynaktan hedefe veri kopyalama
sýrasýnda karakter transferi yapar.
procedure Translate(Src, Dest: PChar; ToOem: Boolean); virtual;
Bu iþlev , hedef dizgisine kaynak
dizgisini kopyalar ve , ToOem'de geçilen deðeri yok sayar . Genelde uygulama
TDataset seviyesinde bu çaðrýyý yapmaz. Fakat bunun yerine torunlarýn
geliþtirilmiþ ve yeniden tanýmlanmýþ çaðrýlarýný kullanýn. Örneðin TTable veya
geliþtirici tabanlý objeler gibi.
64)
UPDATECURSORPOS
Ýmleci aktif kayýta konumlar.
procedure UpdateCursorPos;
Updatecursorpos , fiziksel imlecin
aktif kayýtta doðru yerleþtirildiðinden emin olmak amacýyla bir çok tablo
yöntemi tarafýndan kullanýlan iç yordamdýr. Normal olarak uygulamanýn ,
UpdateCursorpos' u çaðýrmasý gerekmez. Genelde fiziksel kursor pozisyonu ile
mantýksal kursor durumunun eþit olup olmadýðýna bakar.
65)
UPDATERECORD
Kayýt güncelleþtirmesi için veri
olayýný harekete geçirir .
procedure UpdateRecord;
UpdateRecord cached güncellemeler
aktif iken onUpdateRecord olayýný tetiklemek için bazý tablo yöntemlerince
dahili olarak kullanýlýr. Uygulamalar genelde tablo yöntemlerini es geçecek
özel yöntemler gerekmedikçe bunu kullanmazlar.
66)
DESTROYCOMPONENTS
Destroycomponents sahibi bulunulan
öðeler arasýnda ilerlerken sahipleri tarafýndan deðiþtirilir.
procedure DestroyComponents;
Destroycomponents , bileþenlerin sahipleri tarafýndan otomatik olarak
silindiðinden emin olmayý saðlar. Destroycomponents' i doðrudan çaðýrmak
gerekli deðildir.
67)
DESTROYING
Destroying csDestroying bayraðýný
nesneler ve sahiplenmiþ tüm öðeler için bu öðelerin yok edilmekte olduðunu
belirten þekilde ayarlar.
procedure Destroying;
Eðer csDestroying , zaten ayarlanýlýrsa , destroying, hiçbir þey yapmaz .
Destroying' i doðrudan çaðýrmak gerekli deðildir.
68)
FINDCOMPONENT
Verilen öðenin -Aname- bir öðece
sahiplenip sahiplenmediðini belirtir.
function FindComponent(const AName: string): TComponent;
FindComponent , arama parametresindeki
dizgiye eþit olan isim özelliðine sahip bileþen dizisi içinde olan bileþeni
döndürür. Verilen bileþenin baþkasý tarafýndan sahiplenip sahiplenmediðini
bulmak için kullanýn. FindComponent , büyük ve küçük harfe duyarlý deðildir.
69)
FREENOTIFICATION
Freenotification , Acomponent
bileþenin imha edileceðinin bildirildiðinden emin olmak için kullanýlýr .
procedure FreeNotification(AComponent: TComponent);
Farklý bir formdaki bileþen ,
bileþenin özelliðine atandýðýnda FreeNotification' ý kullanýn. Bileþene sahip
olan diðer formlarda bileþenler için FreeNotification' u çaðýrmak gereklidir.
Fakat ayný formdaki bileþenler için Notification metodu otomatik olarak
çaðrýlýr.
70)
FREEONRELEASE
FreeOnRelease , com sýnýflarýndan
oluþturulan bileþenler için arayüz kayna-ðýný serbest býrakýr .
procedure FreeNotification(AComponent: TComponent);
Freeonrelease bileþence iþlenen
arabirim serbest býrakýldýðýnda çaðrýlýr. Freeonrelease , dahili olarak
kullanýlýr ve uygun arayüz yöntemi çaðrýlýr.Freeonrelease' i doðrudan çaðýrmak
gerekli deðildir.
71)
GETPARENTCOMPONENT
Getparentcomponent , TComponent için
boþ (null) döndürür .
function GetParentComponent: TComponent; dynamic;
GetparentComponent yöntemi TComponent' de, delphi akýþ sistemi için
uygunluk amacýyla tanýtýldý. Torun sýnýflar , kendi ata sýnýflarýný
döndürürler.
72)
HASPARENT
Hasparent , TComponent için False döndürür .
function HasParent: Boolean; dynamic;
True deðeri dönerse bundan mesul olan
bir obje var demektir. Hasparent'dan true döndüren herhangi bir çocuk bileþeni
, GetParentComponent ve SetParentComponent yöntemleri þimdi ayný zamanda
uygulamalýdýr.
73)
INSERTCOMPONENT
Bileþeni , Acomponent parametresinde
geçen bileþenin sahibi olarak kurar.
procedure InsertComponent(AComponent: TComponent);
InsertComponent , bileþenin dizi
özelliðinin sonuna bileþen ekler. Sokulan parça , isme sahip olmamalý veya isim
, bileþen listesinde bütün diðerleri ara-sýnda tek olmalýdýr . Ana bileþen ,
imha edildiðinde , acomponent , ayný za-manda imha edilir .
Delphi Form tasarýmcýsýnda görsel biçimde iþlenen bileþenler otomatik ek-lenir
ve kaldýrýlacaklar otomatik olarak kaldýrýlýrlar. Baþka bileþen sahibinin
bileþen listesine bileþenleri el ile eklediðinde InsertComponent'i kullanýn .
74)
REMOVECOMPONENT
RemoveComponent , bileþenin bileþen
listesinden Acomponent parametresinde belirtilen bileþeni çýkarýr.
procedure RemoveComponent(AComponent: TComponent);
Delphi Form tasarýmcýsýnda görsel
biçimde iþlenen bileþenler otomatik olarak kaldýrýlýrlar. Bileþeni el ile
kaldýracaðýnda RemoveComponent' i kullanýn. ComponentCount, Components,
RemoveComponent, InsertComponent 'a bir örnek aþaðýda verilmiþtir. Bu parça form
üzerindeki görsel olmayan bileþenleri ayrý veri modüllerine ayýrýr. Çýkarýlan
bileþenler sondan itibaren çýkarýlýr. Bu kod formu veya veri modülünü diske
görsel olmayan bileþen eklendikten sonra saklanmaz
var
I: Integer;
Temp: TComponent;
begin
for I := ComponentCount - 1 downto 0 do
begin
Temp := Components[I];
if not (Temp is TControl) then
begin
RemoveComponent(Temp);
DataModule2.InsertComponent(Temp);
end;
end;
end;
75)
SAFECALLEXCEPTÝON
SafeCallException OLE istisnalarýný
desteklemek için kullanýlan bir hata tutma metodudur.
function SafeCallException(ExceptObject: TObject; ExceptAddr:
Pointer): Integer; override
Safecallexception , ole kural dýþý durum tutma desteði için kullanýlýr .Com ve
OLE arayüzlerini bu uygulayan sýnýflar , ortaya çýkabilecek diðer hatalarý
tutmak için bu yöntemi kullanmalýlar. Delphi'de Com ve OLE sýnýflarý ,
SafeCallException'a engel olurlar. Eðer varsa , TComponent , bileþeni
tarafýndan desteklenilen arayüz için bu yöntemi iþletilmesi için çaðýrýr. Eðer
bileþen , ara yüzleri desteklemezse , bu yöntem , E_UNEXPECTED döndüren miras
yöntemini çaðýrýr. Bu , herhangi bir ara birimleri desteklemeyen sýnýflar için
uygun olan varsayýlan dönüþ deðerdir .
TPERSISTENT den devralýnan metotlar
76)
ASSIGN
Assign , bir nesneyi diðer nesneye , o
nesnenin içindekilerlerini yüklemek suretiyle kopyalar.
procedure Assign(Source: TPersistent);
Az miktardaki Delphi sýnýflarý farklý
tiplerdeki nesnelere atama yapmaya izin verir. Diðer durumlarda eðer iki nesne
Tpersistent'in torunuysa fakat ayný tipte deðilseler Assign' a yapýlan çaðrý
EconvertError hatasýný verir.Standard Assign çaðrý þekli Hedef.Assign ( kaynak
) dýr ve bu hedef nesneye kaynak nesnenin içeriðini kendisine kopyalamasýný
söyler. Genelde, hedef: = kaynak , deyimi Hedef. Assign ( kaynak ) 'a eþit
deðildir.
Hedef: = kaynak deyimi , kaynak nesnesinin aynýsýndan bir hedef nesnesi yapar
oysa Destination.Assign ( kaynak ) , kaynakla belirtilen nesnenin içeriðini
hedefle belirtilen yeni bir nesneye kopyalar.
NOT. Bazý özelliklerin tipleri , ayný zamanda nesnedirler .
Eðer bu özellikler Assign' ý özelliðin
deðerini ayarlamak için kullanýlan yazma metotlarýna sahipseler , bu durumda
Hedef := Kaynak" deyimi "Hedef.Assign (Kaynak)" deyimiyle ayný
olacaktýr. Deðiþim Assign ve AssignTo metotlarýnýn ikisinde de olacaktýr. Fark
kimin atama iþlemi için çalýþtýðýdýr.Ayný zamanda kaynak , boþ da olabilir .
77)
GETNAMEPATH
Getnamepath , Object Inspector
.tarafýndan kullanýlan karakter dizisi döndürür .
function GetNamePath: string; dynamic;
GetNamePath , sadece dahili kullaným
içindir . Biçimlenen nesnenin ismi için Object Inspector da gösterilecek metne
karar vermek amacýyla kullanýlýr. GetNamePath , TPersistent 'ta tanýtýlýr bu
yüzden toplamalar gibi torunlar Objece Inspector'da görünebilirler.
NOT: Doðrudan GetNamePath' i çaðýrmayýn.Bileþenler için bu bileþen ismidir.
TCollectionItem nesneleri için bu ev sahibi bileþeninin ismidir , özelliðin
ismidir,parantezlerle çevrilen toplamanýn içindeki dizindir.
TOBJECT' den devralýnan Metotlar
78)
CLASSINFO
ClassInfo nesne tipi için çalýþma aný
tip bilgisi tablosu ( RTTI ) için bir pointer döndürür.
class function ClassInfo: Pointer;
Nesne tipi hakkýnda bilgiyi içeren
RTTI tablosuna ve onun ata tipi ve yayýn-lanmýþ özelliklerine eriþmek için
ClassInfo'yu kullanýn. RTTI , Delphi ortamýnda dahili olarak çokça kullanýlýr.
Classinfo , uygulamada nadiren doðrudan çaðýrýlýr. TObject özelikle RTTI
bilgisine eriþmek amacýna yönelik tasarlanan diðer metotlarý da destekler.
79)
CLASSNAME
Classname , deðiþkenin tipinden daha
ziyade , deðiþken tarafýndan referans edilen nesne örneðinin güncel tipinin
ismini içeren bir karakter dizgi döndürür.
class function ClassName: ShortString;
Baþka yordama parametre olarak
dizginin geçtiði gibi , dizgi formatýndaki nesnenin gerçek tipini bulmak
amacýyla ClassName' i kullanýn. Örneðin , ata tipinin deðiþkeni , herhangi bir
torun tipin örneðine baþvurabilir. Bu durumda , ClassName , tanýmlý deðiþkenin tipini
kapsayan dizginden daha ziyade , nesnenin güncel tipini gösteren dizgi
döndürür. Classname , nesne karþýtý modülleri hakkýnda bilgi saðlar .Bu yüzden
Ýstisna -kullanma için özellikle yararlýdýr . Kýsmi nesne üzerindeki istisna
-kullanma hatalarýný rapor ederken, ClassName sýnýflarýn karakter
karþýlaþtýrmasýný yapan deyimce kullanýlýr.
80)
CLASSNAMEIS
ClassNameIs , nesnenin özel bir tipten
olup olmadýðýný belirler .
class function ClassNameIs(const Name: string): Boolean;
ClassNameIs 'i bir nesnenin nesne geçit modüllerini veya DLL' leri sorgula-mak
için veya nesne tipine dayanan dururmsal kodlar yazarken kulla-nýn.Eðer Name
parametresinde geçen dizgi , sýnýf ismine eþitse ClassNameIs , true döndürür .
Aksi halde , false döndürür
81)
CLASSPARENT
ClassParent , sýnýfýn yakýn (þimdiki)
atasýnýn tipini döndürür.
class
function ClassParent: TClass;
Classparent , TOobject tipi için boþ
döndürür: çünkü TObject' in atasý yoktur ClassParent Delphi' ce dahili olarak
is ve as operatörlerince ve InheritsFrom metodunca RTTI bilgisine eriþmek
amacýyla kullanýlýr. Sýnýf yöntemi olduðundan , herhangi bir sýnýf referansýnýn
tipine karar vermek için de kullanýlabilir .
NOT: Uygulamalar direkt olarak bunu çaðýrmamalýdýr. Bunun yerine is
ve as
operatörlerini kullanýn.
ClassType, ClassParent Örnekleri
Bu örnek bir bileþenin ClassType ve ClassParent özelliklerini kullanarak
bileþenin atasýnýn elde edildiðini gösterir. Form üzerinde bir düðme, bir liste
kutusu kullanýr. Kullanýcý düðmeyi týkladýðýnda düðmenin sýnýfýnýn ve onun
ebeveyn sýnýflarýnýn ismi liste kutusuna eklenir.
procedure TForm1.Button1Click(Sender: TObject);
var
ClassRef: TClass;
begin
ListBox1.Clear;
ClassRef := Sender.ClassType;
while ClassRef <> nil do
begin
ListBox1.Items.Add(ClassRef.ClassName);
ClassRef := ClassRef.ClassParent;
end;
end;
Liste kutusu kullanýcý düðmeyi týkladýðýnda þunlarý içerir.
• TButton
• TButtonControl
• TWinControl
• TControl
• TComponent
• TPersistent
• TObject
82)
CLASSTYPE
Classtype , nesne örneðinin yürütme
aný tip bilgisi için bir pointer döndürür .
Function ClassType: TClass;
ClassType dinamik olarak, nesnenin
gerçek tipin belirler. ClassType Delphide is ve as operatörlerince dahili
olarak kullanýlýr . Classtype' ý doðrudan çaðýrmayýn.
NOT: Uygulamalarda bunu kullanmayýn. Yerine is ve as operatörlerini kullanýn.
83)
CLEANUPINSTANCE
CleanUpInstance uzun dizgiler ,
deðiþkenler ve arayüz deðiþkenlerinde bir sýnýf dahilinde sonlandýrmayý
gerçekleþtirir .
procedure CleanupInstance;
Doðrudan CleanUpInstance' ý
çaðýrmayýn.Free çaðýrýldýðýnda, CleanUpInstance otomatik olarak çaðýrýlýr
.CleanUpInstance, bütün uzun dizgileri ve deðiþkenleri serbest býrakýr.Uzun
dizileri boþa ve deðiþkenleri Unassigned' a atar.
84)
DEFAULTHANDLER
DefaultHandler , ona geçilen mesaj
kaydýný iþlemek için arayüz ile tanýþtýrýr .
procedure DefaultHandler(var Message); virtual;
Dispatch tarafýndan , kýsmi mesaj için
yöntem bulamadýðýnda bu metot çaðýrýlýr. DefaultHandler , nesnenin özel
denetimcilere sahip olmadýðý bütün bildiriler için mesaj yöneticisi saðlar .
Bildirileri iþleyen TObject' in torun sýnýflarý , genellikle iþledikleri
bildirilerin tipine göre DefaultHandler yöntemini tanýmlarlar.Örneðin ,
TWinControl , DefWindowProc' u çaðýrmak için DefaultHandler' a baský yapar.
85)
DISPATCH
Mesaj parametresinin içeriðine dayanan
nesne için ,mesaj yönetme metodu-nu gönderir.
procedure Dispatch (var Message);
Dispatch, bir mesajýn ,nesne için
tanýmlanan mesaj yöneticisi listesinde olup olmadýðýný belirler. Eðer nesne
mesajý kullanmazsa Dispatch ata tipinin mesaj yönetim listesini inceler.
Atalarýný DefaultHandler 'ý çaðýrdýðý durumlarda hem atalarý bitene hem de özel
yöneticiler bulana kadar kontrol etmeye devam eder.
Mesaj parametresi , Dispatch için
tipsizdir. Ne kadar verinin her çeþidi , Dispatch' e geçilebildiði halde ,
TMessage gibi veya özel mesaj kayýt tipi gibi mesaj kaydýný kullanýn. Mesajýn
ilk iki baytý mesaj ID' yi içerir ve hangi mesaj yöneticisinin mesajý
kullandýðýný belirtir.
86)
FIELDADDRESS
FieldAddress , yayýnlanmýþ nesne
alanýnýn adresini döndürür.
function FieldAddress(const Name: ShortString): Pointer;
FieldAddress Delphi akýþ sistemini
tarafýndan dahili kullanýlýr. Eðer varsa FieldAddress, alana pointer döndürür.
Eðer nesne o isimde yayýmlanmýþ alana sahip deðilse FieldAddress boþ (nil)
döndürür. Kullanýcýlar , FieldAddress yerine özellikler kullanarak alanlara
eriþmeliler ve alanlar üzerinde iþlem yapmalýlar.
87)
FREE
Free , gerekliyse nesneyi yok eder ve
onun için ayrýlan belleði serbest býra-kýr.
Procedure free ;
Free' yi , nesneyi yok etmek için
kullanýn. Free nesne durumu boþ deðilse otomatik olarak Destroy' u çaðýrýr.
88)
FREEINSTANCE
FreeInstance , önceki NewInstance
metodunu çaðýrmak yoluyla ayrýlan hafýzayý serbest býrakýr. .
procedure FreeInstance; virtual;
FreeInstance' ý direk çaðýrmayýn. Gerçi
NewInstance ile bellekte ayrýlan yeri bununla boþaltmak gerekiyor ama yinede
direk olarak kullanmamak gerekir. Newýnstance olduðu gibi , FreeInstance ,
nesne belleðini serbest býrakmak için InstanceSize' dan geri döndürülen deðeri
kullanýr .
89)
GETINTERFACE
GetInterface , verilen tanýmlayýcýyla
tanýmlanýlan arayüzü getirir.
function GetInterface(const IID: TGUID; out Obj): Boolean;
GetInterface dahili olarak as
operatörünce nesnece yürütülen arayüzü çaðýrmak için kullanýlýr. Getýnterface ,
TInterfacedObject'ce QueryInterface yöntemini uygulamak için kullanýlýr .
Arayüz tip ismi , IUnknown da olduðu gibi , IID parametresinden saðlanýlabilir.
Bu da compiler arayüzü iliþkili GUID ile yer deðiþtirmesinden itibaren olur.
Nesne , arayüzü destekleyemediðinde VCL nesne örneðinden arayüzü elde etmek
için GetInterface' i kullanýn ama kural dýþý durum(istisna) , hata durumunda
çýkmamalý.
GetInterface dýþ parametre olan Obj de
olduðu gibi IID parametresince ta-nýmlanan arayüzü bir pointer olarak döndürür.
,Eðer arayüz , nesnen tarafýndan desteklenilirse , GetInterface , true döndürür
Eðer arayüz , nesne tarafýndan desteklenmezse , GetInterface , false döndürür ve
obj parametresi , boþdur.
90)
GETINTERFACEENTRY
GetInterfaceEntry , bir sýnýfta
uygulanan özel arayüz için giriþ döndürür
type
PInterfaceEntry = ^TInterfaceEntry;
TInterfaceEntry = record
IID: TGUID;
VTable: Pointer;
IOffset: Integer;
end;
class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry;
GetInterfaceEntry sýnýfta , IID parametresi tarafýndan belirtilen arayüz için
giriþ döndürür GetInterfaceEntry , dahili olarak kullanýlýr . Nadiren doðrudan
çaðýrýlýr .
NOT: Bu metodun bir faydasý da OLE' nin çift gönderme arayüzüne çaðrýlarý nasýl
otomatik olarak gönderdiðini tarif etmesidir.
91)
GETINTERFACE TABLE
GetInterfaceTable , verilen sýnýf tarafýndan uygulanýlan ara yüzlerin hepsini
kapsayan yapýya pointer döndürür
type
PInterfaceTable = ^TInterfaceTable;
TInterfaceTable = record
EntryCount: Integer;
Entries: array[0..9999] of TInterfaceEntry;
end;
class function GetInterfaceTable: PInterfaceTable;
GetInterfaceTable, sýnýf için
TInterfaceEntry' ler döndürür . Bu liste yalnýzca bu sýnýfça iþletilen ara
yüzleri içerir ,bunlarýn atalarýný içermez. Ata listesi bul-mak için ,
GetParentClass' ý çaðýr ve sonra onun GetInterfaceTable yöntemini çaðýr . Özel
ara yüze giriþ bulmak için , bunun yerine GetInterfaceEntry yöntemini kullanýn
.
92)
INHERITSFROM
InheritsFrom , sýnýf yöntemidir , iki
nesne tipi arasýndaki iliþkiye karar ver-mekte kullanýlýr .
class function InheritsFrom(AClass: TClass): Boolean;
Eðer belirli bir sýnýf tipi , nesnenin
atasý olarak belirleyecekseniz InherýtsFrom 'u kullanýn.InheritsFrom Aclass
parametresiyle belirtilen nesnenin tipi nesne tipinin atasýysa veya nesne
tipinin kendisiyse True döndürür. Yoksa False döndürür.
NOT: is
ve as
operatörleri InheritsFrom' u iþlemlerinde kullanýrlar.Ancak , is operatörü , sadece
örneðin kalýtsal iliþkisine karar verebilir Sýnýf yöntemi olarak InheritsFrom ,
sýnýf kaynaklarýnýn iliþkisine karar verebilir.
93)
INITINSTANCE
InitInstance yeni yerleþtirilen nesne
örneðini 0 la baþlatýr. Ve örneðin sanal metot tablo pointer' ýný baþlatýr.
class procedure InitInstance(Instance: Pointer): TObject;
InýtInstance' ý doðrudan çaðýrmak için
hiç sebep yoktur. Nesne , yaratýldýðýnda InitInstance, NewInstance tarafýndan
otomatik olarak çaðýrýlýr . NewInstance' a engel olurken InitInstance' ý son
ifade olarak çaðýrmayý unutmayýn. InýtInstance , sanal deðildir bundan dolayý
ona engel olamazsýnýz. Yapýdaki nesne için herhangi bir veriyi baþlatýp, Ortak
bellek havuzundan sýnýf tipinin bütün örneklerini tahsis etmek gibi , özel
bellek atama gereksinimleri için sadece NewInstance' ý kullanýn.
94)
INSTANCESIZE
InstanceSize , nesne tipinin her bir
örneðinin boyutlarýný bayt olarak döndü-rür .
class function InstanceSize: Longint;
InstanceSize' ý sýnýflarýn örnek
verisi için ne kadar bellek baytýna ihtiyaç olduðuna karar vermek için
kullanýn. Delphi , belleði tahsis eden ve serbest býrakan yöntemler için dahili
olarak InstanceSize'ý kullanýr. InstanceSize , sanal yöntem deðildir, bundan
dolayý iptal edilemez. InýtInstance , sadece NewInstance' ýn özel versiyon
uygulamalarýnda çaðrýlmalýdýr.
95)
METHODADDRESS
Yayýnlanmýþ yöntemin adresi döndürür .
class function MethodAddress(const Name: ShortString): Pointer;
Methodaddress , duraksýz iþlem sistemi
tarafýndan Delhi' de dahili olarak kullanýlýr . Methodaddress bir metot ismini
dönüþtürmek için Name ile belirtilenden Akýþtan okurken metot adresini içeren
pointer' a yönlendirmek için kullanýlýr. Methodaddress' i direkt çaðýrmaya
gerek yoktur. Eðer Name nesne için yayýnlamýþ metot belirtmezse Methodaddress
boþ döndürür.
96)
METHODNAME
Methodname , adreste yerleþtirilen
yöntemin ismini kapsayan dizgi döndürür.
class function MethodName(Address: Pointer): ShortString;
Methodname , duraksýz iþlem sisteminin
tarafýndan Delhi'de dahili olarak kullanýlýr Akýþa olay özellikleri yazdýðýnda
methodname , yöntem ismini kapsayan dizgiye yöntem adresini kapsayan göstergeyi
dönüþtürmek için kullanýlýr . Methodaddress' in aslýnda tamamlayýcýsýdýr.
Methodname' i doðrudan çaðýrmaya hiç gerek yoktur . Eðer adres , nesnenin
yayýnlanmýþ yöntemine iþaret etmezse , methodname , boþ dizgi döndürür .
97)
NEWINSTANCE
NewInstance nesne tipinin her örneði
için hafýzada yer ayýrýr ve bu yeni ör-nek için bir pointer döndürür.
class function NewInstance: TObject; virtual;
Tüm yapýlar NewInstance' ý otomatik
olarak çaðýrýrlar. NewInstance InstanceSize' ý heap hafýzada ne kadar yer
ayrýlacaðýný belirlemek için kullanýr. NewInstance' ý direk olarak çaðýrmayýn.
Torun sýnýf NewInstance' ý bir sýnýfýn kendi için baþka hafýza ayýrma yöntemi
kullanmasýný engelleyebilirler. Bu iþlem FreeInstance ile hafýzayý boþaltmayý
da engeller. Örneðin ayný tipten birçok nesnenin ayný anda hafýzada bulunmasý
gerekiyorsa ve bunlar için yer ayrýlacaksa bütün hepsi için hafýzadan büyük bir
blok ayrýlýr ve her örnek için o parçadan büyük bloklarý NewInstance' ýn
kullanmasýna engel olunur. NewInstance' a engel olurken InýtInstance' ý çaðýrýn
ama son satýrda deðil.
NOT :Varsayýlan olarak NewInstance InitInstance' ý çaðýrýr.
BÖLÜM - 4
4- SONUÇ VE ÖNERÝLER
Bütün bu bilgilerin ýþýðýnda þunlarý
söyleyebiliriz Yapýsal olarak veri tabanýna dayalý bir uygulama yazabilmek için
belirttiðimiz þekilde SQL 'e tamamen hakim olmamýz gerekiyor. Bunlarýn da
ötesinde deðiþik amaçlar için geliþtirilen sorgu dillerini ve veri tabanlarýný
da kullanmamýz gerekebilir.
Delphi' de TQuery
nesnesinin çok geniþ özelliklere ve metotlara sahip olduðunu gördük. Umarým bu
dokuman sayesinde profesyonel yapýlarda veri tabaný uygulamasý yazmak konusunda
kendinize olan güveniniz artmýþtýr.
Bu konuda araþtýrma yapmak isteyen
kiþilere SQL ile ilþkili Delphi' nin diðer öðelerini
(UpdateSql,TStoredProc,TSession vb..) ayný þekilde inceleyip bunlar arasýnda
baðlantý kurmalarýný tavsiye ederim. Yalnýz bu konuda çalýþmak isteyen
araþtýrmacýlarýn çok sabýrlý olmasý gerekir. Bu konuda tam hakimiyet saðlamak
çok uzun ve yorucu bir çalýþma döneminden sonra gerçekleþebilir.
Bu makale çeþitli internet sitelerinden derlenmiþ makale ve
yazýlarýn sadeleþtirilip derlenerek güncellenmesiyle yazýlmýþtýr. Konuya
iliþkin soru ve sorunlarýnýzý forumda yanýtlamaktan mutluluk duyarým. Hepinize
çalýþmalarýnýzda baþarýlar dilerim.
| |
yorumlar okumak veya yorum yazmak iin tklayn..