Aynı veritabanı için ("ADODB.Connection") bir kez tanımlama.

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Private Sub ComboBox1_Change()
'nüfusa kayıtlı olduğu il
Call DegiskenTani
On Error Resume Next
Dim Baglanti As ADODB.Connection:   Dim Kayit1 As ADODB.Recordset:  Dim SQLStr As String
Dim i As Integer
'ckBU_Klc_SfAd = Array(ckBU_sfSAT.Name, ckBU_sfALS.Name, ckBU_sfTNM.Name, ckBU_sfTSB.Name, _
                      ckBU_sfAYL.Name, ckBU_sfYIL.Name, ckBU_sfDVR.Name)  'daima bu kitapta kalacak sayfa adları
SQLStr = "SELECT DISTINCT il, ilce FROM [ilveilce$] WHERE il=" & "'" & ComboBox1.Value & "'"
'************************************************'kynMHBRM dosya varsa bağlan>
If Dir(kynMHBRM) = "" Then
MsgBox kynMHBRM & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi"
Exit Sub
End If
Set Baglanti = CreateObject("ADODB.Connection")
    With Baglanti
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .Properties("Extended Properties").Value = "Excel 8.0"
        .Properties("Data Source").Value = kynMHBRM
        .CursorLocation = adUseClient
        .Mode = adModeReadWrite
        .CommandTimeout = 60
        '.Properties("User ID") = vbNullString
        '.Properties("Password") = vbNullString
        .Open
    End With

    Set Kayit1 = CreateObject("ADODB.Recordset")
    With Kayit1
        .ActiveConnection = Baglanti
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Source = SQLStr
        .Open
    End With               '<bitti
'************************************************'bitti<
'************************************************'verileri çek
        Kayit1.MoveFirst:        ComboBox2.Clear
            For i = 1 To Kayit1.RecordCount
               ComboBox2.AddItem Kayit1.Fields("ilce")
               Kayit1.MoveNext
            Next i
        Kayit1.MoveFirst
        If ComboBox1.ListIndex = 27 Then ComboBox2.ListIndex = 2
        If ComboBox1.ListIndex <> 27 Then ComboBox2.ListIndex = 0
'************************************************'bağlantıyı kes


If CBool(Kayit1.State And adStateOpen) = True Then Kayit1.Close: Set Kayit1 = Nothing
If CBool(Baglanti.State And adStateOpen) = True Then Baglanti.Close: Set Baglanti = Nothing 'bitti
End Sub
Private Sub ComboBox2_Change()
'nüfusa kayıtlı olduğu ilçe
Call DegiskenTani
On Error Resume Next
Dim Baglanti As ADODB.Connection:   Dim Kayit1 As ADODB.Recordset:  Dim SQLStr As String
Dim i As Integer
SQLStr = "SELECT DISTINCT il, ilce,mahkoy FROM [ilveilce$] WHERE il=" & "'" & ComboBox1.Value & "'" & "AND ilce=" & "'" & ComboBox2.Value & "'"
'************************************************'kynMHBRM dosya varsa bağlan>
If Dir(kynMHBRM) = "" Then
MsgBox kynMHBRM & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi"
Exit Sub
End If
Set Baglanti = CreateObject("ADODB.Connection")
    With Baglanti
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .Properties("Extended Properties").Value = "Excel 8.0"
        .Properties("Data Source").Value = kynMHBRM
        .CursorLocation = adUseClient
        .Mode = adModeReadWrite
        .CommandTimeout = 60
        '.Properties("User ID") = vbNullString
        '.Properties("Password") = vbNullString
        .Open
    End With

    Set Kayit1 = CreateObject("ADODB.Recordset")
    With Kayit1
        .ActiveConnection = Baglanti
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Source = SQLStr
        .Open
    End With               '<bitti
'************************************************'bitti<
'************************************************'verileri çek
       Kayit1.MoveFirst:       ComboBox3.Clear
            For i = 1 To Kayit1.RecordCount
               ComboBox3.AddItem Kayit1.Fields("mahkoy")
               Kayit1.MoveNext
            Next i
       Kayit1.MoveFirst
       If Me.ComboBox1.Value <> "" Then ComboBox3.ListIndex = 0
