You are not logged in.

VATAN İÇİN YAŞAYIP, VATAN İÇİN ÖLDÜLER ONLAR TOPRAĞA DEĞİL, KALPLERİMİZE GÖMÜLDÜLER..

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

1

Saturday, April 22nd 2006, 12:21am

WebMaster Otağı(Dökümanlar,programlar)

asp ve ado birlikteliği
ASP sayfalarında ADO nesnelerini kullanmayı açıklamak.

I. ADO NESNELERİ

Microsoft ActiveX Data Objects (ADO), Visual Basic ya da bir ASP kodu aracılığıyla veritabanlarına bağlantı kurmak ve veriler üzerinde işlem yapmak için geliştirilmiş bir arabirimdir.



ASP uygulamalarının çoğunun amacı veritabanlarına erişmek ya da veritabanı üzerinde işlem yapmaktır. ADO, bir veri sağlayıcı (data provider-OLE DB) aracılığıyla yerel ya da uzak veritabanlarına erişmeyi sağlayan bir veri erişim yöntemidir. ADO hiyerarşik olmayan ve bağımsız olarak kullanılan nesneleriyle verilere kolayca ulaşmayı sağlar. ADO'nun bellek gereksinimi daha azdır. Hızlı bir biçimde çalışarak veritabanı uygulamalarının daha etkin bir biçimde veritabanlarına erişim yapmasına olanak sağlar. DAO ve RDO veri erişim yöntemlerinin yerine geçen gelişmiş bir teknoloji olan ADO, daha kolay ve anlaşılabilir nesnelerle veritabanı işlemlerini sadeleştirir:



A. ADO'YU YÜKLEMEK

ADO, tek başına satılan ve yüklenen bir yardımcı program değildir. ADO, Microsoft Data Access Components (MDAC) adı verilen program grubunun bir parçasıdır. Bilgisayara IIS gibi Web server yazılımı yüklendiğinde ADO'da yüklenmiş olur. Bunun dışında veritabanı uygulamaları ve programlama dillerinin yüklenmesi ADO'yu yükler ya da var olan bileşenleri güncelleştirir.



İPUCU: MDAC'ın en güncel şeklini indirmek için www.microsoft.com/data adresinden yararlanabilir.



B. ADO NESNE MODELİ

ADO veri erişim sistemi oldukça basit bir nesne modeline sahiptir. Bu modelde birçok nesne seçimli olarak (birlikte) ya da bağımsız olarak kullanılabilir.



ADO nesneleri RDO nesnelerine benzer ancak oldukça farklıdır. Yalnızca nesne olarak üç nesneye sahip olan nesne modelinde tam olarak yedi nesne ve collection (koleksiyon, topluluk) vardır.



En üst düzey ADO nesnesi Connection'dır. Bu nesne veri kaynağıyla ilgili her türlü iletişimi yerine getirir. Bağlantı nesnesi olan Connection, diğer nesnelerde de olduğu gibi önce tanımlanır ve ardından açılarak kullanılır.



Tablo: ADO modelinde yer alan nesneler

Nesne Amacı

Command Bir veri kaynağı üzerinde bir query ya da deyimi işletir.

Connection Bir veri kaynağına doğrudan bağlantı yaratır.

Error Veri kaynağından bir hatayı döndürür.

Field Bir kayıt içindeki bir alan (kolon).

Parameter Bir komut için parametre tutar.

Recordset Bir komut tarafından üretilen (dönen) verileri içerir.



C. ADO SABİTLERİ

ADO nesne modelindeki nesneleri kullanmak için bazı sabitlerin kullanılması gerekir. Bu sabitler her seferinde tanımlanmaktansa kodun içinde tanımlanarak var olan bir dosyadan yüklenir.



Bu sabitler connection, recordset, adOpenDynamic gibi ADO nesnelerinin ve bileşenlerinin tanımladır.

NOT: Bu dokümanlar Faruk Çubukçu tarafından hazırlanmıştır. Burada adı geçen ticari ünvanlar ve markalar bilgi amaçlı kullanılmışlardır ve kendi imtiyazlarına sahiptirler. Bu dokümanlar ticari amaçlı olarak kullanılmaz. Daha fazla bilgi için www.farukcubukcu.com adresine bakınız.



ASP kodlarında yer alan ADO sabitleri, ADOvbs.inc gibi bir dosyanın ASP sayfalarına eklenmesiyle sağlanır.



<!--#include file="ADOvbs.inc"-->



Örnek: ASP'de ADO sabitlerinin yüklenmesi.



<% @Language = VBScript Codepage= 1254 %>

<HTML>

<!-- Kirtasiye Istek formu doldurmak ve veritabanina yazmak-->



<HEAD>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

<!-- yukaridaki iki satir türkçe çikti saglamak için -->



<TITLE> Kirtasiye istek Formu </TITLE>

</HEAD>



<BODY>

<!--#include file="ADOvbs.inc"-->

<%

Dim varMusteriKodu

varMusteriKodu=Request.Form("txtkodu")



Dim Rs

StrSql = "SELECT * FROM MUSTERI"

StrProvider="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\musteriler.mdb"

Set Rs = Server.CreateObject("ADODB.recordset")

Rs.Open StrSql, StrProvider, adOpenDynamic, adLockOptimistic



Rs.Find "kodu = " & varMusteriKodu

If Rs.EOF Then

Response.Write "Girilen kod bulunamadi"

Else

Rs.Delete adAffectCurrent

Response.Write "kayit silinmistir."

End If



Rs.Close

Set Rs=Nothing

%>

</BODY>

</HTML>





D. VERİTABANI BAĞLANTILARI İÇİN HAZIRLIK YAPMAK

ASP uygulamalarında genellikle bir veritabanı dosyasına erişim yapılır. Bu veritabanı dosyası Microsoft Access ya da Microsoft SQL Server üzerinde olabilir. Veritabanlarına bağlanmak için değişik yöntemler vardır. Bunların başında DSN tanımı kullanmak, veritabanının kendi sürücüsünü kullanmak ya da Native OLEDB denen teknik gelir.



DSN Tanımı Yapmak

DSN tanımı ODBC veritabanları için yapılır. ODBC veritabanlarına erişim için bir ODBC DSN (Data Source Name) tanımlanır.



Bir DSN bilgisi şunları içerir:



-DSN adı.

-Başvurduğu (işaret ettiği) dosya.

-Veritabanına erişim için kullanıcı adı ve parola.

-Özel veritabanlarına erişmek için diğer bilgiler.



1. WİNDOWS İŞLETİM SİSTEMLERİNDE ODBC-DSN TANIMI

Visual Basic ile bir veri erişim yöntemi ile ODBC üzerinden bir veritabanına bağlantı kurulması için gerekli DSN (Data Source Name) tanımının yapılması gerekir.



Bu işlem için:

Windows işletim sistemlerinde Control Panel'de yer alan ODBC simgesi kullanılır:



Bu ekranda Add düğmesine tıklanarak yeni bir veritabanı kaynağı seçilir. Ardından hangi tür bir veritabanı için bağlantı yapılacağı ve veritabanının seçimi yapılır.



SQL Server tanımlanmasında Server kutusunda network üzerindeki SQL server seçilir. Name kutusuna ise DSN tanımına bir ad verilir. Bu genellikle erişilecek veritabanın adı ya da konuyla ilgili bir ad olabilir. Örneğin Musteri veritabanına bağlanılacaksa Musteri adlı bir DSN adı verilebilir.