'************************************************'bağlantıyı kes
If CBool(Kayit1.State And adStateOpen) = True Then Kayit1.Close: Set Kayit1 = Nothing
If CBool(Baglanti.State And adStateOpen) = True Then Baglanti.Close: Set Baglanti = Nothing 'bitti
End Sub

yukarıdaki kodlardanda anlaşılacağı üzere

Kod:
.........
'************************************************'kynMHBRM dosya varsa bağlan>
If Dir(kynMHBRM) = "" Then
MsgBox kynMHBRM & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi"
Exit Sub
End If
Set Baglanti = CreateObject("ADODB.Connection")
    With Baglanti
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .Properties("Extended Properties").Value = "Excel 8.0"
        .Properties("Data Source").Value = kynMHBRM
        .CursorLocation = adUseClient
        .Mode = adModeReadWrite
        .CommandTimeout = 60
        '.Properties("User ID") = vbNullString
        '.Properties("Password") = vbNullString
        .Open
    End With

    Set Kayit1 = CreateObject("ADODB.Recordset")
    With Kayit1
        .ActiveConnection = Baglanti
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Source = SQLStr
        .Open
    End With               '<bitti
'************************************************'bitti<
satırları ortak birden fazla yerde yanı şeyleri kopyala yapıştır yapıyorum onun yerine bunları bir kere
mesala
call vtMBRM_ac çağırıp işlem bitince vtMBRM_kapa ile kapa demenin yolu varmıdır.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Parametrik prosedur &#231;a&#287;&#305;rabilirsiniz.
Kod:
Sub Bag_Ac(Conn as ADODB.Connection)
With Conn
   .
   .
   .Open
End With
Kod:
Sub Bag_Kapat(Conn as ADODB.Connection)
Conn.Close
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam zahmet olmzsa &#246;rnekleyebilirmisiniz, aral&#305;ktaki kodlar&#305; oldu&#287;u gibi ayr&#305; module al&#305;p denemi&#351;tim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
&#214;rnek, iki ADO Connection nesnesinin parametrik olarak &#231;a&#287;&#305;r&#305;l&#305;p a&#231;ma ve kapatma i&#351;lemidir. (Modul.bas)
Kod:
Public Conn1 As New ADODB.Connection
Public Conn2 As New ADODB.Connection
 
Sub Acma_Test()
    Call Bag_Ac(Conn1, "C:\Test.xls")
End Sub
 
Sub Kapat_Test()
    Call Bag_Kapat(Conn1)
End Sub
 
Sub Bag_Ac(Cn As ADODB.Connection, Wb As String)
    Cn.Open _
    "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & Wb
End Sub
 
Sub Bag_Kapat(Cn As ADODB.Connection)
    Cn.Close
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam bu durumda bunlar a&#231;&#305;kta kal&#305;yor sanki
Kod:
    Set Kayit1 = CreateObject("ADODB.Recordset")
    With Kayit1
        .ActiveConnection = Baglanti
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Source = SQLStr
        .Open
    End With
sadece &#231;a&#287;&#305;rd&#305;&#287;&#305;m prosod&#252;rde Sql sat&#305;r&#305; de&#287;i&#351;kenini yeniden vercem di&#287;erlerinin hepsi ayn&#305; olacak?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Değişkenleri Declaration kısmında tanımlayıp, Connection'ı birkez açılışta ve Recordset'i de ihtiyaç duyulduğunda kullanmak üzere sadeleştirme yapmaya çalıştım.
ADODB değişkeni tanımladığınız için "CreateObject" kullanmanız gerekmez.
Kod:
Private Baglanti As ADODB.Connection
Private Kayit1   As ADODB.Recordset
 
Private Sub USERFORM_INITIALIZE()
Set Baglanti = New ADODB.Connection
    Baglanti.Open _
    "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=kynMHBRM"
End Sub
 
Private Sub USERFORM_TERMINATE()
    If CBool(Baglanti.State And adStateOpen) = True Then _
        Baglanti.Close: Set Baglanti = Nothing
End Sub
 
Private Sub ComboBox1_Change()
'nüfusa kayıtlı olduğu il
Call DegiskenTani
On Error Resume Next
Dim i As Integer, SQLStr As String
 
'ckBU_Klc_SfAd = Array(ckBU_sfSAT.Name, ckBU_sfALS.Name, ckBU_sfTNM.Name, ckBU_sfTSB.Name, _
                      ckBU_sfAYL.Name, ckBU_sfYIL.Name, ckBU_sfDVR.Name)  'daima bu kitapta kalacak sayfa adları
SQLStr = "SELECT DISTINCT il, ilce FROM [ilveilce$] WHERE il=" & "'" & ComboBox1.Value & "'"
 
'************************************************'kynMHBRM dosya varsa bağlan>
If Dir(kynMHBRM) = "" Then
    MsgBox kynMHBRM & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi"
Exit Sub
End If
 
    Set Kayit1 = New ADODB.Recordset
    Kayit1.Open SQLStr, Baglanti, adOpenKeyset, adLockOptimistic
'************************************************'bitti<
'************************************************'verileri çek
        Kayit1.MoveFirst:        ComboBox2.Clear
            For i = 1 To Kayit1.RecordCount
               ComboBox2.AddItem Kayit1.Fields("ilce")
               Kayit1.MoveNext
            Next i
        Kayit1.MoveFirst
        If ComboBox1.ListIndex = 27 Then ComboBox2.ListIndex = 2
        If ComboBox1.ListIndex <> 27 Then ComboBox2.ListIndex = 0
'************************************************'bağlantıyı kes
 
If CBool(Kayit1.State And adStateOpen) = True Then Kayit1.Close: Set Kayit1 = Nothing
End Sub
 
Private Sub ComboBox2_Change()
'nüfusa kayıtlı olduğu ilçe
Call DegiskenTani
On Error Resume Next
Dim SQLStr As String
Dim i As Integer
 
SQLStr = "SELECT DISTINCT il, ilce,mahkoy FROM [ilveilce$] WHERE il=" & "'" & ComboBox1.Value & "'" & "AND ilce=" & "'" & ComboBox2.Value & "'"
'************************************************'kynMHBRM dosya varsa bağlan>
If Dir(kynMHBRM) = "" Then
    MsgBox kynMHBRM & " " & Chr(10) & " Dosyası Bulunamadı.", _
        vbInformation, "Bilgi"
    Exit Sub
End If
 
    Set Kayit1 = New ADODB.Recordset
    Kayit1.Open SQLStr, Baglanti, adOpenKeyset, adLockOptimistic
'************************************************'bitti<
'************************************************'verileri çek
       Kayit1.MoveFirst:       ComboBox3.Clear
            For i = 1 To Kayit1.RecordCount
               ComboBox3.AddItem Kayit1.Fields("mahkoy")
               Kayit1.MoveNext
            Next i
       Kayit1.MoveFirst
       If Me.ComboBox1.Value <> "" Then ComboBox3.ListIndex = 0
'************************************************'bağlantıyı kes
If CBool(Kayit1.State And adStateOpen) = True Then Kayit1.Close: Set Kayit1 = Nothing
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Hocam alakan&#305;za te&#351;ekk&#252;r ederim yaln&#305;z atlad&#305;&#287;&#305;mz bir &#351;eyler var galiba
userform declarations
Private Baglanti As ADODB.Connection
Private Kayit1 As ADODB.Recordset


userfom olaylar
Kod:
Private Sub USERFORM_INITIALIZE()
Call DegiskenTani
OptionButton1.Value = 1: OptionButton3.Value = 1
Me.TextBox1.Value = tckno
Dim i As Integer, SQLStr As String
SQLStr = "SELECT DISTINCT il FROM [ilveilce$]"    'kynMHBRM dosyada ilgili sat&#305;rlarda sorgu yap