Microsoft Access için ise Select düğmesine tıklanarak veritabanı dosyası seçilir. Örneğin musteri.mdb gibi.



DSN İle Microsoft Access'e ya da SQL Server'a Erişmek:



Set Rs=Server.CreateObject("ADODB.Recordset")

Rs.Open "kirtasiye", "DSN=sirket"



Veritabanı Sürücüsüyle Microsoft Access'e Erişmek:



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")

Con.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\data\sirket.mdb"

Rs.Open "SELECT * FROM musteriler", Con



Native OLEDB İle Microsoft Access'e Erişmek:



OLE DB'nin kullanıldığı erişimlerde DSN gibi, istemci bilgisayarda bir düzenleme yapmaya gerek yok. Microsoft veri erişim bileşenlerinin bulunması yeterlidir.



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")

Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\sirket.mdb"

Rs.Open "SELECT * FROM musteriler", Con



Native OLEDB İle Microsoft SQL Server'a Erişmek:



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")

con.Open "Provider=SQLOLEDB;Data Source=LAB1-2;Database=SiparisYonetim;User Id=USER1;Password=USER1;"

StrSQL = "Select * FROM SIPARIS"

Rs.Open StrSQL, Con



Örnekteki tanımlamalar:



Bağlanılan SQL Server: LAB1-2

Veritabanı: siparisyonetim

Kullanıcı adı: USER1

Parolası: USER1



İPUCU: Yukarıdaki tanımlamalar sizin çalışmanıza göre farklı olabilir. Bir de bu bağlantılar verileri okumak içindir. Verileri yazmak için "adOpenDynamic, adLockPessimistic" imleç ve kilitleme tanımlarının da yapılması gerekir.



E. DATA PROVİDER’I BELİRTMEK

Bağlantıda OLE DB kullanılacaksa, Connection nesnesi başlatıldığında bir OLE DB sağlayıcısının (data provider) belirtilmesi gerekir. Bunu yapmak için Provider özelliği kullanılır.



bağlantı.Provider = "SQLOLEDB"



Tanımlaması SQL SERVER için bir bağlantının tanımlanmasını sağlar.



Tablo : Veri Sağlayıcılar.

OLE DB Provider Açıklama

SQLOLEDB SQL Server için OLE DB sağlayıcısı

MSDASQL ODBC için OLE DB sağlayıcısı

Microsoft.Jet.OLEDB.3.51 Jet (Access) için OLE DB sağlayıcısı

Microsoft.Jet.OLEDB.4.0 Jet (Access) için OLE DB sağlayıcısı

MSIDXS Index Server için OLE DB sağlayıcısı

ADSDSOObject Active Directory Service için OLE DB sağlayıcısı

MSDAORA Oracle için OLE DB sağlayıcısı



Örnek bağlantılar:



Access'e erişmek:



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")



Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\sirket.mdb"

Rs.Open "kirtasiye", Con



Access'e yazmak:



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")



Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\sirket.mdb"

Rs.Open "kirtasiye", Con, adOpenKeyset, adLockOptimistic





SQL Server'a erişmek:



con.Open "Provider=SQLOLEDB;Data Source=LAB1-2;Database=SiparisYonetim;User Id=sa;Password=;"

StrSQL = "Select * FROM SIPARIS"

Rs.Open StrSQL, Con



SQL Server'a yazmak:



con.Open "Provider=SQLOLEDB;Data Source=LAB1-2;Database=SiparisYonetim;User Id=sa;Password=;"

StrSQL = "Select * FROM SIPARIS"

Rs.Open StrSQL, Con, adOpenKeyset, adLockOptimistic



Örnekteki tanımlamalar:



Bağlanılan SQL Server: LAB1-2

Veritabanı: siparisyonetim

Kullanıcı adı: sa

Parola: yok



Örnek : Veritabanındaki Verileri Listelemek

Aşağıdaki örnekte bir Access veritabanındaki veriler tablo halinde listelenmektedir:



<% @Language = VBScript Codepage= 1254 %>

<HTML>

<!-- tablodan bütün kayitlari okumak ve tablo yaparak ekrana getirmek-->

<HEAD>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

<!-- yukaridaki iki satir türkçe çikti saglamak için -->

<TITLE> Listeleme </TITLE>

</HEAD>

<H1> MALZEME DURUM LISTESI </H1>

<BR>

<BODY>

<%

Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")

Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\malzemeyonetim.mdb"

Rs.Open "SELECT * FROM MALZEME", Con



Response.Write "<TABLE BORDER= '1'>"

Response.Write "<TR> <TD>" & "<B>" & "MKODU" & "</B>" & "</TD> <TD>" & "MADI" & "</TD> <TD>" & "MGRUBU" & "</TD> </TR>"



Do While Not Rs.Eof

Response.Write "<TR> <TD>" & Rs("MKODU") & "</TD> <TD>" & Rs("MADI") & "</TD> <TD>" & Rs("MGRUBU") & "</TD> </TR>"

Rs.MoveNext

Loop

Response.Write "</TABLE>"

Rs.Close

%>

</BODY>

</HTML>





II. UYGULAMALAR

1. Microsoft Access kullanarak bir şirket veritabanı yaratın. Bu veritabanında bir müşteri tablosu yaratın. Alanları: kodu, adisoyadi, adresi, ili, borcu vb. olsun.



2. Müşterileri alfabetik olarak listeleyen bir sayfa hazırlayın.



İpucu:



Set Rs = Server.CreateObject("ADODB.Recordset")

StrSQL ="SELECT * FROM MUSTERI ORDER BY adisoyadi"

Rs.Open StrSQL, "DSN=musteriler"

...





3. İstenilen müşterilerin siparişlerini listeleyen bir form (HTML formu dosyası) ve karşılığını (Reponse dosyası) hazırlayın. Müşteri kodu bir açılan kutudan seçilsin. Ardından düğmeye basılarak karşılık sayfasına geçilerek orada tablo olarak müşterinin siparişleri listelensin.



VarMusteri=Request.Form("txtMusterisec")

Set Rs = Server.CreateObject("ADODB.Recordset")

StrSQL ="SELECT * FROM SIPARIS WHERE kodu = " & VarMusteri & ";"

Rs.Open StrSQL, "DSN=musteriler"

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

2

Saturday, April 22nd 2006, 12:22am

RE: WebMaster Otağı(Dökümanlar,programlar)

Visual Basic'de RGB Fonksiyonunun Kullanımı

Visual Basic'de RGB Fonksiyonunun Kullanımı
Visual Basic'de RGB fonksiyonu Red(Kırmızı),Green(Yeşil), ve Blue(Mavi) Kelimelerinin Kısaltımış halidir.Sizinde anlayacağınız gibi 16Milyon renk Kırmızı,Yeşil ve Mavi'nin karışımından oluşturuluyor.

Visual Basic'de RGB Fonksiyonunun Kullanımı
Visual Basic'de RGB fonksiyonu Red(Kırmızı),Green(Yeşil), ve Blue(Mavi) Kelimelerinin Kısaltımış halidir.Sizinde anlayacağınız gibi 16Milyon renk Kırmızı,Yeşil ve Mavi'nin karışımından oluşturuluyor.
Herbiri 0 ile 255 arasındaki bir değer alarak toplam değeri 256'ya tamamlanır.
Yani Formulüze edersek;
Red(Kırmızı) 0 + 255 = 256
Green(Yeşil) 0 + 255 = 256
Blue(Mavi) 0 + 255 = 256