Set Baglanti = New ADODB.Connection
    If Dir(kynMHBRM) = "" Then
        MsgBox kynMHBRM & " " & Chr(10) & " Dosyas&#305; Bulunamad&#305;.", vbInformation, "Bilgi"
    Exit Sub
    End If
    Baglanti.Open _
    "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=kynMHBRM"
MsgBox kynMHBRM
[color="red"]'************************************************'ba&#287;lan>
   Set Kayit1 = New ADODB.Recordset
    Kayit1.Open SQLStr, Baglanti, adOpenKeyset, adLockOptimistic
'************************************************'bitti<[/color]'
'  '************************************************'verileri &#231;ek
'        Kayit1.MoveFirst:        ComboBox1.Clear
'            For i = 1 To Kayit1.RecordCount
'               ComboBox1.AddItem Kayit1.Fields("il")
'               Kayit1.MoveNext
'            Next i
'        Kayit1.MoveFirst:        ComboBox1.ListIndex = 27
'
'        Kayit1.MoveFirst:        ComboBox4.Clear
'            For i = 1 To Kayit1.RecordCount
'               ComboBox4.AddItem Kayit1.Fields("il")
'               Kayit1.MoveNext
'            Next i
'        Kayit1.MoveFirst:        ComboBox4.ListIndex = 27
''************************************************'bitti<
End Sub
k&#305;rm&#305;z&#305; sat&#305;rlar&#305; a&#231;&#305;nca odbc s&#252;r&#252;c&#252;s&#252; istenilen &#246;zelllikleri&#351; desteklemiyor hatas&#305; veriyor
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Kod:
Baglanti.Open _
    "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynMHBRM
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
te&#351;ekk&#252;r ederim hocam....
bende &#351;imdilik 2 kaynak dosya var (artabilir) ve her ikisininde
sql sat&#305;rda kullan&#305;lan ba&#351;l&#305;klar&#305; farkl&#305; bu durumda ben

Private Baglanti As ADODB.Connection
Private Kayit1 As ADODB.Recordset
Private Baglanti1 As ADODB.Connection
Private Kayit11 As ADODB.Recordset

&#351;eklindemi tan&#305;mlayacam de&#287;i&#351;kenleri yoksa
Private Baglanti As ADODB.Connection
Private Kayit1 As ADODB.Recordset
Private Kayit2 As ADODB.Recordset

&#351;eklindemi onda yard&#305;mc&#305; olurmusunuz birde.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
MODUL (DECLARATIONS)

Kod:
Public kynMHBRM As String
Public tckno As String
Public currentrow
Public Baglanti As ADODB.Connection
Public Kayit1   As ADODB.Recordset

USERFORM
Kod:
Private Sub USERFORM_INITIALIZE()
Call DegiskenTani
'Tan&#305;mlar
Dim i As Integer, SQLStr As String
'De&#287;i&#351;kenler
SQLStr = "SELECT DISTINCT il FROM [ilveilce$]"    'kynMHBRM dosyada ilgili sat&#305;rlarda sorgu yap
    If Dir(kynMHBRM) = "" Then
        MsgBox kynMHBRM & " " & Chr(10) & " Dosyas&#305; Bulunamad&#305;.", vbInformation, "Bilgi"
        Exit Sub
    End If
'************************************************'ba&#287;lan>
    Set Baglanti = New ADODB.Connection
    Baglanti.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynMHBRM
    Set Kayit1 = New ADODB.Recordset
    Kayit1.Open SQLStr, Baglanti, adOpenKeyset, adLockOptimistic
'************************************************'bitti<
'Ba&#287;lant&#305; sonu&#231;lar&#305;n&#305; nesnelere yaz:
        Kayit1.MoveFirst:        ComboBox1.Clear
            For i = 1 To Kayit1.RecordCount
               ComboBox1.AddItem Kayit1.Fields("il")
               Kayit1.MoveNext
            Next i
        Kayit1.MoveFirst:        ComboBox1.ListIndex = 27

        Kayit1.MoveFirst:        ComboBox4.Clear
            For i = 1 To Kayit1.RecordCount
               ComboBox4.AddItem Kayit1.Fields("il")
               Kayit1.MoveNext
            Next i
        Kayit1.MoveFirst:        ComboBox4.ListIndex = 27
''************************************************'bitti<
'******************ba&#287;lant&#305;y&#305; kes
If CBool(Kayit1.State And adStateOpen) = True Then Kayit1.Close: Set Kayit1 = Nothing
'/*/* di&#287;er nesneleri doldur
OptionButton1.Value = 1: OptionButton3.Value = 1
Me.TextBox1.Value = tckno
'Cep telefon kodlar&#305;
    arrCeptelKod = Array(505, 506, 530, 532, 533, 534, 535, 536, 537, 538, 542, 543, 544, 546, 547, 555, 556)
    For i = 0 To UBound(arrCeptelKod)
    ComboBox80.AddItem arrCeptelKod(i)
    ComboBox81.AddItem arrCeptelKod(i)
    Next
End Sub
Kod:
Private Sub USERFORM_TERMINATE()
    If CBool(Baglanti.State And adStateOpen) = True Then _
        Baglanti.Close: Set Baglanti = Nothing
End Sub
Kod:
Private Sub ComboBox1_Change()
'n&#252;fusa kay&#305;tl&#305; oldu&#287;u il
On Error Resume Next
Call DegiskenTani
'Tan&#305;mlar
Dim i As Integer, SQLStr As String
'De&#287;i&#351;kenler
SQLStr = "SELECT DISTINCT il, ilce FROM [ilveilce$] WHERE il=" & "'" & ComboBox1.Value & "'"

''************************************************'ba&#287;lan>
[COLOR="RED"][B]   Set Kayit1 = New ADODB.Recordset[/B][/COLOR]
'   Kayit1.Open SQLStr, Baglanti, adOpenKeyset, adLockOptimistic
'************************************************'bitti<
'Ba&#287;lant&#305; sonu&#231;lar&#305;n&#305; nesnelere yaz:
'        Kayit1.MoveFirst:        ComboBox2.Clear
'            For i = 1 To Kayit1.RecordCount
'               ComboBox2.AddItem Kayit1.Fields("ilce")
'               Kayit1.MoveNext
'            Next i
'        Kayit1.MoveFirst
'        If ComboBox1.ListIndex = 27 Then ComboBox2.ListIndex = 2
'        If ComboBox1.ListIndex <> 27 Then ComboBox2.ListIndex = 0
'************************************************'ba&#287;lant&#305;y&#305; kes
'If CBool(Kayit1.State And adStateOpen) = True Then Kayit1.Close: Set Kayit1 = Nothing
'/*/* di&#287;er nesneleri doldur
'Nesne Yok
End Sub
hocam combo1_chngede k&#305;rm&#305;z&#305; sat&#305;rda nesne kapal&#305; oldu&#287;undan i&#351;leme izin verilemz yaz&#305;yor 9-10 tane ba&#287;lant&#305; yap&#305;lacak combo var artabilirde bunun i&#231;in mant&#305;&#287;&#305; nalamam &#351;art rahats&#305;z etti&#287;im i&#231;in &#246;z&#252;r dilerim
 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Ba&#287;lant&#305; hep ayn&#305; dosyaya olaca&#287;&#305; i&#231;in o tektir.

&#304;stedi&#287;iniz kadar Recordset nesnesi de&#287;i&#351;keni tan&#305;mlayabilirsiniz. Kayit1,Kayit2....

Tek de&#287;i&#351;ken kullanmak istiyorsan&#305;z, Recordset nesnesini sadece kapat&#305;n (Kayit.Close).
Sadece Form kapand&#305;&#287;&#305;nda Set Kayit = Nothing yap&#305;n.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
MODUL (DECLARATIONS)

hocam combo1_chngede kırmızı satırda nesne kapalı olduğundan işleme izin verilemz yazıyor 9-10 tane bağlantı yapılacak combo var artabilirde bunun için mantığı nalamam şart rahatsız ettiğim için özür dilerim
çözümü