Diğer bir deyişle R(256)* G(256)*B(256) = 16777216'dır(Toplam Renk Sayısı)
NOT:Kırmızının toplam değeri ile Yeşil ve Mavinin değerleri çarpma işlemine tabii tutularak
Toplam renk sayısı elde edilmiş oluyor.
Örnek olarak Kullanıcının kırmızı,yeşil,ve mavi renklerinin karışımından oluşacak 16 milyon renk tonundan birini seçmesini ve bu renk tonunu bir metin kutusunun arkaplan rengi olarak kullanmasını sağlayalım.Örnekteki Text1.backcolor değerini Text1.Forecolor olarak değiştirirseniz aynı işlemi bu seferde metin kutusunun yazı rengini değiştirmek için kullanabilirsiniz.

Örnek: Örneğimiz için 1 tane textbox(Text1),3 tanede Dikey Scrollbar yerleştirin.İsimleri Vscroll1, VScroll2 ve Vscroll3 olsun.

Private Sub Form_Load()'Formun Load olayına Eklenecek
Vscroll1.Max = 255'Kırmızı
Vscroll2.Max = 255'Yeşil
Vscroll3.Max = 255'Mavi
End Sub


Private Sub VScroll1_Change()
Text1.BackColor = RGB (VScroll1.Value, VScroll2.Value, VScroll3.Value)
'Text1 metin kutusunun arkaplan renkleri Scrollbarların değerlerine eşitleniyor
'Böylece 3 Scrollbardaki renkkodlarından ortaya çıkan renktonu text1in arkaplanrengine aktarılıyor.
End Sub