Kod:
Public kynMHBRM As String
Public tckno As String
Public currentrow
Public Baglanti As ADODB.Connection
'Public Kayit1   As ADODB.Recordset satırının kaldırmaktan geçiyormuş.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam derdime bir çare bitmedi arkası

şimdi hocam userform ınıtalize olayım bu

Kod:
Private Sub USERFORM_INITIALIZE()
Call DegiskenTani
'Tanımlar
Dim i As Integer, SQLStr As String
'Değişkenler
SQLStr = "SELECT DISTINCT il FROM [ilveilce$]"    'kynMHBRM dosyada ilgili satırlarda sorgu yap
    
    If Dir(kynMHBRM) = "" Then
        MsgBox kynMHBRM & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi"
        Exit Sub
    End If
    If Dir(kynTcKimNo) = "" Then
        MsgBox kynTcKimNo & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi"
        Exit Sub
    End If
        
'************************************************'bağlan>
    Set Baglanti = New ADODB.Connection
    Baglanti.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynMHBRM
    Set bagTCKMLK = New ADODB.Connection

[color="red"]
    bagTCKMLK.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynTcKimNo[/color]

    Set Kayit1 = New ADODB.Recordset
    Kayit1.Open SQLStr, Baglanti, adOpenKeyset, adLockOptimistic
'************************************************'bitti<
'Bağlantı sonuçlarını nesnelere yaz:
        Kayit1.MoveFirst:        ComboBox1.Clear
            For i = 1 To Kayit1.RecordCount
               ComboBox1.AddItem Kayit1.Fields("il")
               Kayit1.MoveNext
            Next i
        Kayit1.MoveFirst:        ComboBox1.ListIndex = 27

        Kayit1.MoveFirst:        ComboBox4.Clear
            For i = 1 To Kayit1.RecordCount
               ComboBox4.AddItem Kayit1.Fields("il")
               Kayit1.MoveNext
            Next i
        Kayit1.MoveFirst:        ComboBox4.ListIndex = 27
''************************************************'bitti<
'******************bağlantıyı kes
If CBool(Kayit1.State And adStateOpen) = True Then Kayit1.Close: Set Kayit1 = Nothing
'/*/* diğer nesneleri doldur
OptionButton1.Value = 1: OptionButton3.Value = 1
Me.TextBox1.Value = tckno
'Cep telefon kodları
    arrCeptelKod = Array(505, 506, 530, 532, 533, 534, 535, 536, 537, 538, 542, 543, 544, 546, 547, 555, 556)
    For i = 0 To UBound(arrCeptelKod)
    ComboBox80.AddItem arrCeptelKod(i)
    ComboBox81.AddItem arrCeptelKod(i)
    Next
End Sub
kırmızı satırın üzerinde kullanılanlar malum dışkaynaktan comboboxlara veri taşımak için kullanıyoruz.


bagTCKMLK.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynTcKimNo


Worksheet selection changede target.value sistemde mevcut değilse eklemek için kullanıyoruz.

command buton
Kod:
Private Sub CommandButton1_Click()
On Error Resume Next
Call DegiskenTani
Dim SQLStr, verginosu As String
'Değişkenler
'tcno = Trim(Me.TextBox1.Text)

basliklar = "TCKİMLİKNO, ADI, SOYADI, ANNEADI, BABAADI, DOGUMYERİ, DOGUMTARİHİ, "
basliklar = basliklar & "NFS_MHKY, NFS_ILCE, NFS_IL, "
basliklar = basliklar & "ADR_MUHTAR, ADR_ILCE, ADR_IL, ADR_CD_SKK, ADR_KNO, ADR_DNO "
sayfaadi = "[data$] "
sorgu = "TCKİMLİKNO = " & Trim(Me.TextBox1.Text)
    SQLStr = "SELECT " & basliklar & " FROM " & sayfaadi & " WHERE " & sorgu


'************************************************'bağlan>
If Err = 0 Then
    Set Kayit1 = New ADODB.Recordset
    Kayit1.Open SQLStr, bagTCKMLK, adOpenKeyset, adLockOptimistic
'nesneleri bağlantı yapılan dosyaya ve sorgu talep edilen satıra yaz
    If Kayit1.RecordCount = 0 Then

          Kayit1.AddNew
          Kayit1("TCKİMLİKNO") = Trim(Me.TextBox1)
          Kayit1("ADI") = Trim(Me.TextBox2)
          Kayit1("SOYADI") = Trim(Me.TextBox3)
          Kayit1("ILKSOYADI") = Trim(Me.TextBox15)
          Kayit1("BABAADI") = Trim(Me.TextBox4)
          Kayit1("ANNEADI") = Trim(Me.TextBox5)
          Kayit1("DOGUMYERİ") = Trim(Me.TextBox6)
          Kayit1("DOGUMTARİHİ") = Trim(Me.TextBox7)
          Kayit1("NFS_IL") = Trim(Me.ComboBox1)
          Kayit1("NFS_ILCE") = Trim(Me.ComboBox2)
          Kayit1("NFS_MHKY") = Trim(Me.ComboBox3)
          Kayit1("ADR_IL") = Trim(Me.ComboBox4)
          Kayit1("ADR_ILCE") = Trim(Me.ComboBox5)
          Kayit1("ADR_MUHTAR") = Trim(Me.ComboBox6)
          Kayit1.Update


          Cells(currentrow, "B").Value = Kayit1("ADI")          'bulunanları yaz
          Cells(currentrow, "C").Value = Kayit1("SOYADI")       '..   ""...
          Cells(currentrow, "D").Value = Kayit1("BABAADI")      '..   ""...
          Cells(currentrow, "E").Value = Kayit1("ANNEADI")      '..   ""...
          Cells(currentrow, "F").Value = Kayit1("DOGUMYERİ")    '..   ""...
          Cells(currentrow, "G").Value = Kayit1("DOGUMTARİHİ")  '..   ""...
          Cells(currentrow, "AA").Value = Kayit1("ADR_MUHTAR")  '..   ""...
          Cells(currentrow, "AB").Value = Kayit1("ADR_ILCE")    '..   ""...
          Range("h" & currentrow).Select                        'h sütununu seç

          MsgBox "Kayıt İşlemi Tamamlandı.", vbInformation, "Bilgi"
          Unload Me
    Else
        MsgBox "Bu Tc Numarası Kayıtlı.", vbInformation, "Bilgi"
    End If
Else
son:
    MsgBox "Bağlantı Hatası.Kontrol Ediniz", vbInformation, "Bilgi": Exit Sub
End If

If CBool(Kayit1.State And adStateOpen) = True Then Kayit1.Close: Set Kayit1 = Nothing
End Sub
ama aynı kısa yazımı Private Sub Worksheet_Change(ByVal Target As Range)
olayında kullanmak için aoutoopen a yzınca variable set diyor. ne yapmalıyım.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
bu gece trafik yo&#287;un sorum altlara d&#252;&#351;mesin 13. mesajdaki sorunum &#246;zerle &#351;udur.

bagTCKMLK.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynTcKimNo

yukar&#305;daki ba&#287;lant&#305; &#231;al&#305;&#351;ma kitab&#305; a&#231;&#305;ld&#305;&#287;&#305; anda a&#231;&#305;lacak, kapan&#305;rken kapanacak auto open a yazd&#305;m hata verdi.

Baglanti.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynMHBRM

bu ise userformal a&#231;&#305;lacak onunla kapanacak burada sorun yok
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Bu durumda de&#287;i&#351;kenlerinizi bas modulde public olarak tan&#305;mlay&#305;n.

Ayr&#305;ca Excel Dersanesindeki de&#287;i&#351;kenler konusunu -de&#287;i&#351;ken &#246;mr&#252;- incelemenizi &#246;neririm.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
evet modulde public olarak tan&#305;ml&#305; zaten 12.mesajda bunu belitrtmi&#351;tim. ayr&#305;ca yeni bagtckimlik as adobb connectionuda tan&#305;mlad&#305;m.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
anemos hocam hatal&#305; olan kod nedir.?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
17 mesaj g&#252;nceldir.
 
Üst