Private Sub VScroll2_Change()
Text1.BackColor = RGB (VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub

Private Sub VScroll3_Change()
Text1.BackColor = RGB (VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

3

Saturday, April 22nd 2006, 12:22am

RE: WebMaster Otağı(Dökümanlar,programlar)

Winsock Kullanımı

Winsock Kullanımını Öğrenmek için bir bakın. Client ve Server kodları dahil

Winsock nesnesi sunucu ve istemci şeklinde çalışır hazırlanmış program ya sunucu modunda yada istemci modundadır.
Öncelikle Sunucu kısmını inceleyelim

frmserver adında bir form ekleyelim , form üzerine bir winsock nesnesi ekleyelim ve adını tcpServer olarak değiştirelim,ayrıca ConnectStatus adında bir label ekleyelim , şimdi Formun Load olayına aşağıdaki kodları yazarak Winsock nesnesini bir sunucu olarak konfigüre edelim.


'#################################################
' LocalPort değerini integer olarak belirliyoruz.
' Ve Dinleme Methoduyla çağrı moduna çeviriyoruz.
tcpServer.LocalPort = 1001
tcpServer.Listen
ConnectStatus.Caption = tcpServer.State ' Bu şekilde gelen çağrılara verilen cevapları görebiliriz.
'#################################################

Artık programımız bir Sunucu olarak çalışmaya hazır şimdi gelecek olan isteklere cevap vermesi için Winsock nesnesini düzenlememiz gerekiyor.

Winsock nesnesini çift tıklayıp ConnectionRequest yordamını yaratalım bu yordamın tamamı şu şekilde görünmeli


'#################################################
Private Sub tcpServer_ConnectionRequest (ByVal requestID As Long)
' Öncelikle bağlantının kapalı olduğu kontrol ediliyor, eğer kapalı değil ise
' Yeni bağlantı öncesinde kapatılıyor.

If tcpServer.State <> sckClosed Then tcpServer.Close
' Gelen çağrı kabul ediliyor
tcpServer.Accept requestID
End Sub
'#################################################


Artık sunucumuz gelen bağlantıları kabul edecek durumda şimdi gönderilen bilgileri almasını sağlayalım, Bunun için Winsock nesnesinin DataArrival yordamını kullancağız.


'#################################################
Private Sub tcpServer_DataArrival (ByVal bytesTotal As Long)
' Gelen verileri aktarmak için önce bir değişken tanımlıyoruz değişkenimizin adı Strdata
' StrData değişkeni Clientten gönderilen bilgileri saklamak amacıyla kullanılacak

Dim strData As String ' Değişken String olarak tanımlandı
tcpServer.GetData strData
txtOutput.Text = strData
End Sub
'#################################################



Ve artık sunucu programı verieri almaya hazır gönderilen veriler StrData değişkenine aktarılacak.


Client (İstemci Programı)

Önce frmclient adında bir form oluşturalım bu formun üzerine cmdconnect adında bir button tcpclient adında bir Winsock nesnesi ve bir txtsend adında TextBox koyalım.

Önce bağlanacağımız Sunucunun IP adresini belirtmemiz gerekiyor, bunun için Formun load olayına şu satırları ekliyoruz


tcpclient.RemoteHost = "10.1.0.20" ' Sunucunun IP adresi
tcpclient.RemotePort = 1001 ' Port numarası


şimdi Connect butonuna bastığımızda sunucuya bağlanmasını sağlayacak kodu yazalım


tcpclient.Connect ' Bağlan emri veriliyor


bu şekilde karşıdan onay geldiği anda bağlantı kurulur şimdi verileri göndermek için TXTSend nesnesini düzenleyelim, Textbox nesnesinin Change olayı aşağıdaki gibi olmalı


Private Sub txtSendData_Change()
tcpclient.SendData txtsend.Text
End Sub


Sunucumuzunda gelen verileri kabul etmesi gerekir bu nedenle DataArrival yordamını oluşturmalıyız.


Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
tcpclient.GetData strData
txtoutput.Text = strData ' TxtOutput gelen verileri ekrana yansıtmak için bir textbox nesnesi olsun
End Sub


ve artık hem sunucumuz hem clientımız veri alıp vermeye hazır.

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

4

Saturday, April 22nd 2006, 12:23am

RE: WebMaster Otağı(Dökümanlar,programlar)

Internet Transfer Control Hakkında

Internet Transfer Control İnet Nesnesinin Kullanımı

Inet ( Internet Transfer Control ) Hakkında Bilgiler
* Remote Port
İstemci ile bilgisayarın sunucu bilgisayara bağlantı sırasında kullanacağı port numarasını belirler. Bu bilgi verilmez ise varsayılan değerler işleme konur ve FTP için 21, http için 80 portu kullanılır.


*Protocol
Bağlantı sırasında kullanacağımız protokolü belirler. Bu gerçekten önemlidir. Her protokolün farklı kuralları vardır ve bağlandığımız sunucu ile aynı protokole bağımlı bir şekilde veri alışverişi sağlamazsak sistem zarar görecektir. Bir FTP sunucuya http ile bağlantı kurmaya çalışmamız hem istemci hem de sunucuya hata mesajlarıyla geri dönecektir ve bağlantı kurulamayacaktır. Bu nedenle ulaşmak istediğimiz veriye en uygun sunucuyu seçtikten sonra bu sunucunun kabul ettiği protokole uygun bir şekilde bağlantı isteğinde bulunmalıyız.
Inet nesnesi 3 farklı protokolü taban olarak kabul edebilir: İcUnknown: bilinmeyen; icDefault: varsayılan; icFTP: FTP; icHTTP: http; icHTTPS: HTTPS.


*Request Time Out
Bağlantı isteği gönderildikten sonra istemci, sunucunun bağlantıyı kabul etmsini bekler, bir süre yanıt gelmezse beklemekten vazgeçip bağlantıyı keser. İşte bu süreyi requesttimeout ile belirliyoruz. Requesttimeout değeri saniye cinsinden yazılır ve sınırsız süre verilmek istendiğinde 0 değeri atanır.
Sunucu çok yoğun çalışıyorsa ve isteklere cevap vermede gecikiyorsa zaman aşımı süremizi yüksek tutmamız gerekir. Aksi takdirde henüz sunucuda bize sıra gelmeden bağlantı isteği iptal edilir ve asla bağlantı gerçekleşmez.


*OpenURL
Inet nesnemizin bağlanacağı sunucu ve ulaşacağı dosyayı bu komutla belirleyebiliriz. Bu komut .openURL(“adres”, “veri_tipi”) şeklinde kullanılır. Buradaki veri tipi değeri 0 veya 1 olabilir. Hiçbir değer verilmezse 0 kabul edilir. 0 değeri bize gelen verilerin string formatında olmasını sağlar. 1 değeri ise aynı verileri binary formatta ve byte dizisi halinde getirir. OpenURL komutunun daha gelişmiş olan alternatifleri de vardır.


*StillExecuting
Gelişmiş uygulamalarımızda sıkça kullandığımız komutlardan biri de stillexecuting komutudur. Bu aslında komut değil Boolean bir değerdir. Inet nesnemize herhangi bir komutu verip işlemesini sağladıktan sonra işlemin bitip bitmediğini stillexecuting ile öğrenebiliriz. Inet nesnesi aynı anda birden fazla işlem yapamayacağı için işlem yaptığı sırada başka bir işleme zorlanması hatalara neden olacaktır. Bu gibi durumlarda stillexecuting ile sistemin meşgul olup olmadığını kontrol ederek sıradaki komutları beklemeye alabiliriz. Stillexecuting değerinin True olması sistemin meşgul olduğunu, False olması ise işlemin tamamlandığını belirtir.


*Execute
OpenURL metodu ile aynı işi görmesine rağmen daha gelişmiştir. Sunucu ile sürekli haberleşme sağlar ve sunucu ile dosyalama hizmetlerini başlatma yetkisine sahiptir.
*AccessType
Nesnemizin Internet veya Intranet bağlantısı sırasında kullanacağı bağlantı hizmetlerini belirlemek amacıyla kullanılır. Direkt bağlantı kurulacaksa bu değer boş bırakılabilir. Yine bu değere bağlı olarak Proxy server bağlantısı yapılacağı nesneye bildirilir ve daha sonra Proxy değeri verilerek hedef sunucuya ulaşılır.


*Proxy
Bu değer sadece AccessType değeri 2 olduğunda yani “Proxy kullan” emri verildiğinde devreye girer. IP adresi veya domainname değeri alabilir. Bu kullanılacak olan Proxy server adresidir ve hedef sunucuya ulaşmadan önce bu adrese bakılarak bir proxy’den çıkış yapılır.

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

5

Saturday, April 22nd 2006, 12:25am

RE: WebMaster Otağı(Dökümanlar,programlar)

Component Kullanarak E-mail (+dosya) Göndermek
Aemail.dll ile kolaylıkla mail gönderebiliriz. Öncelikle mail yollayabilmemiz için bilgisayarımızda bir e-mail servera yada pop desteği veren bir e-maila sahip olmamız gerekmektedir.

Aemail.dll ile kolaylıkla mail gönderebiliriz. Öncelikle mail yollayabilmemiz için bilgisayarımızda bir e-mail servera yada pop desteği veren bir e-maila sahip olmamız gerekmektedir.
Fazla uzatmadan gerekli componentler: 11 tane textbox , checkbox(check1), Durum (label) ,buton (command1) ve text başlıkları için label lar.


Public HTA As AEMAILLib.SmtpMail 'mail için

'saat için
Dim lpSystemTime As SYSTEMTIME
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Declare Function SetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) As Long


Dim dak, sa, yil, ay, gun As Byte


Private Sub Yolla()

HTA.Clear
Text11.Text = HTA.ExpirationDate 'son kull tarihi
HTA.AccountName = Text1.Text '"HDE.Software@HoTPoP.com"
HTA.AccountPassword = Text2.Text '"*******"
HTA.HostName = Text3.Text '"smtp.HoTPoP.com"
HTA.FromAddress = Text4.Text '"HDE.Software@HoTPoP.com"
HTA.FromName = Text5.Text '"H.D .E. Spyware"
HTA.AddTo Text6.Text, "" '"hde.contact@gmail.com", ""
HTA.Subject = Text7.Text
HTA.Body = Text9.Text
HTA.BodyType = 1
HTA.AddAttachment Text8.Text '("c:\excel.xls")
HTA.Priority = 1 '1 ile 5 arası
HTA.Send 'Maili Yollar
Durum = "HaTa KoDu: " & HTA.LastError 'Hata

End Sub


Private Sub TgeriAl()

dak = Minute(Time)
sa = Hour(Time)
yil = Year(Date)
ay = Month(Date)
gun = Day(Date)

If sa < 3 Then
lpSystemTime.wHour = sa + 21
lpSystemTime.wDay = gun - 1
Else
lpSystemTime.wHour = sa - 3
lpSystemTime.wDay = gun
End If
lpSystemTime.wMinute = dak
lpSystemTime.wSecond = 0
lpSystemTime.wMilliseconds = 0
lpSystemTime.wMonth = ay
lpSystemTime.wYear = 2004

SetSystemTime lpSystemTime

'yıl 2004 oldu

End Sub
Private Sub TDuzelt()



If sa < 3 Then
lpSystemTime.wHour = sa + 21
lpSystemTime.wDay = gun - 1
Else
lpSystemTime.wHour = sa - 3
lpSystemTime.wDay = gun
End If


lpSystemTime.wMinute = dak
lpSystemTime.wSecond = 55

lpSystemTime.wMonth = ay
lpSystemTime.wYear = yil

SetSystemTime lpSystemTime 'tarih eskiye döndü
End Sub

Private Sub Command1_Click()

If Check1.Value = 1 Then
TgeriAl
Yolla
TDuzelt
Else
Yolla
End If

End Sub

Private Sub Form_Load()

Set HTA = CreateObject("ActivXperts.SmtpMail")
Text10.Text = HTA.ExpirationDate

End Sub


Programda kodlardanda gördüğünüz gibi mail göndermenin dışında birde sistem saati ile oynuyoruz. Çünkü kullandığımız Component 30 günlük bir ömre sahip yani demo. Sürekli kullanabilmek için www.activexperts.com adresinden satın alabilirsiniz yada yukarıdaki gibi maili göndermeden önce tarihi değiştirip yolladıktan sonra geri düzeltebilirsiniz.
Component oldukca esnek isterseniz html formatında maillerde yollayabilirsiniz ve Programı çalıştırmadan önce Aemail.dll dosyasını indirip windows\system32 dizini içine kopyalamanız ,
register etmeniz (Başlat->Çalıştır "Regsvr32.exe /s c:\windows\System32\Aemail.dll") ve visual basicte referanslara eklemeniz gerekmektedir.
Componentle ilgili diğer dökümanlara (.Net, C#, VBScript..) web sitsinden bakabilirsiniz.

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

6

Saturday, April 22nd 2006, 12:26am

RE: WebMaster Otağı(Dökümanlar,programlar)

Formunuza tek satır kod ile açılış ve kapanış efektleri ekleyebilirsiniz.

Burada vereceğim kodlarla ile formunuzuna açılış ve kapanış efektleri ekleyebilirsiniz.


Şimdi bu kodları nasıl kullanacağız, ona bakalım.

* Aslında ben zaten gerekli tüm açıklamayı kodların içine yazdım ancak yine de burada bir açıklama yapayım.

1. Formunuza (adı Form1 olsun) sadece 1 adet timer ekleyin. (adı Timer1 olsun)

2. Kodların kullanımı çok basittir. Tek satır kod! ---> efekt_adi parametreler
Gelelim efektlere ve kullanım şekillerine,

-
FORM AÇILIŞLARI
-
Sağa Aç (Form Açılışı)
Kullanımı: SagaAc 5000, 5
5 milisaniyede bir formu +50 uzatır. (5000'e kadar.)
Buradaki 5 milisaniyeyi ve 5000'i değiştirebilirsiniz.
-
Aşağıya Aç (Form Açlışı)
Kullanımı: AsagiyaAc 5000, 5
5 milisaniyede bir formu asağıya doğru uzatır. (5000 olana kadar.)
Buradaki 5 milisaniyeyi ve 5000'i değiştirebilirsiniz.
-
Köşeye Aç (Form Açılışı)
Kullanımı: KoseyeAc 5000, 4000, 5
5 milisaniyede bir formu büyütür. (5000x4000 olana kadar.)
Buradaki 5 milisaniyeyi, 5000'i ve 4000'i değiştirebilirsiniz.
-

FORM AÇILIŞARININ DAHA KOLAY 2. VERSİYONLARI
-
Buradaki kolaylık, formunuza efektli açılış eklerken 3000'le 4000'le
istediğiniz ayarı tutturmak zor oluyorsa siz sadece formu istediğiniz
büyüklüğe getirin, kodu yazın ve açılış hızını ayarlayın ve böylece
otomatik olarak ayarladığınız büyüklüğe doğru form efektli bir şekilde
açılacaktır. Daha kolay bir yöntem değil mi?
-
Sağa Aç 2 (Form Açılışı)
Kullanımı: SagaAc2 5
Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
formu anında küçücük yapar ve sonra eski haline doğru büyütür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-
Aşağıya Aç 2 (Form Açılışı)
Kullanımı: AsagiyaAc2 5
Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
formu anında küçücük yapar ve sonra eski haline doğru büyütür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-
Köşeye Aç 2 (Form Açılışı)
Kullanımı: KoseyeAc2 5
Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
formu anında küçücük yapar ve sonra eski haline doğru büyütür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-

FORM KAPANIŞLARI
-
Sola Kapa (Form Kapanışı)
Kullanımı: SolaKapa 5
5 milisaniyede bir formu sola doğru küçültür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-
Aşağıya Kapat (Form Kapanışı)
Kullanımı: AsagiyaKapa 5
5 milisaniyede bir formu yukarı doğru küçültür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
YUKARIDAKİ BAZI KOMUTLARIN DAHA KOLAY 2. VERSİYONLARI
-
Köşeden Kapat (Form Kapanışı)
Kullanımı: KosedenKapat 5
5 milisaniyede bir formu küçültür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-



KOMUTLARI ÖZETLERSEK
-
Milisaniye olarak 5 ve boyut olarak 5000 kabul edelim.

* Açılışlar
SagaAc 5000, 5
AsagiyaAc 5000, 5
KoseyeAc 5000, 4000, 5

* Boyutsuz Açılışlar
SagaAc2 5
AsagiyaAc2 5
KoseyeAc2 5

* Kapanışlar
SolaKapa 5
AsagiyaKapa 5
KosedenKapat 5


SON OLARAK

Şimdi aşağıdaki kodları forma aynen kopyala/yapıştır yapalım. Hadi kolay gelsin!


'******************** - KOD BAŞLANGICI - ********************

'Bu kodların tamamını Furkan Omay yazmıştır.

'Formunuza sadece bir timer ekleyin ve
'Form_Load olayına istediğiniz bir efektin komutunu yazınız.

'Bu kodlarla birçok form'a açılış ve kapanış
'efekti ekleyebilirsiniz.

'Hız olarak 1-100 girmeniz uygun olacaktır.

'Not: Timer ve Form adını değiştirecekseniz,
'kodlarda da gerekli düzenlemeyi yapınız.

'Kullanabileceğiniz efektkerin tam listesi aşağıda!

'********************EFEKT LİSTESİ********************
'Sağa Aç (Form Açılışı)
'Kullanımı: SagaAc 5000, 5
'5 milisaniyede bir formu +50 uzatır. (5000'e kadar.)
'Buradaki 5 milisaniyeyi ve 5000'i değiştirebilirsiniz.
'-
'Sola Kapa (Form Kapanışı)
'Kullanımı: SolaKapa 5
'5 milisaniyede bir formu sola doğru küçültür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'Köşeye Aç (Form Açılışı)
'Kullanımı: KoseyeAc 5000, 4000, 5
'5 milisaniyede bir formu büyütür. (5000x4000 olana kadar.)
'Buradaki 5 milisaniyeyi, 5000'i ve 4000'i değiştirebilirsiniz.
'-
'Köşeden Kapat (Form Kapanışı)
'Kullanımı: KosedenKapat 5
'5 milisaniyede bir formu küçültür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'Aşağıya Aç (Form Açlışı)
'Kullanımı: AsagiyaAc 5000, 5
'5 milisaniyede bir formu asağıya doğru uzatır. (5000 olana kadar.)
'Buradaki 5 milisaniyeyi ve 5000'i değiştirebilirsiniz.
'-
'Aşağıya Kapat (Form Kapanışı)
'Kullanımı: AsagiyaKapa 5
'5 milisaniyede bir formu yukarı doğru küçültür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'YUKARIDAKİ BAZI KOMUTLARIN DAHA KOLAY 2. VERSİYONLARI
'-
'Köşeye Aç 2 (Form Açılışı)
'Kullanımı: KoseyeAc2 5
'Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
'formu anında küçücük yapar ve sonra eski haline doğru büyütür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'Sağa Aç 2 (Form Açılışı)
'Kullanımı: SagaAc2 5
'Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
'formu anında küçücük yapar ve sonra eski haline doğru büyütür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'Aşağıya Aç 2 (Form Açılışı)
'Kullanımı: AsagiyaAc2 5
'Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
'formu anında küçücük yapar ve sonra eski haline doğru büyütür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'********************EFEKT LİSTESİ SONU********************
Public yapilacak, limit, limit2, eski, eski2 As Integer

Public Sub SagaAc(Ne_Kadar As Long, Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 1
limit = Ne_Kadar
Form1.Width = 1
Timer1.Enabled = True
End Sub

Public Sub SolaKapa(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 2
Timer1.Enabled = True
End Sub

Public Sub KoseyeAc(Ne_Kadar_Asagi As Long, Ne_Kadar_Saga As Long, Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 3
limit = Ne_Kadar_Asagi
limit2 = Ne_Kadar_Saga
Form1.Width = 1
Form1.Height = 1
Timer1.Enabled = True
End Sub

Public Sub KosedenKapat(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 4
Timer1.Enabled = True
End Sub

Public Sub KoseyeAc2(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 3
limit = Form1.Height
limit2 = Form1.Width
Form1.Height = 1
Form1.Width = 1
Timer1.Enabled = True
End Sub

Public Sub SagaAc2(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 1
limit = Form1.Width
Form1.Width = 1
Timer1.Enabled = True
End Sub

Public Sub AsagiyaAc(Nereye_Kadar As Integer, Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 5
limit = Nereye_Kadar
Form1.Height = 1
Timer1.Enabled = True
End Sub

Public Sub AsagiyaAc2(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 5
limit = Form1.Height
Form1.Height = 1
Timer1.Enabled = True
End Sub

Public Sub AsagiyaKapa(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 6
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Select Case yapilacak

Case Is = 1
If Form1.Width < limit Then
Form1.Width = Math.Round(Form1.Width + 50)
Else
yapilacak = 0
Timer1.Enabled = False
End If

Case Is = 2
eski = Form1.Width
If Form1.Width > 5 Then
Form1.Width = Math.Round(Form1.Width - 50)
Else
End
End If
If Form1.Width = eski Then
End
End If

Case Is = 3
If Form1.Height < limit Then
Form1.Height = Math.Round(Form1.Height + 50)
Else
If Form1.Width >= limit2 Then
Timer1.Enabled = False
End If
End If
If Form1.Width < limit2 Then
Form1.Width = Math.Round(Form1.Width + 50)
Else
If Form1.Height >= limit Then
Timer1.Enabled = False
End If
End If

Case Is = 4
eski = Form1.Width
eski2 = Form1.Height
If Form1.Width > 5 Then
Form1.Width = Math.Round(Form1.Width - 50)
Else
If Form1.Height <= 5 Then End
End If
If Form1.Height > 5 Then
Form1.Height = Math.Round(Form1.Height - 50)
Else
If Form1.Width <= 5 Then End
End If
If Form1.Width = eski And Form1.Height = eski2 Then
End
End If

Case Is = 5
If Form1.Height < limit Then
Form1.Height = Math.Round(Form1.Height + 50)
Else
Timer1.Enabled = False
End If

Case Is = 6
eski = Form1.Height
If Form1.Height > 5 Then
Form1.Height = Math.Round(Form1.Height - 50)
Else
End
End If
If Form1.Height = eski Then
End
End If

Case Else
yapilacak = 0
Timer1.Enabled = False
End Select

End Sub
'******************** - KOD SONU - ********************

Şimdi Form_Load olayı ya da başka bir yere istediğiniz komutu yazarak formunuza hava katabilirsiniz.
Bu kodlar kısaltılabilir ya da içerisinden sadece kullanılacak efekt alınabilir.

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

7

Saturday, April 22nd 2006, 12:27am

RE: WebMaster Otağı(Dökümanlar,programlar)

Oracle Personal 7 Veritabanı Tasarımı


VERİ TABANI DİZAYNI

Aslında bir veri tabanı tasarlamak sizin uygulama alanınızın başarısı için son derece önemlidir.
Normalleştirme, veri tekrarını azaltmak için verilerinizi parçalara ayıran bir işlemdir. Normalleştirmenin her seviyesinde veri tekrarları azaltılır. Verilerinizi normalleştirme son derece karışık bir işlem olabilir ve sayısız veri tabanı tasarım araçları bu işlemi mantıksal bir biçimde planlamanıza olanak sağlar.
Birçok faktör veri tabanınızı tasarlamanıza etkili olabilir aşağıdakileri kapsar;

1. Güvenlik
2. Kullanılabilir disk alanını geri kazanma
3. Veri tabanı arama hızı
4. Veri tabanı güncelleştirme hızı
5. Çoklu tabloların getirilen bilgilerle bağlanma hızı
6. RDBMS geçici tabloları destekler
7. Disk alanı herzaman için önemli bir etkendir.

Genellikle karşıt problem meydana gelebilir. Tablolarınızın dizaynını veri tabanı ile tamamen normalleştirmeye ve daha fazla tablo oluşturmaya çabalamalısınız. Her ne kadar veri tabanı dizaynının mutluluğuna yaklaşsanızda, bu veri tabanına karşı yapılmış herhangi bir sorgu işlemi çalışmak işin çok uzun bir zaman olabilir. Bu usulde tasarlanan veri tabanlarını muhafaza etmek bazen zordur. Çünkü tablo yapısı tasarımcının amaçladığından karmaşık olabilir. Bu problemher zaman için kodlarınızı veya tasarınızı belgelendirmenizin öneminin altını çizer, böylece sizden sonra gelebilecek başkalarının(veya sizinle çalışanlar)ve o başkalarının oluşturduğunuz veri tabanı yapısı hakkında o anda neler düşündüğünüz hakkında bazı fikirleri olur. Veri tabanı tasarımcılarının terimlerinde, bu bilgilendirme işi bir bilgi sözlüğü olarak bilinir.

Bir Veri Sözlüğü Oluşturmak

Bir veri sözlüğü, veri tabanı tasarımcılarının en önemli belgelendirme şeklidir. Aşağıdaki işlemleri yerine getirir.
Veri tabanının ardındaki ayrıntıları kendi kendine belgeler: tasarlanırken ne tertiplendiği, veri tabanının default büyüklüğü veya kök dosyanın büyüklüğü (veritabanı işlemleri bilgilerinin bazı RDBMS lerde saklanması için kullanılır. )
Herhangi bir veri tabanının kurulmuş veya kurulmamış yazı düzeni için SQL kaynak kodlarını içerir, dün tanıtılanlar gibi dahili/harici araçların kullanımının belgelendirilmesini kapsar.
Veri tabanı içindeki her tablonun detaylı birer tanımlamasını sağlar ve amacını meslek işlem teknik terimleriyle açıklar.
Her tablonun dahili yapısını belgeler, bütün alanları ve onların açıklamalarıyla birlite veri tiplerini, bütün indeksleri ve bütün görünümleri kapsar.
Depolanmış tüm işlemleri ve triggers lar için SQL kodlarını içerir.
Veri tabanı kısıtlamalarını tanımlar. Bu kısıtlamaların RDBMS seviyesinde uygulanmasını veya veri tabanı programcısının bu kısıtlamaları kaynak kodlarıyla kontrol ettiğini belgelendirme tek değerli veya sıfır olmayan değerlerin kullanımındaki gibi ifade eder.
Bir çok bilgisayar_destek yazılım mühendislikleri (CASE) araçları veri tabanı tasarımcılarını bu veri sözlüğünü yaratmada destekler. Örneğin; Microsoft Access, veri tabanındaki her nesnenin detaylı bir tanımlamasının çıktısını veren paketlenmiş bir veri tabanı belgelendirme çubuğuyla gelir. Veri sözlüğündeki daha fazla detay için 17. bölümdeki "Generate SQL Statements" için SQL kullanımına bakın.

NOT: Birçok RDBMS Ünitesi kurulmuş veri sözlüğü veya onu kurmak için yazı düzeninden biri ile gelir.

Anahtar Alanları Yaratmak:

Veri tabanı tasarımınızın belgelendilmesi boyunca, tablo yapınızı oluştururken en önemli tasarım hedefi, her tabloda bir birincil anahtar olmalıdır. Birincil anahtar aşağıdaki hedefleri karşılamalıdır.
Her kayıt tablo içinde tektir (Tablo içindeki başka hiçbir kayıt onun bulunduğu kolonla eşit olamaz).
Bir kaydın tek olabilmesi için, bütün kolonlar önemlidir; yani, bir kolondaki bilgi tablo içinde başka hiçbir yerde tekrarlanmamalıdır.
İkinci hedef konusunda, tablonun her yerinde tamamen tek bilgiye sahip kolon birincil anahtar alanı olarak bilinir. Bir harici anahtar alanı, bir tabloyu diğer tablonun birincil veya harici anahtarına bağlayan bir alandır. Aşağıdaki örnek bu durumu açıklamaktadır.

Üç tablonuz olduğunu farzedin; BILLS;ACCOUNTS ve COMPANY. Tablo 9.1 bu üç tablonun formatını gösteriyor.

Tablo 9. 1 PAYMENTS veri tabanı için tablo yapısı

Bills Bank_Accounts Company

NAME, CHAR(30) ACCOUNT_ID, NUMBER NAME, CHAR(30)
AMOUNT, NUMBER TYPE, CHAR(30) ADDRESS, CHAR(50)
ACCOUNT_ID, NUMBER BALANCE, NUMBER CITY, CHAR(20)
BANK, CHAR(30) STATE, CHAR(2)

Bu tabloları gözden geçirmek için bir dakika ayırın. Sizce hangi alanlar birincil anahtarlar? Hangileri harici anahtarlar?
BILL tablosundaki birincil anahtar Name alanıdır. Bu alan kopyalanamaz çünkü bu miktar ile sadece bir (bill) ilanınız var. (Gerçekte, büyük bir ihtimalle bu kaydı gerçekten tek yapmanız için bir kontrol numarası veya bir tarih olması gerekir, fakat şimdi bu NAME alanının çalıştığını farzedin). BANK_ACCOUNTS tablosundaki ACCOUNT_ID alanı bu tablo için birincil anahtardır. NAME alanı da COMPANY tablosu için birincil anahtardır.
Bu örnekteki harici anahtarlar için büyük bir ihtimalle çok kolay yerlerdir.

BIILS tablosundaki ACCOUNT_ID alanı, BILLS tablosu ile BANK_ACCOUNT tablosunu bağlar, BILLS tablosundaki NAME alanı, BILLS tablosu ile COMPANY tablosunu bağlar. Eğer bu bir full-fledged veri tabanı tasarımı olsaydı, başka tablolar oluştururdunuz ve veriler çökerdi. Örneğin, BANK_ACCOUNT tablosundaki BANK alanı, adresler ve telefon numaraları olduğu gibi banka bilgilerini kapsayan bir BANK tablosunu gösterebilir. COMPANY tablosu şirket ve onun ürünleri hakkında bilgileri kapsayan başka bir tablo (veya bu durum için veri tabanı) ile bağlanabilir.

Alıştırma 9.1

BILLS;BANK_ACCOUNTS ve COMPANY tablolarının kapsadığı aynı bilgileri kullanarak yanlış bir veri tabanı tasarılarını gözden geçirmek için bir daha ayıralım. Birçok yeni kullanıcın yaptığı bir yanlış verilerini mümkün olduğu kadar çok mantıksal gruba ayırmamalarıdır. Örneğin kötü tasarlanmış bir BILLS tablosu şu şekilde gösterilebilirdi: Kolon İsimlerinin Açıklamaları

NAME, CHAR(30) Borç paraya sahip olan şirketin adı.
AMOUNT, NUMBER Borç paranın dolar cinsinden miktarı
ACCOUNT_ID, NUMBER Borç paranın Banka hesap numarası (BANK_ACCOUNTS tablosuna bağlandı. )
ADDRESS, CHAR(30) Borç paranın sahibi şirketin adresi
CITY, CHAR(15)Borç paranın sahibi şirketin bulunduğu şehir
STATE, CHAR(2) Borç paranın sahibi şirketin bulunduğu devlet

Sonuçlar doğru görünebilir ama bu verilere gerçekten bakmak için bir dakika ayırın. Eğer Name alanındaki şirkete birkaç ay sonra birçok kez borç yazdığınızda , her seferinde borç için yeni bir kayıt eklenecek, şirketin ADRESS, CITY ve STATE bilgileri tekrarlanacaktır. Şimdi üstüne yüzlerce ve binlerce aynı kayıt olacak ve sonra bu şekilde 10, 20 ve 30 tablo olacak.
Şimdi gerçekten normalleştirilmiş veri tabanının önemini görmeye başlayabiliriz. Bu tabloları gerçekten veri ile doldurmadan önce, bir tabloyu nasıl oluşturacağınızı bilmeniz gerekmektedir. Tablo Oluşturma İfadesi
Bir tablo oluşturma işlemi; CREATE DATABASE ifadesinden daha fazla standartlaştırılmıştır. Burda tablo oluşturma işlemi için başlıca temel sözdizimi vardır:

SYNTAX SÖZDİZİMİ

CREATE TABLE TABLO ADI

(Alan 1 veri tipi (NOT NULL)

Alan 2 veri tipi (NOT NULL)

Alan 3 veri tipi (NOT NULL)

Tablo oluşturma ifadesinin basit bir örneği aşağıdadır.

SQL>CREATE TABLE BILLS(
2 NAME CHAR(30)

3 AMOUNT NUMBER,

4 ACCOUNT_ID NUMBER);

Analiz

Bu ifade BILLS adında bir tablo oluşturur. BILLS tablosunun içinde üç alan vardır: NAME, AMOUNT veACCOUNT_ID. NAME alanının veri tipi karakter ve 30 karakter uzunluğundaki dizileri saklayabilir. AMOUNT ve ACCOUNT_ID alanları sadece sayısal değerler içerir. Aşağıdaki kısım CREATE TABLE komutunun kısımlarını gözden geçiriyor.

Tablo Adı

Bir tabloyu Personal Oracle 7 kullanarak oluştururken, tabloyu isimlendirmek için sayısız kısıtlamalar uygulanır. İlk olarak tablo adı 30 karakterden uzun olamaz. Çünkü Oracle duyarsız durumdadır, tek karakter için büyük harf veya küçük harf kullanabilirsiniz. Bununla beraber ismin ilk karakteri A ile Z arasındaki bir karakter olmak zorundadır. Geriye kalan karakterler harf veya _, $ ve @ gibi semboller olabilir. Tabiki tablonun adı şemasının içinde tek olmalıdır. İsmin ayrıca Oracle veya SQL'in ayarlnmış kelimelerinden biri olmalıdır. (SELECT gibi)

NOT: Sahibi veya şeması farklı olduğu sürece aynı tablo isimlerini kullanabilirsiniz. Aynı şemadaki tablo isimleri tek olmalıdır.

Alan Adı

Tablo isimlerine uygulanan kısıtlamalar aynen olan isimlerinde de uygulanmaktadır. Bununla birlikte veri tabanı içinde bir alan adı tekrarlanabilir. Sınırlayan kural şudur, alanb adı tablo , içinde tek olmalıdır. Örneğin;Veri tabanınızda iki adet tablonuz olduğunu farzedin. Tablo 1 ve Tablo 2, bu tabloların her ikisininde ID adında alanları olabilir. Bununla beraber Tablo'in içinde ID adında iki alan yapamazsınız, eğer onlar farklı veri tiplerinde değillerse.

Alanların Veri Tipleri

Eğer herhangi bir dilde programlama yaptıysanız, veri tiplerininde aşinasısınızdır. Mesela; bir karakter veri tipi, sadece karakter dizisinde bilgileri depolayan bir alanı teşkil eder. Tablo 9. 2 Personal Oracle 7 tarafından desteklenen tiplerini gösteriyor.

Veri Tiplerinin Açıklaması

CHAR_1 ile 255 karakter uzunluğundaki numerik verilerdir. Boşluklar, kolonun toplam ayrılmış uzunluğuna ek olarak değerin sağ kısmına eklenir.
DATA_Tarih yüzyıl, yıl, ay, gün, saat, dakika ve saniye kısımları olarak kapsar.
LONG_2 gigabyte kadar değişken uzunlukta numerik dizilerdir. (Aşağıdaki nota bakınız)
LONGRAW_ 2 gigabyte kadar ikili bilgiler (Aşağıdaki notu görün)
NUMBER_ Numerik o, pozitif veya negatif karışık veya flooting_point bilgiler
RAW_ 255 byte kadar çiftli bilgiler.
ROWID_ Bir tablo içindeki bir satırın tek adresini gösteren dizilerdir. (Aşağıdaki nota bakın)
VARCHAR 2_ değişken uzunlukta numerik bilgiler, alan 1 ile 2000 karakter uzunluğunda olmalıdır.

NOT: LONG veri tipi diğer veri tabanı yönetim sistemlerinde genellikle MEMO veri tipi olarak adlandırılır.

LONGRAW veri tipleri diğer veri tabanı yönetim sistemlerinde genelde-çiftli-geniş obje (BLOB) şeklinde adlandırılır. Tipik olarak grafik, ses veya video verilerini depolamak için kullanılır. Buna rağmen ilişkisel veri tabanı bugün yönetim sistemleri orjinal olarak bu tip verileri sunmak için tasarlanmıştır. Bir çok multimedya sistemleri verileri LONGRAW veya BLOB tipinde olanlarda depolar.
ROWID alan tipi tablonuzdaki tek, tekrarlanmamış değerlerdeki her kaydı vermek için kullanılır.

Diğer bir çok veri tabanı sistemleri bu kavramı bir COUNTER olan (Microsoft Access) veya bir DENTITY alanıyla (SQL server) destekler.

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

8

Saturday, April 22nd 2006, 12:27am

RE: WebMaster Otağı(Dökümanlar,programlar)

Vb de sıradışı tasarımlar

Eğer Vb'de ki normal pencere ve form tasarımından sıkıldıysanız bu ipucu tam size göre ..
Hepimiz winmap'ı biliyoruz değil mi?Tıpkı onun gibi görünen bir program yapmaya ne ddersiniz.
Malzemeler:

formumuzun başlığını oluşturacak bir resim
kapat düğmesi için resim
simge düğmesi için resim
formumuzun başlığı için başlık resmi üzerine bir label
hazırlanışı:
Öncelikle formumuzun borderstyle ' nı none yapıyoruz
kapat düğmesine tıklandığında : unload me yada end
simge düğmesine tıklandığında me.windowstate=1 (bu arada formumuzun showintaskbar özelliğinin
true olması lazım)
ve formumuzun başlık resminden taşınabilmesi için gerekli kod:

formun general kısmına

Option Explicit
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32"Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg _
As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const HTCAPTION = 2
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const WM_SYSCOMMAND = &H112

ve resme tıkladığımızda taşınabilmesi için

'picture1'nı sizin başlık resminin ismi ile değiştirirn
Private Sub Picture1_MouseDown(Button As Integer, Shift As _
Integer, X As Single, Y As Single)
Call ReleaseCapture
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End Sub

ayrıca kapat ve simge resimlerine tıklandığında o resmin borderstyle 'ını fixedsingle yaparsanız
daha havalı olur.
Eğer formunuzun bir de mousepoinrter'ını değiştirirseniz daha iyi olur(mouseiconu değiştirdikten sonra
mousepointer'ı 99-custom yapmayı unutmayın..)
Formumuzun arkaplanını ve formumuzda bulunan komut düğmelerini , "label"lerini de
formumuza uygun şekilde değiştirirsek tamam bu iş...
(komut düğmelerinin arka planının değişmesi için komut düğmesinin style özelliğinin
graphical olması lazım...Ayrıca listlerin , driveboxların ,dirboxların da renklerini değiştirebilirsiniz.)
Ve formunuz boy değiştirirse formunuzun resize bölümüne başlık resinin boyutunu , simge ve kapat butonunun
yerini değiştirecek koduda yazın...

Eğer formunuzun açılıp kapanırken daha havalı olmasını istiyorsanız:
formunuza bir adet timer ekleyin ve bu timer'e formunuzun height ve width özelliklerini değiştirecek kodu
yazın.
örnek:
Form1.Height=Form1.Height + 200

  • "nedemgali" started this thread

Posts: 2,188

Date of registration: Sep 24th 2005

Level: 46 [?]

Experience: 5,331,707

Next Level: 6,058,010

Danksagungen: 305

  • Send private message

9

Saturday, April 22nd 2006, 12:28am

RE: WebMaster Otağı(Dökümanlar,programlar)

Domain Nameden server ipsini bulma
simdi winsock nesnesini kullarak domain namelerden sitelerin ip adreslerini bulacağiz.visual basic te standart exe yi sectikten sonra projeye components den "Microsoft Winsock Control 6.0" ı ilave edin.form a 2 adet textbox 1 adet buton ve winsock u ekleyin.

'simdi forumun load kismina text1 in baglanti kurulacak adres cubugu
' olarak kullanildigğini belirtiyoruz,
'daha sonra text2 bosaltip ; comand1 in bağlanti kurdugunu gosterdik.

sub form_load()
form1.caption = "Vbasic Master İpuclari"
command1.caption = "Bağlan"
text2 = ""
text1 = "www.hotmail.com"
end sub

'daha sonra command1 in click yordamina winsock nesnesinin bağlanti
' kurmasi gereken adresin text1 de oldugunu belirtik.
sub command1_click()
winsock1.connect text1.text, 80
end sub

've simdi winsock nesnesinin bağlanti kurmasi durumunda yapmasi gerekeni yaziyoruz.
' yani winsock server a baglanti kurmasi durumunda text2 ye bağlanti kurdugu server
' ipsini yazdiriyor.ve winsock u kapatiyor.
sub winsock1_connect()
text2.text = winsock1.remotehostip
winsock1.close
End Sub

've son olarakta winsock un hata vermesi durumunda, yapmasi gereken
'işlemleri 'yaziyoruz,hatayi bildirmesini ve winsock u kapatmasi.
sub winsock1_error(byval number as integer,description as string,byval scode as long, byval source as string,byval helpfile as string, byval helpcontext as long, canceldisplay as boolean)
msgbox "Hata Oluştu Tekrar Deneyiniz", vbinformation,"hata durumu"
winsock1.close
End Sub

'bunu geliştirmek sizin elinizde ama son olarkata bunlari loglamak isteyenlere bir ip ucu verim
'bir adet command buton daha ekleyip click yordamina

sub command2_click()
dim yol
yol = freefile
open "c:\" & text1 & ".txt" for output as #yol
print #yol, "Server İsmi :" & text1
print #yol, "Server İpsi :" & text2
close
end suıb ' seklinde kaydedebilrsiniz

Counter:

Hits today: 226 | Hits yesterday: 2,677 | Hits record: 9,256 | Hits total: 761,787 Average hits: 2,216.66 | Clicks today: 6,905 | Clicks yesterday: 24,461 | Clicks total: 6,438,033 | Clicks record: 60,478 | Clicks avarage: 18,733.48 Counter age (days): 343.66 | Counts since: Jun 18th 2011, 2:13pm

Zirve1 en iyi Türk Siteleri
Zirve1 en iyi Türk Siteleri